summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-06-25 01:11:09 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-06-25 01:11:09 +0000
commita93fddbbbbbaa4ced36fcd46c701411d08a2f743 (patch)
treec1929818944d15845ba195d8f15e9c78ac220b6f
parent28de854249a0bcc1565e9810efa5236d663e61e0 (diff)
parent4d20aba79cc1c2b37a9e69f6208eab76a222071b (diff)
downloadkeymaster-a93fddbbbbbaa4ced36fcd46c701411d08a2f743.tar.gz
Snap for 7490979 from 4d20aba79cc1c2b37a9e69f6208eab76a222071b to sc-release
Change-Id: I4c691fd7c54a5ff917145f5808cf295ed1602f3e
-rw-r--r--android_keymaster/android_keymaster.cpp8
-rw-r--r--contexts/pure_soft_keymaster_context.cpp5
2 files changed, 11 insertions, 2 deletions
diff --git a/android_keymaster/android_keymaster.cpp b/android_keymaster/android_keymaster.cpp
index ea8b7ff..ab3b9d1 100644
--- a/android_keymaster/android_keymaster.cpp
+++ b/android_keymaster/android_keymaster.cpp
@@ -424,7 +424,13 @@ void AndroidKeymaster::GenerateCsr(const GenerateCsrRequest& request,
std::tie(devicePrivKey, bcc) = rem_prov_ctx->GenerateBcc();
} else {
devicePrivKey = rem_prov_ctx->devicePrivKey_;
- bcc = rem_prov_ctx->bcc_.clone();
+ auto clone = rem_prov_ctx->bcc_.clone();
+ if (!clone->asArray()) {
+ LOG_E("The BCC is not an array.", 0);
+ response->error = static_cast<keymaster_error_t>(kStatusFailed);
+ return;
+ }
+ bcc = std::move(*clone->asArray());
}
std::unique_ptr<cppbor::Map> device_info_map = rem_prov_ctx->CreateDeviceInfo();
std::vector<uint8_t> device_info = device_info_map->encode();
diff --git a/contexts/pure_soft_keymaster_context.cpp b/contexts/pure_soft_keymaster_context.cpp
index 18f4c93..c04475e 100644
--- a/contexts/pure_soft_keymaster_context.cpp
+++ b/contexts/pure_soft_keymaster_context.cpp
@@ -66,7 +66,10 @@ PureSoftKeymasterContext::PureSoftKeymasterContext(KmVersion version,
if (security_level != KM_SECURITY_LEVEL_SOFTWARE) {
pure_soft_secure_key_storage_ = std::make_unique<PureSoftSecureKeyStorage>(64);
}
- pure_soft_remote_provisioning_context_ = std::make_unique<PureSoftRemoteProvisioningContext>();
+ if (version >= KmVersion::KEYMINT_1) {
+ pure_soft_remote_provisioning_context_ =
+ std::make_unique<PureSoftRemoteProvisioningContext>();
+ }
}
PureSoftKeymasterContext::~PureSoftKeymasterContext() {}