Check provisioning method in LoadProvisioningCast v18 dynamic adapter

Test:GTEST_FILTER="*TestSignaturePKCS1*" ./jenkins/run_dynamic_oemcrypto_v18
Bug: 317900212

Change-Id: I9829cf59b13320d69fddadaaba0a013e241f0b16
This commit is contained in:
Matt Feddersen
2024-01-09 15:52:46 -08:00
committed by Robert Shih
parent fb380d9a0e
commit 4626fa18ce

View File

@@ -2529,9 +2529,19 @@ extern "C" OEMCryptoResult OEMCrypto_LoadProvisioningCast(
"AUTHENTICATION", provision_request, provision_request_length, 0x200);
const std::vector<uint8_t> enc_context = MakeContext(
"ENCRYPTION", provision_request, provision_request_length, 0x80);
const OEMCryptoResult result = pair.fcn->DeriveKeysFromSessionKey_V18(
pair.session, derivation_key, derivation_key_length, mac_context.data(),
mac_context.size(), enc_context.data(), enc_context.size());
const OEMCrypto_ProvisioningMethod provisioning_method =
pair.fcn->GetProvisioningMethod != nullptr
? pair.fcn->GetProvisioningMethod()
: OEMCrypto_Keybox;
const OEMCryptoResult result =
(provisioning_method == OEMCrypto_BootCertificateChain)
? pair.fcn->DeriveKeysFromSessionKey_V18(
pair.session, derivation_key, derivation_key_length,
mac_context.data(), mac_context.size(), enc_context.data(),
enc_context.size())
: pair.fcn->GenerateDerivedKeys_V18(
pair.session, mac_context.data(), mac_context.size(),
enc_context.data(), enc_context.size());
if (result != OEMCrypto_SUCCESS) return result;
return pair.fcn->LoadProvisioning_V18(