OEMCrypto Mock SRM functionality
Merge from Widevine repo of http://go/wvgerrit/24730 This CL adds SRM functionality to the modable version of oemcrypto mock. This can be used for end-to-end testing. b/28955873 b/37353534 Change-Id: I2c6f513495ccfd42f7a3d7a3449db6f810563c04
This commit is contained in:
@@ -297,6 +297,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
dump_hex("enc_mac_key_iv", enc_mac_key_iv, wvcdm::KEY_IV_SIZE);
|
||||
dump_hex("enc_mac_keys", enc_mac_keys, 2 * wvcdm::MAC_KEY_SIZE);
|
||||
dump_hex("pst", pst, pst_length);
|
||||
dump_hex("srm_requirement", srm_requirement, wvcdm::KEY_CONTROL_SIZE);
|
||||
for (size_t i = 0; i < num_keys; i++) {
|
||||
LOGV("key_array[%zu].key_id_length=%zu;\n", i,
|
||||
key_array[i].key_id_length);
|
||||
@@ -346,7 +347,9 @@ extern "C" OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
2 * wvcdm::MAC_KEY_SIZE, true) ||
|
||||
!RangeCheck(message, message_length, enc_mac_key_iv, wvcdm::KEY_IV_SIZE,
|
||||
true) ||
|
||||
!RangeCheck(message, message_length, pst, pst_length, true)) {
|
||||
!RangeCheck(message, message_length, pst, pst_length, true) ||
|
||||
!RangeCheck(message, message_length, srm_requirement,
|
||||
wvcdm::SRM_REQUIREMENT_SIZE, true)) {
|
||||
LOGE("[OEMCrypto_LoadKeys(): OEMCrypto_ERROR_INVALID_CONTEXT - range "
|
||||
"check.]");
|
||||
return OEMCrypto_ERROR_INVALID_CONTEXT;
|
||||
@@ -370,7 +373,8 @@ extern "C" OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
}
|
||||
return session_ctx->LoadKeys(message, message_length, signature,
|
||||
signature_length, enc_mac_key_iv, enc_mac_keys,
|
||||
num_keys, key_array, pst, pst_length);
|
||||
num_keys, key_array, pst, pst_length,
|
||||
srm_requirement);
|
||||
}
|
||||
|
||||
extern "C" OEMCryptoResult OEMCrypto_RefreshKeys(
|
||||
@@ -1625,19 +1629,40 @@ extern "C" OEMCryptoResult OEMCrypto_DeleteOldUsageTable() {
|
||||
return crypto_engine->usage_table().DeleteOldUsageTable();
|
||||
}
|
||||
|
||||
extern "C" bool OEMCrypto_IsSRMUpdateSupported() { return false; }
|
||||
extern "C" bool OEMCrypto_IsSRMUpdateSupported() {
|
||||
if (!crypto_engine) {
|
||||
LOGE("OEMCrypto_IsSRMUpdateSupported: OEMCrypto Not Initialized.");
|
||||
return false;
|
||||
}
|
||||
return crypto_engine->srm_update_supported();
|
||||
}
|
||||
|
||||
extern "C" OEMCryptoResult OEMCrypto_GetCurrentSRMVersion(uint16_t* version) {
|
||||
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
||||
if (!crypto_engine) {
|
||||
LOGE("OEMCrypto_GetCurrentSRMVersion: OEMCrypto Not Initialized.");
|
||||
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
||||
}
|
||||
if (crypto_engine->config_local_display_only()) {
|
||||
return OEMCrypto_LOCAL_DISPLAY_ONLY;
|
||||
}
|
||||
return crypto_engine->current_srm_version(version);
|
||||
}
|
||||
|
||||
extern "C" OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer,
|
||||
size_t buffer_length) {
|
||||
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
||||
if (!crypto_engine) {
|
||||
LOGE("OEMCrypto_LoadSRM: OEMCrypto Not Initialized.");
|
||||
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
||||
}
|
||||
return crypto_engine->load_srm(buffer, buffer_length);
|
||||
}
|
||||
|
||||
extern "C" OEMCryptoResult OEMCrypto_RemoveSRM() {
|
||||
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
||||
if (!crypto_engine) {
|
||||
LOGE("OEMCrypto_RemoveSRM: OEMCrypto Not Initialized.");
|
||||
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
||||
}
|
||||
return crypto_engine->remove_srm();
|
||||
}
|
||||
|
||||
extern "C" OEMCryptoResult OEMCrypto_CreateUsageTableHeader(
|
||||
|
||||
Reference in New Issue
Block a user