Merge "Updated the logic to determine the VSR API level for device ID attestation tests." into main
This commit is contained in:
commit
15a04c4d1f
1 changed files with 32 additions and 12 deletions
|
@ -95,14 +95,11 @@ pub fn skip_device_id_attest_tests() -> bool {
|
|||
// only system update and not vendor update, newly added attestation properties
|
||||
// (ro.product.*_for_attestation) reading logic would not be available for such devices
|
||||
// hence skipping this test for such scenario.
|
||||
let api_level = std::str::from_utf8(&get_system_prop("ro.board.first_api_level"))
|
||||
.unwrap()
|
||||
.parse::<i32>()
|
||||
.unwrap();
|
||||
// This file is only present on GSI builds.
|
||||
let path_buf = PathBuf::from("/system/system_ext/etc/init/init.gsi.rc");
|
||||
|
||||
api_level < 34 && path_buf.as_path().is_file()
|
||||
// This file is only present on GSI builds.
|
||||
let gsi_marker = PathBuf::from("/system/system_ext/etc/init/init.gsi.rc");
|
||||
|
||||
get_vsr_api_level() < 34 && gsi_marker.as_path().is_file()
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
|
@ -514,15 +511,38 @@ pub fn get_system_prop(name: &str) -> Vec<u8> {
|
|||
}
|
||||
}
|
||||
|
||||
fn get_integer_system_prop(name: &str) -> Option<i32> {
|
||||
let val = get_system_prop(name);
|
||||
if val.is_empty() {
|
||||
return None;
|
||||
}
|
||||
let val = std::str::from_utf8(&val).ok()?;
|
||||
val.parse::<i32>().ok()
|
||||
}
|
||||
|
||||
pub fn get_vsr_api_level() -> i32 {
|
||||
if let Some(api_level) = get_integer_system_prop("ro.vendor.api_level") {
|
||||
return api_level;
|
||||
}
|
||||
|
||||
let vendor_api_level = get_integer_system_prop("ro.board.api_level")
|
||||
.or_else(|| get_integer_system_prop("ro.board.first_api_level"));
|
||||
let product_api_level = get_integer_system_prop("ro.product.first_api_level")
|
||||
.or_else(|| get_integer_system_prop("ro.build.version.sdk"));
|
||||
|
||||
match (vendor_api_level, product_api_level) {
|
||||
(Some(v), Some(p)) => std::cmp::min(v, p),
|
||||
(Some(v), None) => v,
|
||||
(None, Some(p)) => p,
|
||||
_ => panic!("Could not determine VSR API level"),
|
||||
}
|
||||
}
|
||||
|
||||
/// Determines whether the SECOND-IMEI can be used as device attest-id.
|
||||
pub fn is_second_imei_id_attestation_required(
|
||||
keystore2: &binder::Strong<dyn IKeystoreService>,
|
||||
) -> bool {
|
||||
let api_level = std::str::from_utf8(&get_system_prop("ro.vendor.api_level"))
|
||||
.unwrap()
|
||||
.parse::<i32>()
|
||||
.unwrap();
|
||||
keystore2.getInterfaceVersion().unwrap() >= 3 && api_level > 33
|
||||
keystore2.getInterfaceVersion().unwrap() >= 3 && get_vsr_api_level() > 33
|
||||
}
|
||||
|
||||
/// Run a service command and collect the output.
|
||||
|
|
Loading…
Reference in a new issue