|
|
|
|
@@ -25,6 +25,16 @@
|
|
|
|
|
#include "usage_table_header.h"
|
|
|
|
|
#include "wv_cdm_constants.h"
|
|
|
|
|
|
|
|
|
|
// Stringify turns macro arguments into static C strings.
|
|
|
|
|
// Example: STRINGIFY(this_argument) -> "this_argument"
|
|
|
|
|
#define STRINGIFY(PARAM...) #PARAM
|
|
|
|
|
|
|
|
|
|
#define RETURN_IF_NULL(PARAM, ret_value) \
|
|
|
|
|
if ((PARAM) == nullptr) { \
|
|
|
|
|
LOGE("Output parameter |" STRINGIFY(PARAM) "| not provided"); \
|
|
|
|
|
return ret_value; \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define RETURN_IF_UNINITIALIZED(ret_value) \
|
|
|
|
|
if (!IsInitialized()) { \
|
|
|
|
|
LOGE("Crypto session is not initialized"); \
|
|
|
|
|
@@ -286,10 +296,8 @@ void CryptoSession::Terminate() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetTokenFromKeybox(std::string* token) {
|
|
|
|
|
if (token == nullptr) {
|
|
|
|
|
LOGE("Output parameter |token| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(token, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
std::string temp_buffer(KEYBOX_KEY_DATA_SIZE, '\0');
|
|
|
|
|
size_t buf_size = temp_buffer.size();
|
|
|
|
|
uint8_t* buf = reinterpret_cast<uint8_t*>(&temp_buffer[0]);
|
|
|
|
|
@@ -311,10 +319,8 @@ CdmResponseType CryptoSession::GetTokenFromKeybox(std::string* token) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetTokenFromOemCert(std::string* token) {
|
|
|
|
|
if (token == nullptr) {
|
|
|
|
|
LOGE("Output parameter |token| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(token, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult status;
|
|
|
|
|
if (!oem_token_.empty()) {
|
|
|
|
|
token->assign(oem_token_);
|
|
|
|
|
@@ -351,9 +357,8 @@ CdmResponseType CryptoSession::GetTokenFromOemCert(std::string* token) {
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetProvisioningToken(std::string* token) {
|
|
|
|
|
if (token == nullptr) {
|
|
|
|
|
LOGE("Output parameter |token| not provided");
|
|
|
|
|
metrics_->crypto_session_get_token_.Increment(PARAMETER_NULL);
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
RETURN_IF_NULL(token, PARAMETER_NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!IsInitialized()) {
|
|
|
|
|
@@ -414,10 +419,7 @@ CdmSecurityLevel CryptoSession::GetSecurityLevel(
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetInternalDeviceUniqueId(
|
|
|
|
|
std::string* device_id) {
|
|
|
|
|
if (device_id == nullptr) {
|
|
|
|
|
LOGE("Output parameter |device_id| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(device_id, PARAMETER_NULL);
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
|
|
|
|
|
std::vector<uint8_t> id;
|
|
|
|
|
@@ -460,10 +462,8 @@ CdmResponseType CryptoSession::GetInternalDeviceUniqueId(
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetExternalDeviceUniqueId(
|
|
|
|
|
std::string* device_id) {
|
|
|
|
|
if (device_id == nullptr) {
|
|
|
|
|
LOGE("Output parameter |device_id| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(device_id, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
std::string temp;
|
|
|
|
|
CdmResponseType status = GetInternalDeviceUniqueId(&temp);
|
|
|
|
|
|
|
|
|
|
@@ -512,13 +512,9 @@ bool CryptoSession::GetApiVersion(SecurityLevel security_level,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CryptoSession::GetSystemId(uint32_t* system_id) {
|
|
|
|
|
if (system_id == nullptr) {
|
|
|
|
|
LOGE("Output parameter |system_id| not provided");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (!IsInitialized() || !open_) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(system_id, false);
|
|
|
|
|
RETURN_IF_UNINITIALIZED(false);
|
|
|
|
|
RETURN_IF_NOT_OPEN(false);
|
|
|
|
|
*system_id = system_id_;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
@@ -527,10 +523,7 @@ bool CryptoSession::GetSystemId(uint32_t* system_id) {
|
|
|
|
|
// This method assumes that OEMCrypto has been initialized before making this
|
|
|
|
|
// call.
|
|
|
|
|
CdmResponseType CryptoSession::GetSystemIdInternal(uint32_t* system_id) {
|
|
|
|
|
if (system_id == nullptr) {
|
|
|
|
|
LOGE("Output parameter |system_id| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(system_id, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
if (pre_provision_token_type_ == kClientTokenKeybox) {
|
|
|
|
|
std::string token;
|
|
|
|
|
@@ -579,10 +572,7 @@ bool CryptoSession::ExtractSystemIdFromOemCert(const std::string& oem_cert,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetProvisioningId(std::string* provisioning_id) {
|
|
|
|
|
if (provisioning_id == nullptr) {
|
|
|
|
|
LOGE("Output parameter |provisioning_id| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(provisioning_id, PARAMETER_NULL);
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
|
|
|
|
|
if (pre_provision_token_type_ == kClientTokenOemCert) {
|
|
|
|
|
@@ -783,10 +773,7 @@ void CryptoSession::Close() {
|
|
|
|
|
CdmResponseType CryptoSession::PrepareRequest(const std::string& message,
|
|
|
|
|
bool is_provisioning,
|
|
|
|
|
std::string* signature) {
|
|
|
|
|
if (signature == nullptr) {
|
|
|
|
|
LOGE("Output parameter |signature| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(signature, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
if (is_provisioning && (pre_provision_token_type_ == kClientTokenKeybox)) {
|
|
|
|
|
CdmResponseType status = GenerateDerivedKeys(message);
|
|
|
|
|
@@ -801,10 +788,7 @@ CdmResponseType CryptoSession::PrepareRequest(const std::string& message,
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::PrepareRenewalRequest(const std::string& message,
|
|
|
|
|
std::string* signature) {
|
|
|
|
|
if (signature == nullptr) {
|
|
|
|
|
LOGE("Output parameter |signature| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(signature, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
return GenerateSignature(message, signature);
|
|
|
|
|
}
|
|
|
|
|
@@ -1009,10 +993,7 @@ CdmResponseType CryptoSession::GenerateDerivedKeys(
|
|
|
|
|
CdmResponseType CryptoSession::GenerateSignature(const std::string& message,
|
|
|
|
|
std::string* signature) {
|
|
|
|
|
LOGV("Generating signature: id = %u", oec_session_id_);
|
|
|
|
|
if (signature == nullptr) {
|
|
|
|
|
LOGE("Output parameter |signature| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(signature, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult sts;
|
|
|
|
|
size_t length = signature->size();
|
|
|
|
|
@@ -1049,10 +1030,7 @@ CdmResponseType CryptoSession::GenerateSignature(const std::string& message,
|
|
|
|
|
CdmResponseType CryptoSession::GenerateRsaSignature(const std::string& message,
|
|
|
|
|
std::string* signature) {
|
|
|
|
|
LOGV("Generating RSA signature: id = %u", oec_session_id_);
|
|
|
|
|
if (signature == nullptr) {
|
|
|
|
|
LOGE("Output parameter |signature| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(signature, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult sts;
|
|
|
|
|
signature->resize(kRsaSignatureLength);
|
|
|
|
|
@@ -1287,10 +1265,7 @@ CdmResponseType CryptoSession::GenerateUsageReport(
|
|
|
|
|
int64_t* seconds_since_last_played) {
|
|
|
|
|
LOGV("Generating usage report: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (usage_report == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_report| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(usage_report, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
uint8_t* pst = reinterpret_cast<uint8_t*>(
|
|
|
|
|
const_cast<char*>(provider_session_token.data()));
|
|
|
|
|
@@ -1476,10 +1451,7 @@ bool CryptoSession::IsAntiRollbackHwPresent() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GenerateNonce(uint32_t* nonce) {
|
|
|
|
|
if (nonce == nullptr) {
|
|
|
|
|
LOGE("Output parameter |nonce| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(nonce, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult result;
|
|
|
|
|
WithOecWriteLock("GenerateNonce", [&] {
|
|
|
|
|
@@ -1645,14 +1617,9 @@ CdmResponseType CryptoSession::GetHdcpCapabilities(SecurityLevel security_level,
|
|
|
|
|
LOGV("Getting HDCP capabilities: id = %u, security_level = %d",
|
|
|
|
|
oec_session_id_, static_cast<int>(security_level));
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
if (current == nullptr) {
|
|
|
|
|
LOGE("Output parameter |current| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
if (max == nullptr) {
|
|
|
|
|
LOGE("Output parameter |max| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(current, PARAMETER_NULL);
|
|
|
|
|
RETURN_IF_NULL(max, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult status;
|
|
|
|
|
WithOecReadLock("GetHdcpCapabilities", [&] {
|
|
|
|
|
status = OEMCrypto_GetHDCPCapability(security_level, current, max);
|
|
|
|
|
@@ -1674,10 +1641,7 @@ bool CryptoSession::GetSupportedCertificateTypes(
|
|
|
|
|
SupportedCertificateTypes* support) {
|
|
|
|
|
LOGV("Getting supported certificate types: id = %u", oec_session_id_);
|
|
|
|
|
RETURN_IF_UNINITIALIZED(false);
|
|
|
|
|
if (support == nullptr) {
|
|
|
|
|
LOGE("Output parameter |support| not provided");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(support, false);
|
|
|
|
|
|
|
|
|
|
uint32_t oec_support;
|
|
|
|
|
WithOecReadLock("GetSupportedCertificateTypes", [&] {
|
|
|
|
|
@@ -1691,10 +1655,8 @@ bool CryptoSession::GetSupportedCertificateTypes(
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetRandom(size_t data_length,
|
|
|
|
|
uint8_t* random_data) {
|
|
|
|
|
if (random_data == nullptr) {
|
|
|
|
|
LOGE("Output parameter |random_data| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(random_data, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult sts;
|
|
|
|
|
WithOecReadLock("GetRandom",
|
|
|
|
|
[&] { sts = OEMCrypto_GetRandom(random_data, data_length); });
|
|
|
|
|
@@ -1708,10 +1670,7 @@ CdmResponseType CryptoSession::GetNumberOfOpenSessions(
|
|
|
|
|
LOGV("Getting number of open sessions: id = %u, security_level = %d",
|
|
|
|
|
oec_session_id_, static_cast<int>(security_level));
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
if (count == nullptr) {
|
|
|
|
|
LOGE("Output parameter |count| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(count, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
size_t sessions_count;
|
|
|
|
|
OEMCryptoResult status;
|
|
|
|
|
@@ -1735,11 +1694,7 @@ CdmResponseType CryptoSession::GetMaxNumberOfSessions(
|
|
|
|
|
LOGV("Getting max number of sessions: id = %u, security_level = %d",
|
|
|
|
|
oec_session_id_, static_cast<int>(security_level));
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
|
|
|
|
|
if (max == nullptr) {
|
|
|
|
|
LOGE("Output parameter |max| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(max, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
size_t max_sessions = 0;
|
|
|
|
|
OEMCryptoResult status;
|
|
|
|
|
@@ -1761,10 +1716,7 @@ CdmResponseType CryptoSession::GetMaxNumberOfSessions(
|
|
|
|
|
CdmResponseType CryptoSession::GetSrmVersion(uint16_t* srm_version) {
|
|
|
|
|
LOGV("Getting SRM version");
|
|
|
|
|
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
|
|
|
|
if (srm_version == nullptr) {
|
|
|
|
|
LOGE("Output parameter |srm_version| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(srm_version, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult status;
|
|
|
|
|
WithOecReadLock("GetSrmVersion", [&] {
|
|
|
|
|
@@ -1817,10 +1769,8 @@ bool CryptoSession::GetResourceRatingTier(SecurityLevel security_level,
|
|
|
|
|
LOGV("Getting resource rating tier: security_level = %d",
|
|
|
|
|
static_cast<int>(security_level));
|
|
|
|
|
RETURN_IF_UNINITIALIZED(false);
|
|
|
|
|
if (tier == nullptr) {
|
|
|
|
|
LOGE("Output parameter |tier| not provided");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(tier, false);
|
|
|
|
|
|
|
|
|
|
WithOecReadLock("GetResourceRatingTier", [&] {
|
|
|
|
|
*tier = OEMCrypto_ResourceRatingTier(security_level);
|
|
|
|
|
metrics_->oemcrypto_resource_rating_tier_.Record(*tier);
|
|
|
|
|
@@ -1847,10 +1797,8 @@ bool CryptoSession::GetBuildInformation(SecurityLevel security_level,
|
|
|
|
|
LOGV("Getting build information: security_level = %d",
|
|
|
|
|
static_cast<int>(security_level));
|
|
|
|
|
RETURN_IF_UNINITIALIZED(false);
|
|
|
|
|
if (info == nullptr) {
|
|
|
|
|
LOGE("Output parameter |info| not provided");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(info, false);
|
|
|
|
|
|
|
|
|
|
const char* build_information;
|
|
|
|
|
WithOecReadLock("GetBuildInformation", [&] {
|
|
|
|
|
build_information = OEMCrypto_BuildInformation(security_level);
|
|
|
|
|
@@ -1902,10 +1850,7 @@ CdmResponseType CryptoSession::SetDecryptHash(uint32_t frame_number,
|
|
|
|
|
|
|
|
|
|
CdmResponseType CryptoSession::GetDecryptHashError(std::string* error_string) {
|
|
|
|
|
LOGV("Getting decrypt hash error");
|
|
|
|
|
if (error_string == nullptr) {
|
|
|
|
|
LOGE("Output parameter |error_string| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(error_string, PARAMETER_NULL);
|
|
|
|
|
error_string->clear();
|
|
|
|
|
|
|
|
|
|
uint32_t failed_frame_number = 0;
|
|
|
|
|
@@ -1944,10 +1889,7 @@ CdmResponseType CryptoSession::GenericEncrypt(const std::string& in_buffer,
|
|
|
|
|
CdmEncryptionAlgorithm algorithm,
|
|
|
|
|
std::string* out_buffer) {
|
|
|
|
|
LOGV("Generic encrypt: id = %u", oec_session_id_);
|
|
|
|
|
if (out_buffer == nullptr) {
|
|
|
|
|
LOGE("Output parameter |out_buffer| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(out_buffer, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCrypto_Algorithm oec_algorithm = GenericEncryptionAlgorithm(algorithm);
|
|
|
|
|
if (iv.size() != GenericEncryptionBlockSize(algorithm) ||
|
|
|
|
|
@@ -2008,10 +1950,7 @@ CdmResponseType CryptoSession::GenericDecrypt(const std::string& in_buffer,
|
|
|
|
|
CdmEncryptionAlgorithm algorithm,
|
|
|
|
|
std::string* out_buffer) {
|
|
|
|
|
LOGV("Generic decrypt: id = %u", oec_session_id_);
|
|
|
|
|
if (out_buffer == nullptr) {
|
|
|
|
|
LOGE("Output parameter |out_buffer| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(out_buffer, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCrypto_Algorithm oec_algorithm = GenericEncryptionAlgorithm(algorithm);
|
|
|
|
|
if (iv.size() != GenericEncryptionBlockSize(algorithm) ||
|
|
|
|
|
@@ -2071,10 +2010,7 @@ CdmResponseType CryptoSession::GenericSign(const std::string& message,
|
|
|
|
|
CdmSigningAlgorithm algorithm,
|
|
|
|
|
std::string* signature) {
|
|
|
|
|
LOGV("Generic sign: id = %u", oec_session_id_);
|
|
|
|
|
if (signature == nullptr) {
|
|
|
|
|
LOGE("Output parameter |signature| not provided");
|
|
|
|
|
return PARAMETER_NULL;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(signature, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCrypto_Algorithm oec_algorithm = GenericSigningAlgorithm(algorithm);
|
|
|
|
|
if (oec_algorithm == kInvalidAlgorithm) {
|
|
|
|
|
@@ -2192,10 +2128,7 @@ CdmResponseType CryptoSession::GetUsageSupportType(
|
|
|
|
|
CdmUsageSupportType* usage_support_type) {
|
|
|
|
|
LOGV("Getting usage support type: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (usage_support_type == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_support_type| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_23;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(usage_support_type, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
if (usage_support_type_ != kUnknownUsageSupport) {
|
|
|
|
|
*usage_support_type = usage_support_type_;
|
|
|
|
|
@@ -2224,10 +2157,7 @@ CdmResponseType CryptoSession::CreateUsageTableHeader(
|
|
|
|
|
CdmUsageTableHeader* usage_table_header) {
|
|
|
|
|
LOGV("Creating usage table header: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (usage_table_header == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_table_header| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_17;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(usage_table_header, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
usage_table_header->resize(kEstimatedInitialUsageTableHeader);
|
|
|
|
|
|
|
|
|
|
@@ -2305,10 +2235,7 @@ CdmResponseType CryptoSession::LoadUsageTableHeader(
|
|
|
|
|
CdmResponseType CryptoSession::CreateUsageEntry(uint32_t* entry_number) {
|
|
|
|
|
LOGV("Creating usage entry: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (entry_number == nullptr) {
|
|
|
|
|
LOGE("Output parameter |entry_number| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_18;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(entry_number, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
OEMCryptoResult result;
|
|
|
|
|
WithOecWriteLock("CreateUsageEntry", [&] {
|
|
|
|
|
@@ -2380,15 +2307,8 @@ CdmResponseType CryptoSession::UpdateUsageEntry(
|
|
|
|
|
CdmUsageTableHeader* usage_table_header, CdmUsageEntry* usage_entry) {
|
|
|
|
|
LOGV("Updating usage entry: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (usage_table_header == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_table_header| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_19;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (usage_entry == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_entry| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_20;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(usage_table_header, PARAMETER_NULL);
|
|
|
|
|
RETURN_IF_NULL(usage_entry, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
size_t usage_table_header_len = 0;
|
|
|
|
|
size_t usage_entry_len = 0;
|
|
|
|
|
@@ -2429,10 +2349,7 @@ CdmResponseType CryptoSession::ShrinkUsageTableHeader(
|
|
|
|
|
uint32_t new_entry_count, CdmUsageTableHeader* usage_table_header) {
|
|
|
|
|
LOGV("Shrinking usage table header: id = %u", oec_session_id_);
|
|
|
|
|
|
|
|
|
|
if (usage_table_header == nullptr) {
|
|
|
|
|
LOGE("Output parameter |usage_table_header| not provided");
|
|
|
|
|
return INVALID_PARAMETERS_ENG_21;
|
|
|
|
|
}
|
|
|
|
|
RETURN_IF_NULL(usage_table_header, PARAMETER_NULL);
|
|
|
|
|
|
|
|
|
|
size_t usage_table_header_len = 0;
|
|
|
|
|
OEMCryptoResult result;
|
|
|
|
|
|