OEMCrypto unit tests for license release

Bug: 295956275
Change-Id: I3c8fc5fcadeae051cc734a64378e473492437c34
This commit is contained in:
Vicky Min
2023-12-05 01:36:58 +00:00
committed by Robert Shih
parent f94a8dfac9
commit d5157c536d
7 changed files with 233 additions and 21 deletions

View File

@@ -105,6 +105,12 @@ typedef OEMCryptoResult (*L1_LoadRenewal_t)(OEMCrypto_SESSION session,
size_t core_message_length,
const uint8_t* signature,
size_t signature_length);
typedef OEMCryptoResult (*L1_LoadRelease_t)(OEMCrypto_SESSION session,
const uint8_t* message,
size_t message_length,
size_t core_message_length,
const uint8_t* signature,
size_t signature_length);
typedef OEMCryptoResult (*L1_QueryKeyControl_t)(
OEMCrypto_SESSION session, const uint8_t* key_id, size_t key_id_length,
uint8_t* key_control_block, size_t* key_control_block_length);
@@ -365,6 +371,7 @@ struct FunctionPointers {
L1_LoadEntitledContentKeys_t LoadEntitledContentKeys;
L1_LoadEntitledContentKeys_V16_t LoadEntitledContentKeys_V16;
L1_LoadRenewal_t LoadRenewal;
L1_LoadRelease_t LoadRelease;
L1_QueryKeyControl_t QueryKeyControl;
L1_SelectKey_t SelectKey;
L1_DecryptCENC_V17_t DecryptCENC_V17;
@@ -1078,6 +1085,7 @@ class Adapter {
LOOKUP_ALL(18, EnterTestMode, OEMCrypto_EnterTestMode);
LOOKUP_ALL(19, SetDecryptHash, OEMCrypto_SetDecryptHash);
LOOKUP_ALL(19, LoadRelease, OEMCrypto_LoadRelease);
// clang-format on
@@ -1119,6 +1127,7 @@ class Adapter {
level3_.LoadLicense_V18 = Level3_LoadLicense;
level3_.LoadEntitledContentKeys = Level3_LoadEntitledContentKeys;
level3_.LoadRenewal = Level3_LoadRenewal;
level3_.LoadRelease = Leve3_LoadRelease;
level3_.QueryKeyControl = Level3_QueryKeyControl;
level3_.SelectKey = Level3_SelectKey;
level3_.DecryptCENC_V17 = Level3_DecryptCENC_V17;
@@ -2268,6 +2277,23 @@ extern "C" OEMCryptoResult OEMCrypto_LoadRenewal(OEMCrypto_SESSION session,
signature_length);
}
extern "C" OEMCryptoResult OEMCrypto_LoadRelease(OEMCrypto_SESSION session,
const uint8_t* message,
size_t message_length,
size_t core_message_length,
const uint8_t* signature,
size_t signature_length) {
if (!gAdapter) return OEMCrypto_ERROR_UNKNOWN_FAILURE;
LevelSession pair = gAdapter->GetSession(session);
if (!pair.fcn) return OEMCrypto_ERROR_INVALID_SESSION;
if (pair.fcn->LoadRelease == nullptr) {
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
return pair.fcn->LoadRelease(pair.session, message, message_length,
core_message_length, signature,
signature_length);
}
extern "C" OEMCryptoResult OEMCrypto_QueryKeyControl(
OEMCrypto_SESSION session, const uint8_t* key_id, size_t key_id_length,
uint8_t* key_control_block, size_t* key_control_block_length) {