Changes to adapter + gyp to support v15

Bug: b/117558570
Test: Android, CE CDM, and Linux tests
Merge of http://go/wvgerrit/67566

This CL adds changes to support the Level 3 upgrade to v15 with both the
dynamic and static adapters. It also rearranges the wvcrc.cpp files so
that the tests have their own copy and Level 3 can just use the one in
ref/src.

Change-Id: Ieee2859601881aa1800622454e6ce0345eb94aa7
This commit is contained in:
Srujan Gaddam
2018-10-31 16:54:33 -07:00
parent 64ae554237
commit 732c077f79
13 changed files with 476329 additions and 760622 deletions

View File

@@ -381,11 +381,12 @@ struct FunctionPointers {
class WatchDog {
public:
// Created by main thread.
WatchDog() {
WatchDog(std::vector<uint8_t> sandbox_id) {
pthread_mutex_init(&mutex_, NULL);
pthread_cond_init(&condition_, NULL);
status_ = OEMCrypto_SUCCESS;
gave_up_ = false;
sandbox_id_ = sandbox_id;
}
// Deleted by either thread.
@@ -414,8 +415,7 @@ class WatchDog {
// Called by worker thread.
void DoInit() {
// TODO(b/117558570): Level3 does not currently support sandbox.
// Level3_SetSandbox(&sandbox_id_[0], sandbox_id_.length());
Level3_SetSandbox(&sandbox_id_[0], sandbox_id_.size());
status_ = Level3_Initialize();
}
@@ -533,6 +533,7 @@ class WatchDog {
pthread_cond_t condition_;
bool running_;
bool gave_up_;
std::vector<uint8_t> sandbox_id_;
};
struct LevelSession {
@@ -602,7 +603,7 @@ class Adapter {
level1_ = FunctionPointers(); // start with all null pointers.
level3_ = FunctionPointers(); // start with all null pointers.
LoadLevel3();
WatchDog *watcher = new WatchDog();
WatchDog *watcher = new WatchDog(sandbox_id_);
watcher->CheckForPreviousFailure(&metrics);
watcher->StartThread();
if (level3_.BuildInformation) {
@@ -870,21 +871,17 @@ class Adapter {
level3_.GenerateDerivedKeys = Level3_GenerateDerivedKeys;
level3_.GenerateNonce = Level3_GenerateNonce;
level3_.GenerateSignature = Level3_GenerateSignature;
// TODO(srujzs) level3_.LoadKeys = Level3_LoadKeys;
level3_.LoadKeys_V14 = Level3_LoadKeys;
// TODO(srujzs) level3_.LoadEntitledContentKeys = Level3_LoadEntitledContentKeys;
level3_.LoadEntitledContentKeys_V14 = Level3_LoadEntitledContentKeys;
// TODO(srujzs) level3_.RefreshKeys = Level3_RefreshKeys;
level3_.RefreshKeys_V14 = Level3_RefreshKeys;
level3_.LoadKeys = Level3_LoadKeys;
level3_.LoadEntitledContentKeys = Level3_LoadEntitledContentKeys;
level3_.RefreshKeys = Level3_RefreshKeys;
level3_.QueryKeyControl = Level3_QueryKeyControl;
level3_.SelectKey = Level3_SelectKey;
level3_.DecryptCENC = Level3_DecryptCENC;
// TODO(srujzs) level3_.CopyBuffer = Level3_CopyBuffer;
level3_.CopyBuffer_V14 = Level3_CopyBuffer;
level3_.WrapKeybox = Level3_WrapKeybox;
level3_.InstallKeyboxOrOEMCert = Level3_InstallKeybox;
level3_.CopyBuffer = Level3_CopyBuffer;
level3_.WrapKeybox = Level3_WrapKeyboxOrOEMCert;
level3_.InstallKeyboxOrOEMCert = Level3_InstallKeyboxOrOEMCert;
level3_.LoadTestKeybox = Level3_LoadTestKeybox;
level3_.IsKeyboxOrOEMCertValid = Level3_IsKeyboxValid;
level3_.IsKeyboxOrOEMCertValid = Level3_IsKeyboxOrOEMCertValid;
level3_.GetDeviceID = Level3_GetDeviceID;
level3_.GetKeyData = Level3_GetKeyData;
level3_.GetRandom = Level3_GetRandom;
@@ -898,8 +895,8 @@ class Adapter {
level3_.SecurityLevel = Level3_SecurityLevel;
level3_.GetHDCPCapability = Level3_GetHDCPCapability;
level3_.GetAnalogOutputFlags = Level3_GetAnalogOutputFlags;
// TODO(srujzs) level3_.BuildInformation = Level3_BuildInformation;
// TODO(srujzs) level3_.ResourceRatingTier = Level3_ResourceRatingTier;
level3_.BuildInformation = Level3_BuildInformation;
level3_.ResourceRatingTier = Level3_ResourceRatingTier;
level3_.SupportsUsageTable = Level3_SupportsUsageTable;
level3_.IsAntiRollbackHwPresent = Level3_IsAntiRollbackHwPresent;
level3_.GetNumberOfOpenSessions = Level3_GetNumberOfOpenSessions;
@@ -928,10 +925,10 @@ class Adapter {
level3_.MoveEntry = Level3_MoveEntry;
level3_.CopyOldUsageEntry = Level3_CopyOldUsageEntry;
level3_.CreateOldUsageEntry = Level3_CreateOldUsageEntry;
// TODO(srujzs) level3_.SupportsDecryptHash = Level3_SupportsDecryptHash;
// TODO(srujzs) level3_.InitializeDecryptHash = Level3_InitializeDecryptHash;
// TODO(srujzs) level3_.SetDecryptHash = Level3_SetDecryptHash;
// TODO(srujzs) level3_.GetHashErrorCode = Level3_GetHashErrorCode;
level3_.SupportsDecryptHash = Level3_SupportsDecryptHash;
level3_.InitializeDecryptHash = Level3_InitializeDecryptHash;
level3_.SetDecryptHash = Level3_SetDecryptHash;
level3_.GetHashErrorCode = Level3_GetHashErrorCode;
// clang-format on
level3_.version = Level3_APIVersion();