[apkverify] Introduce enums for signature and content digest algorithms
Test: atest libapkverify.test
Bug: 246254355
Change-Id: I18adcb8116341f52a8ca6a7489c589a0d2096c2e
diff --git a/libs/apkverify/src/v3.rs b/libs/apkverify/src/v3.rs
index d429ba1..c86696f 100644
--- a/libs/apkverify/src/v3.rs
+++ b/libs/apkverify/src/v3.rs
@@ -20,6 +20,7 @@
use anyhow::{anyhow, bail, ensure, Context, Result};
use bytes::Bytes;
+use num_traits::FromPrimitive;
use openssl::hash::MessageDigest;
use openssl::pkey::{self, PKey};
use openssl::rsa::Padding;
@@ -30,6 +31,7 @@
use std::ops::Range;
use std::path::Path;
+use crate::algorithms::SignatureAlgorithmID;
use crate::bytes_ext::{BytesExt, LengthPrefixed, ReadFromBytes};
use crate::sigutil::*;
@@ -71,6 +73,7 @@
#[derive(Debug)]
struct Signature {
+ /// TODO(b/246254355): Change the type of signature_algorithm_id to SignatureAlgorithmID
signature_algorithm_id: u32,
signature: LengthPrefixed<Bytes>,
}
@@ -143,8 +146,8 @@
Ok(self
.signatures
.iter()
- .filter(|sig| is_supported_signature_algorithm(sig.signature_algorithm_id))
- .max_by_key(|sig| get_signature_algorithm_rank(sig.signature_algorithm_id).unwrap())
+ .filter(|sig| SignatureAlgorithmID::from_u32(sig.signature_algorithm_id).is_some())
+ .max_by_key(|sig| SignatureAlgorithmID::from_u32(sig.signature_algorithm_id).unwrap())
.ok_or_else(|| anyhow!("No supported signatures found"))?)
}