Widevine CENC drm engine update: enable decryption
This import syncs to the widevine git repostiory change commit ab3e1e43642cf36900f55169597a33f222709fdb Change-Id: I3a6f1e2969e5fe7ed1ca12f90b0eb0a3b7899835
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "log.h"
|
||||
#include "OEMCryptoCENC.h"
|
||||
#include "properties.h"
|
||||
#include "wv_cdm_constants.h"
|
||||
|
||||
namespace wvcdm {
|
||||
@@ -23,7 +24,11 @@ Lock CryptoEngine::crypto_engine_lock_;
|
||||
|
||||
// CryptoEngine methods
|
||||
|
||||
CryptoEngine::CryptoEngine() : initialized_(false) {}
|
||||
CryptoEngine::CryptoEngine() : initialized_(false),
|
||||
properties_valid_(false),
|
||||
oem_crypto_use_secure_buffers_(false),
|
||||
oem_crypto_use_fifo_(false),
|
||||
oem_crypto_use_userspace_buffers_(false) {}
|
||||
|
||||
CryptoEngine::~CryptoEngine() {
|
||||
if (initialized_) {
|
||||
@@ -61,6 +66,29 @@ void CryptoEngine::DeleteInstance() {
|
||||
}
|
||||
|
||||
bool CryptoEngine::Init() {
|
||||
properties_valid_ = true;
|
||||
|
||||
if (!Properties::GetInstance()->GetProperty(
|
||||
kPropertyKeyOemCryptoUseSecureBuffers,
|
||||
oem_crypto_use_secure_buffers_)) {
|
||||
LOGW("CryptoEngine::CryptoEngine: Unable to access property - oemcrypto use secure buffers");
|
||||
properties_valid_ = false;
|
||||
}
|
||||
|
||||
if (!Properties::GetInstance()->GetProperty(
|
||||
kPropertyKeyOemCryptoUseFifo,
|
||||
oem_crypto_use_fifo_)) {
|
||||
LOGW("CryptoEngine::CryptoEngine: Unable to access property - oemcrypto use fifos");
|
||||
properties_valid_ = false;
|
||||
}
|
||||
|
||||
if (!Properties::GetInstance()->GetProperty(
|
||||
kPropertyKeyOemCryptoUseUserSpaceBuffers,
|
||||
oem_crypto_use_userspace_buffers_)) {
|
||||
LOGW("CryptoEngine::CryptoEngine: Unable to access property - oemcrypto use userspace buffers");
|
||||
properties_valid_ = false;
|
||||
}
|
||||
|
||||
LOGV("CryptoEngine::Init: Lock");
|
||||
AutoLock auto_lock(crypto_lock_);
|
||||
if (!initialized_) {
|
||||
@@ -175,10 +203,22 @@ bool CryptoEngine::GetToken(std::string* token) {
|
||||
return true;
|
||||
}
|
||||
|
||||
CdmResponseType CryptoEngine::Query(CdmQueryMap* key_info) {
|
||||
LOGV("CryptoEngine::GetToken: Query");
|
||||
(*key_info)[QUERY_KEY_SECURITY_LEVEL] = OEMCrypto_SecurityLevel();
|
||||
return NO_ERROR;
|
||||
CryptoEngine::SecurityLevel CryptoEngine::GetSecurityLevel() {
|
||||
std::string security_level = OEMCrypto_SecurityLevel();
|
||||
|
||||
if ((security_level.size() != 2) ||
|
||||
(security_level.at(0) != 'L')) {
|
||||
return kSecurityLevelUnknown;
|
||||
}
|
||||
|
||||
switch (security_level.at(1)) {
|
||||
case '1': return kSecurityLevelL1;
|
||||
case '2': return kSecurityLevelL2;
|
||||
case '3': return kSecurityLevelL3;
|
||||
default : return kSecurityLevelUnknown;
|
||||
}
|
||||
|
||||
return kSecurityLevelUnknown;
|
||||
}
|
||||
|
||||
}; // namespace wvcdm
|
||||
|
||||
Reference in New Issue
Block a user