diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-25 01:11:09 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-25 01:11:09 +0000 |
commit | a93fddbbbbbaa4ced36fcd46c701411d08a2f743 (patch) | |
tree | c1929818944d15845ba195d8f15e9c78ac220b6f | |
parent | 28de854249a0bcc1565e9810efa5236d663e61e0 (diff) | |
parent | 4d20aba79cc1c2b37a9e69f6208eab76a222071b (diff) | |
download | keymaster-a93fddbbbbbaa4ced36fcd46c701411d08a2f743.tar.gz |
Snap for 7490979 from 4d20aba79cc1c2b37a9e69f6208eab76a222071b to sc-release
Change-Id: I4c691fd7c54a5ff917145f5808cf295ed1602f3e
-rw-r--r-- | android_keymaster/android_keymaster.cpp | 8 | ||||
-rw-r--r-- | contexts/pure_soft_keymaster_context.cpp | 5 |
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() {} |