Source release 16.4.0
This commit is contained in:
@@ -852,7 +852,22 @@ void CryptoSession::Close() {
|
||||
WithOecWriteLock(
|
||||
"Close", [&] { close_sts = OEMCrypto_CloseSession(oec_session_id_); });
|
||||
metrics_->oemcrypto_close_session_.Increment(close_sts);
|
||||
if (OEMCrypto_SUCCESS == close_sts) open_ = false;
|
||||
|
||||
if (close_sts != OEMCrypto_SUCCESS) {
|
||||
LOGW("OEMCrypto_CloseSession failed: status = %d",
|
||||
static_cast<int>(close_sts));
|
||||
}
|
||||
switch (close_sts) {
|
||||
case OEMCrypto_SUCCESS:
|
||||
case OEMCrypto_ERROR_INVALID_SESSION:
|
||||
case OEMCrypto_ERROR_SYSTEM_INVALIDATED:
|
||||
open_ = false;
|
||||
break;
|
||||
case OEMCrypto_ERROR_CLOSE_SESSION_FAILED:
|
||||
default:
|
||||
// empty case
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CdmResponseType CryptoSession::PrepareAndSignLicenseRequest(
|
||||
@@ -1898,25 +1913,33 @@ CdmResponseType CryptoSession::GetSrmVersion(uint16_t* srm_version) {
|
||||
RETURN_IF_UNINITIALIZED(CRYPTO_SESSION_NOT_INITIALIZED);
|
||||
RETURN_IF_NULL(srm_version, PARAMETER_NULL);
|
||||
|
||||
OEMCryptoResult status;
|
||||
WithOecReadLock("GetSrmVersion", [&] {
|
||||
status = OEMCrypto_GetCurrentSRMVersion(srm_version);
|
||||
const OEMCryptoResult status = WithOecReadLock("GetSrmVersion", [&] {
|
||||
return OEMCrypto_GetCurrentSRMVersion(srm_version);
|
||||
});
|
||||
|
||||
// SRM is an optional feature. Whether it is implemented is up to the
|
||||
// discretion of OEMs
|
||||
if (status == OEMCrypto_ERROR_NOT_IMPLEMENTED) {
|
||||
LOGV("OEMCrypto_GetCurrentSRMVersion not implemented");
|
||||
return NOT_IMPLEMENTED_ERROR;
|
||||
// discretion of OEMs. OEMs may implement this method, but SRM is not
|
||||
// required if there is only a local display, as such no SRM version
|
||||
// is available/reportable. |srm_version| is only set if SUCCESS is
|
||||
// returned.
|
||||
switch (status) {
|
||||
case OEMCrypto_SUCCESS:
|
||||
return NO_ERROR;
|
||||
case OEMCrypto_LOCAL_DISPLAY_ONLY:
|
||||
LOGD("No SRM: Local display only");
|
||||
return NO_SRM_VERSION;
|
||||
case OEMCrypto_ERROR_NOT_IMPLEMENTED:
|
||||
LOGD("No SRM: Not implemented");
|
||||
return NO_SRM_VERSION;
|
||||
default:
|
||||
return MapOEMCryptoResult(status, GET_SRM_VERSION_ERROR,
|
||||
"GetCurrentSRMVersion");
|
||||
}
|
||||
|
||||
return MapOEMCryptoResult(status, GET_SRM_VERSION_ERROR,
|
||||
"GetCurrentSRMVersion");
|
||||
}
|
||||
|
||||
bool CryptoSession::IsSrmUpdateSupported() {
|
||||
LOGV("Checking if SRM update is supported");
|
||||
if (!IsInitialized()) return false;
|
||||
RETURN_IF_UNINITIALIZED(false);
|
||||
return WithOecReadLock("IsSrmUpdateSupported",
|
||||
[&] { return OEMCrypto_IsSRMUpdateSupported(); });
|
||||
}
|
||||
@@ -1929,10 +1952,9 @@ CdmResponseType CryptoSession::LoadSrm(const std::string& srm) {
|
||||
return INVALID_SRM_LIST;
|
||||
}
|
||||
|
||||
OEMCryptoResult status;
|
||||
WithOecWriteLock("LoadSrm", [&] {
|
||||
status = OEMCrypto_LoadSRM(reinterpret_cast<const uint8_t*>(srm.data()),
|
||||
srm.size());
|
||||
const OEMCryptoResult status = WithOecWriteLock("LoadSrm", [&] {
|
||||
return OEMCrypto_LoadSRM(reinterpret_cast<const uint8_t*>(srm.data()),
|
||||
srm.size());
|
||||
});
|
||||
|
||||
return MapOEMCryptoResult(status, LOAD_SRM_ERROR, "LoadSRM");
|
||||
@@ -2030,6 +2052,9 @@ bool CryptoSession::GetDecryptHashSupport(SecurityLevel security_level,
|
||||
case OEMCrypto_CRC_Clear_Buffer:
|
||||
case OEMCrypto_Partner_Defined_Hash:
|
||||
break;
|
||||
case OEMCrypto_ERROR_NOT_IMPLEMENTED:
|
||||
*decrypt_hash_support = OEMCrypto_Hash_Not_Supported;
|
||||
break;
|
||||
default:
|
||||
// Not flagging an error since it is only used in test
|
||||
LOGW("OEMCrypto_SupportsDecryptHash unrecognized result = %d",
|
||||
|
||||
Reference in New Issue
Block a user