Update OEMCrypto calls to use substrings
Merge from master branch of Widevine repo of http://go/wvgerrit/66073 Merge from oemcrypto-v15 branch of Widevine repo of http://go/wvgerrit/64083 As part of the update to v15, LoadKeys, RefreshKeys, and LoadEntitledContentKeys should all use offsets and lengths into the message rather than a pointer for its parameters. The CDM, tests, adapters, and OEMCrypto implementations are changed to reflect this. Test: tested as part of http://go/ag/5501993 Bug: 115874964 Change-Id: I981fa322dec7c565066fd163ca5775dbff71fccf
This commit is contained in:
committed by
Fred Gylys-Colwell
parent
4550979f22
commit
e6439255ba
@@ -202,20 +202,6 @@ typedef struct {
|
||||
* The memory for the OEMCrypto_KeyObject fields is allocated and freed
|
||||
* by the caller of OEMCrypto_LoadKeys().
|
||||
*/
|
||||
#if 1
|
||||
// TODO(b/115874964, srujzs): For this and the ones below struct and function
|
||||
// using Substring, rename the the old structure to *_V14 and move to the
|
||||
// dynamic adapter for backwards compatiblity.
|
||||
typedef struct {
|
||||
const uint8_t* key_id;
|
||||
size_t key_id_length;
|
||||
const uint8_t* key_data_iv;
|
||||
const uint8_t* key_data;
|
||||
size_t key_data_length;
|
||||
const uint8_t* key_control_iv;
|
||||
const uint8_t* key_control;
|
||||
} OEMCrypto_KeyObject;
|
||||
#else
|
||||
typedef struct {
|
||||
OEMCrypto_Substring key_id;
|
||||
OEMCrypto_Substring key_data_iv;
|
||||
@@ -223,7 +209,6 @@ typedef struct {
|
||||
OEMCrypto_Substring key_control_iv;
|
||||
OEMCrypto_Substring key_control;
|
||||
} OEMCrypto_KeyObject;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SRM_Restriction_Data
|
||||
@@ -248,24 +233,12 @@ typedef struct {
|
||||
* key_data - encrypted content key data.
|
||||
* key_data_length - length of key_data - 16 or 32 depending on intended use.
|
||||
*/
|
||||
#if 1 // TODO(b/115874964, srujzs): rename and move.
|
||||
typedef struct {
|
||||
const uint8_t* entitlement_key_id;
|
||||
size_t entitlement_key_id_length;
|
||||
const uint8_t* content_key_id;
|
||||
size_t content_key_id_length;
|
||||
const uint8_t* content_key_data_iv;
|
||||
const uint8_t* content_key_data;
|
||||
size_t content_key_data_length;
|
||||
} OEMCrypto_EntitledContentKeyObject;
|
||||
#else
|
||||
typedef struct {
|
||||
OEMCrypto_Substring entitlement_key_id;
|
||||
OEMCrypto_Substring content_key_id;
|
||||
OEMCrypto_Substring content_key_data_iv;
|
||||
OEMCrypto_Substring content_key_data;
|
||||
} OEMCrypto_EntitledContentKeyObject;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* OEMCrypto_KeyRefreshObject
|
||||
@@ -286,21 +259,11 @@ typedef struct {
|
||||
* The memory for the OEMCrypto_KeyRefreshObject fields is allocated and freed
|
||||
* by the caller of OEMCrypto_RefreshKeys().
|
||||
*/
|
||||
#if 1 // TODO(b/115874964, srujzs): rename and move.
|
||||
typedef struct {
|
||||
const uint8_t* key_id;
|
||||
size_t key_id_length;
|
||||
const uint8_t* key_control_iv;
|
||||
const uint8_t* key_control;
|
||||
} OEMCrypto_KeyRefreshObject;
|
||||
#else
|
||||
typedef struct {
|
||||
OEMCrypto_Substring key_id;
|
||||
OEMCrypto_Substring key_control_iv;
|
||||
OEMCrypto_Substring key_control;
|
||||
} OEMCrypto_KeyRefreshObject;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* OEMCrypto_Algorithm
|
||||
@@ -478,7 +441,7 @@ const uint32_t OEMCrypto_Partner_Defined_Hash = 2;
|
||||
#define OEMCrypto_GetMaxNumberOfSessions _oecc37
|
||||
#define OEMCrypto_GetNumberOfOpenSessions _oecc38
|
||||
#define OEMCrypto_IsAntiRollbackHwPresent _oecc39
|
||||
#define OEMCrypto_CopyBuffer_v14 _oecc40
|
||||
#define OEMCrypto_CopyBuffer_V14 _oecc40
|
||||
#define OEMCrypto_QueryKeyControl _oecc41
|
||||
#define OEMCrypto_LoadTestKeybox_V13 _oecc42
|
||||
#define OEMCrypto_ForceDeleteUsageEntry _oecc43
|
||||
@@ -1208,15 +1171,6 @@ OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer, size_t buffer_length);
|
||||
* Version:
|
||||
* This method changed in API version 14.
|
||||
*/
|
||||
#if 1 // TODO(b/115874964, srujzs): rename and move.
|
||||
OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
||||
const uint8_t* signature, size_t signature_length,
|
||||
const uint8_t* enc_mac_keys_iv, const uint8_t* enc_mac_keys,
|
||||
size_t num_keys, const OEMCrypto_KeyObject* key_array, const uint8_t* pst,
|
||||
size_t pst_length, const uint8_t* srm_requirement,
|
||||
OEMCrypto_LicenseType license_type);
|
||||
#else
|
||||
OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
||||
const uint8_t* signature, size_t signature_length,
|
||||
@@ -1224,7 +1178,6 @@ OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
size_t num_keys, const OEMCrypto_KeyObject* key_array,
|
||||
OEMCrypto_Substring pst, OEMCrypto_Substring srm_restriction_data,
|
||||
OEMCrypto_LicenseType license_type);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* OEMCrypto_LoadEntitledContentKeys
|
||||
@@ -1285,17 +1238,9 @@ OEMCryptoResult OEMCrypto_LoadKeys(
|
||||
* Version:
|
||||
* This method is new in API version 14.
|
||||
*/
|
||||
#if 1 // TODO(b/115874964, srujzs): rename and move.
|
||||
OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
||||
OEMCrypto_SESSION session,
|
||||
size_t num_keys,
|
||||
const OEMCrypto_EntitledContentKeyObject* key_array);
|
||||
#else
|
||||
// DOUBLE TODO(jfore,srujzs,fredgc): Do we really have a message for this?
|
||||
OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
||||
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
||||
size_t num_keys, const OEMCrypto_EntitledContentKeyObject* key_array);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* OEMCrypto_RefreshKeys
|
||||
@@ -1409,17 +1354,10 @@ OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
||||
* Version:
|
||||
* This method changed in API version 12.
|
||||
*/
|
||||
#if 1 // TODO(b/115874964, srujzs): rename and move.
|
||||
OEMCryptoResult OEMCrypto_RefreshKeys(
|
||||
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
||||
const uint8_t* signature, size_t signature_length, size_t num_keys,
|
||||
const OEMCrypto_KeyRefreshObject* key_array);
|
||||
#else
|
||||
OEMCryptoResult OEMCrypto_RefreshKeys(
|
||||
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
||||
const uint8_t* signature, size_t signature_length, size_t num_keys,
|
||||
const OEMCrypto_KeyRefreshObject* key_array);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* OEMCrypto_QueryKeyControl
|
||||
|
||||
Reference in New Issue
Block a user