diff --git a/libwvdrmengine/cdm/core/include/oemcrypto_adapter.h b/libwvdrmengine/cdm/core/include/oemcrypto_adapter.h index 1f208aaf..6df67f0c 100644 --- a/libwvdrmengine/cdm/core/include/oemcrypto_adapter.h +++ b/libwvdrmengine/cdm/core/include/oemcrypto_adapter.h @@ -38,7 +38,9 @@ uint8_t OEMCrypto_Security_Patch_Level(SecurityLevel level); OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod( SecurityLevel level); uint32_t OEMCrypto_SupportedCertificates(SecurityLevel level); -OEMCryptoResult OEMCrypto_CreateUsageTableHeader(SecurityLevel level); +OEMCryptoResult OEMCrypto_CreateUsageTableHeader(SecurityLevel level, + uint8_t* header_buffer, + size_t* header_buffer_length); OEMCryptoResult OEMCrypto_LoadUsageTableHeader(SecurityLevel level, const uint8_t* buffer, size_t buffer_length); diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index 43fca619..abaa2cbc 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -214,7 +214,8 @@ typedef OEMCryptoResult (*L1_GetCurrentSRMVersion_t)(uint16_t* version); typedef OEMCryptoResult (*L1_LoadSRM_t)(const uint8_t* buffer, size_t buffer_length); typedef OEMCryptoResult (*L1_RemoveSRM_t)(); -typedef OEMCryptoResult (*L1_CreateUsageTableHeader_t)(); +typedef OEMCryptoResult (*L1_CreateUsageTableHeader_t)(uint8_t* header_buffer, + size_t* header_buffer_length); typedef OEMCryptoResult (*L1_LoadUsageTableHeader_t)(const uint8_t* buffer, size_t buffer_length); typedef OEMCryptoResult (*L1_CreateNewUsageEntry_t)(OEMCrypto_SESSION session, @@ -648,7 +649,8 @@ class Adapter { level3_.GetCurrentSRMVersion = Level3_GetCurrentSRMVersion; level3_.LoadSRM = Level3_LoadSRM; level3_.RemoveSRM = Level3_RemoveSRM; - level3_.CreateUsageTableHeader = Level3_CreateUsageTableHeader; + // TODO(fredgc): add stub. + // level3_.CreateUsageTableHeader = Level3_CreateUsageTableHeader; level3_.LoadUsageTableHeader = Level3_LoadUsageTableHeader; level3_.CreateNewUsageEntry = Level3_CreateNewUsageEntry; level3_.LoadUsageEntry = Level3_LoadUsageEntry; @@ -895,13 +897,15 @@ uint32_t OEMCrypto_SupportedCertificates(SecurityLevel level) { return fcn->SupportedCertificates(); } -OEMCryptoResult OEMCrypto_CreateUsageTableHeader(SecurityLevel level) { +OEMCryptoResult OEMCrypto_CreateUsageTableHeader(SecurityLevel level, + uint8_t* header_buffer, + size_t* header_buffer_length) { if (!kAdapter) return OEMCrypto_ERROR_UNKNOWN_FAILURE; const FunctionPointers* fcn = kAdapter->get(level); if (!fcn) return OEMCrypto_ERROR_INVALID_SESSION; - if (fcn->version < 9) return OEMCrypto_ERROR_NOT_IMPLEMENTED; - if (fcn->version < 13) return fcn->DeleteOldUsageTable(); - return fcn->CreateUsageTableHeader(); + if (fcn->version < 13) return OEMCrypto_ERROR_NOT_IMPLEMENTED; + if (!fcn->CreateUsageTableHeader) return OEMCrypto_ERROR_NOT_IMPLEMENTED; + return fcn->CreateUsageTableHeader(header_buffer, header_buffer_length); } OEMCryptoResult OEMCrypto_LoadUsageTableHeader(SecurityLevel level, @@ -1544,8 +1548,10 @@ OEMCryptoResult OEMCrypto_RemoveSRM() { } extern "C" -OEMCryptoResult OEMCrypto_CreateUsageTableHeader() { - return OEMCrypto_CreateUsageTableHeader(kLevelDefault); +OEMCryptoResult OEMCrypto_CreateUsageTableHeader(uint8_t* header_buffer, + size_t* header_buffer_length) { + return OEMCrypto_CreateUsageTableHeader(kLevelDefault, header_buffer, + header_buffer_length); } extern "C" diff --git a/libwvdrmengine/oemcrypto/include/OEMCryptoCENC.h b/libwvdrmengine/oemcrypto/include/OEMCryptoCENC.h index 0df48229..112006d2 100644 --- a/libwvdrmengine/oemcrypto/include/OEMCryptoCENC.h +++ b/libwvdrmengine/oemcrypto/include/OEMCryptoCENC.h @@ -75,6 +75,8 @@ typedef enum OEMCryptoResult { OEMCrypto_ERROR_WRONG_PST = 44, OEMCrypto_ERROR_WRONG_KEYS = 45, OEMCrypto_ERROR_MISSING_MASTER = 46, + OEMCrypto_ERROR_LICENSE_INACTIVE = 47, + OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE = 48, } OEMCryptoResult; /* @@ -379,9 +381,6 @@ typedef enum OEMCrypto_ProvisioningMethod { #define OEMCrypto_LoadSRM _oecc55 #define OEMCrypto_LoadKeys _oecc56 #define OEMCrypto_RemoveSRM _oecc57 -#define OEMCrypto_SupportsDecryptHash _oecc58 -#define OEMCrypto_SetDecryptHash _oecc59 -#define OEMCrypto_VerifyDecryptHash _oecc60 #define OEMCrypto_CreateUsageTableHeader _oecc61 #define OEMCrypto_LoadUsageTableHeader _oecc62 #define OEMCrypto_CreateNewUsageEntry _oecc63 @@ -2870,7 +2869,8 @@ OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer, OEMCryptoResult OEMCrypto_RemoveSRM(); /* TODO(fredgc): copy text from http://go/wvgerrit/22887 */ -OEMCryptoResult OEMCrypto_CreateUsageTableHeader(); +OEMCryptoResult OEMCrypto_CreateUsageTableHeader(uint8_t* header_buffer, + size_t* header_buffer_length); /* TODO(fredgc): copy text from http://go/wvgerrit/22887 */ OEMCryptoResult OEMCrypto_LoadUsageTableHeader(const uint8_t* buffer, diff --git a/libwvdrmengine/oemcrypto/include/level3.h b/libwvdrmengine/oemcrypto/include/level3.h index 8dc57801..49154266 100644 --- a/libwvdrmengine/oemcrypto/include/level3.h +++ b/libwvdrmengine/oemcrypto/include/level3.h @@ -68,9 +68,6 @@ namespace wvoec3 { #define Level3_LoadSRM _lcc55 #define Level3_LoadKeys _lcc56 #define Level3_RemoveSRM _lcc57 -#define Level3_SupportsDecryptHash _lcc58 -#define Level3_SetDecryptHash _lcc59 -#define Level3_VerifyDecryptHash _lcc60 #define Level3_CreateUsageTableHeader _lcc61 #define Level3_LoadUsageTableHeader _lcc62 #define Level3_CreateNewUsageEntry _lcc63 @@ -254,6 +251,7 @@ OEMCryptoResult Level3_SetDecryptHash(OEMCrypto_SESSION session, size_t hash_length); OEMCryptoResult Level3_VerifyDecryptHash(OEMCrypto_SESSION session, uint64_t* failure_data); +// TODO(fredgc): add stub for level3. OEMCryptoResult Level3_CreateUsageTableHeader(); OEMCryptoResult Level3_LoadUsageTableHeader(const uint8_t* buffer, size_t buffer_length); diff --git a/libwvdrmengine/oemcrypto/mock/src/oemcrypto_mock.cpp b/libwvdrmengine/oemcrypto/mock/src/oemcrypto_mock.cpp index d4c82d56..dd91dbdd 100644 --- a/libwvdrmengine/oemcrypto/mock/src/oemcrypto_mock.cpp +++ b/libwvdrmengine/oemcrypto/mock/src/oemcrypto_mock.cpp @@ -1840,7 +1840,8 @@ OEMCryptoResult OEMCrypto_RemoveSRM() { } extern "C" -OEMCryptoResult OEMCrypto_CreateUsageTableHeader() { +OEMCryptoResult OEMCrypto_CreateUsageTableHeader(uint8_t* header_buffer, + size_t* header_buffer_length) { return OEMCrypto_ERROR_NOT_IMPLEMENTED; }