Skip to content

Change APK buffer from &mut [u8] to &[u8]#107

Open
dairlair wants to merge 2 commits into
google:mainfrom
dairlair:main
Open

Change APK buffer from &mut [u8] to &[u8]#107
dairlair wants to merge 2 commits into
google:mainfrom
dairlair:main

Conversation

@dairlair
Copy link
Copy Markdown

This change makes sign_apk_buffer API cleaner and safer by removing the need for &mut [u8] input. The signing pipeline now operates on immutable input data (&[u8]), improving API ergonomics and eliminating misleading mutability requirements.

In usage under production load, consumers of the library were required to create a full mutable copy of the entire APK buffer in order to satisfy the previous &mut [u8] API constraint. Now it is not needed.

It also changes compute_first_level_hashes function.

We now only allocate memory for Chunk 4 (EOCD section of the ZIP), which is the only smallest part that requires modification. All other ZIP chunks are processed as zero-copy slices of the input buffer.

The input buffer is not mutated, so requiring &mut was misleading.
Using an immutable slice better reflects actual behavior, simplifies
the API, and avoids unnecessary restrictions for callers.
Change APK buffer from &mut [u8] to &[u8]
@google-cla
Copy link
Copy Markdown

google-cla Bot commented Apr 17, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@dairlair
Copy link
Copy Markdown
Author

@adamsoutar one small change here: the function signature was updated from

pub fn sign_apk_buffer(apk_buf: &mut [u8], keys: &Keys) -> Result<Vec>

to

pub fn sign_apk_buffer(apk_buf: &[u8], keys: &Keys) -> Result<Vec>

Since the buffer is not mutated, using an immutable slice is more idiomatic in Rust and improves safety by preventing unintended modifications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant