Add New Parameters to CreateUsageTableHeader

Merge from Widevine repo of http://go/wvgerrit/23166

This changes OEMCrypto_CreateUsageTableHeader so that the new header
is passed back in a buffer to the cdm layer.

I hacked out the haystack call and just stubbed out the mock call.
This should still build and run with previous liblevel3.a builds.

I also removed from the header some function names that are no longer
part of OEMCrypto v13.

bug:31458046

Change-Id: Ie490c482fe2457076f9026369f4b4b9491a4eb81
This commit is contained in:
Fred Gylys-Colwell
2017-01-23 20:39:46 -08:00
parent de6d208380
commit 407c06a8da
5 changed files with 24 additions and 17 deletions

View File

@@ -38,7 +38,9 @@ uint8_t OEMCrypto_Security_Patch_Level(SecurityLevel level);
OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod( OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod(
SecurityLevel level); SecurityLevel level);
uint32_t OEMCrypto_SupportedCertificates(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, OEMCryptoResult OEMCrypto_LoadUsageTableHeader(SecurityLevel level,
const uint8_t* buffer, const uint8_t* buffer,
size_t buffer_length); size_t buffer_length);

View File

@@ -214,7 +214,8 @@ typedef OEMCryptoResult (*L1_GetCurrentSRMVersion_t)(uint16_t* version);
typedef OEMCryptoResult (*L1_LoadSRM_t)(const uint8_t* buffer, typedef OEMCryptoResult (*L1_LoadSRM_t)(const uint8_t* buffer,
size_t buffer_length); size_t buffer_length);
typedef OEMCryptoResult (*L1_RemoveSRM_t)(); 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, typedef OEMCryptoResult (*L1_LoadUsageTableHeader_t)(const uint8_t* buffer,
size_t buffer_length); size_t buffer_length);
typedef OEMCryptoResult (*L1_CreateNewUsageEntry_t)(OEMCrypto_SESSION session, typedef OEMCryptoResult (*L1_CreateNewUsageEntry_t)(OEMCrypto_SESSION session,
@@ -648,7 +649,8 @@ class Adapter {
level3_.GetCurrentSRMVersion = Level3_GetCurrentSRMVersion; level3_.GetCurrentSRMVersion = Level3_GetCurrentSRMVersion;
level3_.LoadSRM = Level3_LoadSRM; level3_.LoadSRM = Level3_LoadSRM;
level3_.RemoveSRM = Level3_RemoveSRM; level3_.RemoveSRM = Level3_RemoveSRM;
level3_.CreateUsageTableHeader = Level3_CreateUsageTableHeader; // TODO(fredgc): add stub.
// level3_.CreateUsageTableHeader = Level3_CreateUsageTableHeader;
level3_.LoadUsageTableHeader = Level3_LoadUsageTableHeader; level3_.LoadUsageTableHeader = Level3_LoadUsageTableHeader;
level3_.CreateNewUsageEntry = Level3_CreateNewUsageEntry; level3_.CreateNewUsageEntry = Level3_CreateNewUsageEntry;
level3_.LoadUsageEntry = Level3_LoadUsageEntry; level3_.LoadUsageEntry = Level3_LoadUsageEntry;
@@ -895,13 +897,15 @@ uint32_t OEMCrypto_SupportedCertificates(SecurityLevel level) {
return fcn->SupportedCertificates(); 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; if (!kAdapter) return OEMCrypto_ERROR_UNKNOWN_FAILURE;
const FunctionPointers* fcn = kAdapter->get(level); const FunctionPointers* fcn = kAdapter->get(level);
if (!fcn) return OEMCrypto_ERROR_INVALID_SESSION; if (!fcn) return OEMCrypto_ERROR_INVALID_SESSION;
if (fcn->version < 9) return OEMCrypto_ERROR_NOT_IMPLEMENTED; if (fcn->version < 13) return OEMCrypto_ERROR_NOT_IMPLEMENTED;
if (fcn->version < 13) return fcn->DeleteOldUsageTable(); if (!fcn->CreateUsageTableHeader) return OEMCrypto_ERROR_NOT_IMPLEMENTED;
return fcn->CreateUsageTableHeader(); return fcn->CreateUsageTableHeader(header_buffer, header_buffer_length);
} }
OEMCryptoResult OEMCrypto_LoadUsageTableHeader(SecurityLevel level, OEMCryptoResult OEMCrypto_LoadUsageTableHeader(SecurityLevel level,
@@ -1544,8 +1548,10 @@ OEMCryptoResult OEMCrypto_RemoveSRM() {
} }
extern "C" extern "C"
OEMCryptoResult OEMCrypto_CreateUsageTableHeader() { OEMCryptoResult OEMCrypto_CreateUsageTableHeader(uint8_t* header_buffer,
return OEMCrypto_CreateUsageTableHeader(kLevelDefault); size_t* header_buffer_length) {
return OEMCrypto_CreateUsageTableHeader(kLevelDefault, header_buffer,
header_buffer_length);
} }
extern "C" extern "C"

View File

@@ -75,6 +75,8 @@ typedef enum OEMCryptoResult {
OEMCrypto_ERROR_WRONG_PST = 44, OEMCrypto_ERROR_WRONG_PST = 44,
OEMCrypto_ERROR_WRONG_KEYS = 45, OEMCrypto_ERROR_WRONG_KEYS = 45,
OEMCrypto_ERROR_MISSING_MASTER = 46, OEMCrypto_ERROR_MISSING_MASTER = 46,
OEMCrypto_ERROR_LICENSE_INACTIVE = 47,
OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE = 48,
} OEMCryptoResult; } OEMCryptoResult;
/* /*
@@ -379,9 +381,6 @@ typedef enum OEMCrypto_ProvisioningMethod {
#define OEMCrypto_LoadSRM _oecc55 #define OEMCrypto_LoadSRM _oecc55
#define OEMCrypto_LoadKeys _oecc56 #define OEMCrypto_LoadKeys _oecc56
#define OEMCrypto_RemoveSRM _oecc57 #define OEMCrypto_RemoveSRM _oecc57
#define OEMCrypto_SupportsDecryptHash _oecc58
#define OEMCrypto_SetDecryptHash _oecc59
#define OEMCrypto_VerifyDecryptHash _oecc60
#define OEMCrypto_CreateUsageTableHeader _oecc61 #define OEMCrypto_CreateUsageTableHeader _oecc61
#define OEMCrypto_LoadUsageTableHeader _oecc62 #define OEMCrypto_LoadUsageTableHeader _oecc62
#define OEMCrypto_CreateNewUsageEntry _oecc63 #define OEMCrypto_CreateNewUsageEntry _oecc63
@@ -2870,7 +2869,8 @@ OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer,
OEMCryptoResult OEMCrypto_RemoveSRM(); OEMCryptoResult OEMCrypto_RemoveSRM();
/* TODO(fredgc): copy text from http://go/wvgerrit/22887 */ /* 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 */ /* TODO(fredgc): copy text from http://go/wvgerrit/22887 */
OEMCryptoResult OEMCrypto_LoadUsageTableHeader(const uint8_t* buffer, OEMCryptoResult OEMCrypto_LoadUsageTableHeader(const uint8_t* buffer,

View File

@@ -68,9 +68,6 @@ namespace wvoec3 {
#define Level3_LoadSRM _lcc55 #define Level3_LoadSRM _lcc55
#define Level3_LoadKeys _lcc56 #define Level3_LoadKeys _lcc56
#define Level3_RemoveSRM _lcc57 #define Level3_RemoveSRM _lcc57
#define Level3_SupportsDecryptHash _lcc58
#define Level3_SetDecryptHash _lcc59
#define Level3_VerifyDecryptHash _lcc60
#define Level3_CreateUsageTableHeader _lcc61 #define Level3_CreateUsageTableHeader _lcc61
#define Level3_LoadUsageTableHeader _lcc62 #define Level3_LoadUsageTableHeader _lcc62
#define Level3_CreateNewUsageEntry _lcc63 #define Level3_CreateNewUsageEntry _lcc63
@@ -254,6 +251,7 @@ OEMCryptoResult Level3_SetDecryptHash(OEMCrypto_SESSION session,
size_t hash_length); size_t hash_length);
OEMCryptoResult Level3_VerifyDecryptHash(OEMCrypto_SESSION session, OEMCryptoResult Level3_VerifyDecryptHash(OEMCrypto_SESSION session,
uint64_t* failure_data); uint64_t* failure_data);
// TODO(fredgc): add stub for level3.
OEMCryptoResult Level3_CreateUsageTableHeader(); OEMCryptoResult Level3_CreateUsageTableHeader();
OEMCryptoResult Level3_LoadUsageTableHeader(const uint8_t* buffer, OEMCryptoResult Level3_LoadUsageTableHeader(const uint8_t* buffer,
size_t buffer_length); size_t buffer_length);

View File

@@ -1840,7 +1840,8 @@ OEMCryptoResult OEMCrypto_RemoveSRM() {
} }
extern "C" extern "C"
OEMCryptoResult OEMCrypto_CreateUsageTableHeader() { OEMCryptoResult OEMCrypto_CreateUsageTableHeader(uint8_t* header_buffer,
size_t* header_buffer_length) {
return OEMCrypto_ERROR_NOT_IMPLEMENTED; return OEMCrypto_ERROR_NOT_IMPLEMENTED;
} }