Merge "Handling `UNIMPLEMENTED` error code from deleteKey API in Keystore VTS Tests." into main
diff --git a/keystore2/test_utils/lib.rs b/keystore2/test_utils/lib.rs
index 825657f..8e74f92 100644
--- a/keystore2/test_utils/lib.rs
+++ b/keystore2/test_utils/lib.rs
@@ -21,7 +21,7 @@
use android_system_keystore2::aidl::android::system::keystore2::{
IKeystoreService::IKeystoreService,
- IKeystoreSecurityLevel::IKeystoreSecurityLevel,
+ IKeystoreSecurityLevel::IKeystoreSecurityLevel, KeyDescriptor::KeyDescriptor,
};
use android_hardware_security_keymint::aidl::android::hardware::security::keymint::{
ErrorCode::ErrorCode, IKeyMintDevice::IKeyMintDevice, SecurityLevel::SecurityLevel,
@@ -193,4 +193,18 @@
0
}
}
+
+ /// Delete a key.
+ pub fn delete_key(&self, key: &KeyDescriptor) -> binder::Result<()> {
+ match self.binder.deleteKey(key) {
+ Ok(()) => Ok(()),
+ Err(s)
+ if s.exception_code() == binder::ExceptionCode::SERVICE_SPECIFIC
+ && s.service_specific_error() == ErrorCode::UNIMPLEMENTED.0 =>
+ {
+ Ok(())
+ }
+ Err(e) => Err(e),
+ }
+ }
}
diff --git a/keystore2/tests/keystore2_client_delete_key_tests.rs b/keystore2/tests/keystore2_client_delete_key_tests.rs
index a0fb9c2..13f8eef 100644
--- a/keystore2/tests/keystore2_client_delete_key_tests.rs
+++ b/keystore2/tests/keystore2_client_delete_key_tests.rs
@@ -100,7 +100,7 @@
)
.unwrap();
- let result = sl.binder.deleteKey(&key_metadata.key);
+ let result = sl.delete_key(&key_metadata.key);
assert!(result.is_ok());
}
@@ -110,7 +110,7 @@
fn keystore2_delete_key_fails_with_missing_key_blob() {
let sl = SecLevel::tee();
- let result = key_generations::map_ks_error(sl.binder.deleteKey(&KeyDescriptor {
+ let result = key_generations::map_ks_error(sl.delete_key(&KeyDescriptor {
domain: Domain::BLOB,
nspace: key_generations::SELINUX_SHELL_NAMESPACE,
alias: None,
@@ -132,7 +132,7 @@
key_generations::generate_ec_p256_signing_key(&sl, Domain::APP, -1, Some(alias), None)
.unwrap();
- let result = key_generations::map_ks_error(sl.binder.deleteKey(&key_metadata.key));
+ let result = key_generations::map_ks_error(sl.delete_key(&key_metadata.key));
assert!(result.is_err());
assert_eq!(Error::Km(ErrorCode::INVALID_ARGUMENT), result.unwrap_err());
}
diff --git a/keystore2/tests/keystore2_client_ec_key_tests.rs b/keystore2/tests/keystore2_client_ec_key_tests.rs
index 526a339..17a88e7 100644
--- a/keystore2/tests/keystore2_client_ec_key_tests.rs
+++ b/keystore2/tests/keystore2_client_ec_key_tests.rs
@@ -211,7 +211,7 @@
assert_eq!(Error::Rc(ResponseCode::INVALID_ARGUMENT), result.unwrap_err());
// Delete the generated key blob.
- sl.binder.deleteKey(&key_metadata.key).unwrap();
+ sl.delete_key(&key_metadata.key).unwrap();
}
/// Try to generate a key with invalid Domain. `INVALID_ARGUMENT` error response is expected.
@@ -514,5 +514,5 @@
);
// Delete the generated key blob.
- sl.binder.deleteKey(&key_metadata.key).unwrap();
+ sl.delete_key(&key_metadata.key).unwrap();
}