[apkverify] Get message digest directly from signature algorithm
This will add additional support to the following algorithms
when computing the apk digest:
- VerityRsaPkcs1V15WithSha256
- VerityEcdsaWithSha256
Bug: 197052981
Test: libapkverify.integration_test
Change-Id: I6dda896cf84a53b4a2bbf57e80d79506d42eba35
diff --git a/libs/apkverify/src/sigutil.rs b/libs/apkverify/src/sigutil.rs
index 98edf49..3832c09 100644
--- a/libs/apkverify/src/sigutil.rs
+++ b/libs/apkverify/src/sigutil.rs
@@ -99,7 +99,7 @@
// TODO(b/246254355): Passes the enum SignatureAlgorithmID directly to this method.
let signature_algorithm_id = SignatureAlgorithmID::from_u32(signature_algorithm_id)
.ok_or_else(|| anyhow!("Unsupported algorithm ID: {}", signature_algorithm_id))?;
- let digester = Digester::new(signature_algorithm_id)?;
+ let digester = Digester { message_digest: signature_algorithm_id.new_message_digest() };
let mut digests_of_chunks = BytesMut::new();
let mut chunk_count = 0u32;
@@ -172,12 +172,6 @@
const CHUNK_HEADER_MID: &[u8] = &[0xa5];
impl Digester {
- fn new(signature_algorithm_id: SignatureAlgorithmID) -> Result<Digester> {
- let message_digest =
- signature_algorithm_id.to_content_digest_algorithm().new_message_digest()?;
- Ok(Digester { message_digest })
- }
-
// v2/v3 digests are computed after prepending "header" byte and "size" info.
fn digest(&self, data: &[u8], header: &[u8], size: u32) -> Result<DigestBytes> {
let mut hasher = Hasher::new(self.message_digest)?;