Correct GetDecryptHashSupport signature

[ Merge of http://go/wvgerrit/89906 ]

The change allows the GetDecryptHashSupport method to return
an error.

Bug: 144851430
Test: WV android unit/integration tests
Change-Id: Ib3b95788adb21b5ed0daee51ad338f9674b04c3c
This commit is contained in:
Rahul Frias
2019-11-20 14:51:32 -08:00
parent 176096a2d3
commit 09b16a0b17
3 changed files with 19 additions and 13 deletions

View File

@@ -178,7 +178,8 @@ class CryptoSession {
std::string* info);
virtual bool GetBuildInformation(std::string* info);
virtual uint32_t IsDecryptHashSupported(SecurityLevel security_level);
virtual bool GetDecryptHashSupport(SecurityLevel security_level,
uint32_t* hash_support);
virtual CdmResponseType SetDecryptHash(uint32_t frame_number,
const std::string& hash);

View File

@@ -665,8 +665,12 @@ CdmResponseType CdmEngine::QueryStatus(SecurityLevel security_level,
}
return NO_ERROR;
} else if (query_token == QUERY_KEY_DECRYPT_HASH_SUPPORT) {
*query_response =
std::to_string(crypto_session->IsDecryptHashSupported(security_level));
uint32_t hash_support = 0;
if (!crypto_session->GetDecryptHashSupport(security_level, &hash_support)) {
LOGW("GetDecryptHashSupport failed");
return UNKNOWN_ERROR;
}
*query_response = std::to_string(hash_support);
return NO_ERROR;
} else if (query_token == QUERY_KEY_PROVISIONING_MODEL) {
CdmClientTokenType token_type = kClientTokenUninitialized;

View File

@@ -1812,26 +1812,27 @@ bool CryptoSession::GetBuildInformation(SecurityLevel security_level,
return true;
}
uint32_t CryptoSession::IsDecryptHashSupported(SecurityLevel security_level) {
bool CryptoSession::GetDecryptHashSupport(SecurityLevel security_level,
uint32_t* decrypt_hash_support) {
LOGV("Checking if decrypt hash is supported");
RETURN_IF_UNINITIALIZED(false);
RETURN_IF_NULL(decrypt_hash_support, false);
uint32_t secure_decrypt_support;
WithOecReadLock("IsDecryptHashSupported", [&] {
secure_decrypt_support = OEMCrypto_SupportsDecryptHash(security_level);
WithOecReadLock("GetDecryptHashSupport", [&] {
*decrypt_hash_support = OEMCrypto_SupportsDecryptHash(security_level);
});
switch (secure_decrypt_support) {
switch (*decrypt_hash_support) {
case OEMCrypto_Hash_Not_Supported:
case OEMCrypto_CRC_Clear_Buffer:
case OEMCrypto_Partner_Defined_Hash:
break;
default:
LOGE("OEMCrypto_SupportsDecryptHash failed: result = %d",
static_cast<int>(secure_decrypt_support));
secure_decrypt_support = OEMCrypto_Hash_Not_Supported;
break;
// Not flagging an error since it is only used in test
LOGW("OEMCrypto_SupportsDecryptHash unrecognized result = %d",
static_cast<int>(*decrypt_hash_support));
return false;
}
return secure_decrypt_support;
return true;
}
CdmResponseType CryptoSession::SetDecryptHash(uint32_t frame_number,