Merge "Release crypto resources when provisioning fails" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d1db6df88b
@@ -194,6 +194,16 @@ CdmResponseType CertificateProvisioning::GetProvisioningRequest(
|
||||
const std::string& cert_authority, const std::string& origin,
|
||||
const std::string& spoid, CdmProvisioningRequest* request,
|
||||
std::string* default_url) {
|
||||
return CloseSessionOnError(GetProvisioningRequestInternal(
|
||||
requested_security_level, cert_type, cert_authority, origin, spoid,
|
||||
request, default_url));
|
||||
}
|
||||
|
||||
CdmResponseType CertificateProvisioning::GetProvisioningRequestInternal(
|
||||
SecurityLevel requested_security_level, CdmCertificateType cert_type,
|
||||
const std::string& cert_authority, const std::string& origin,
|
||||
const std::string& spoid, CdmProvisioningRequest* request,
|
||||
std::string* default_url) {
|
||||
if (!request || !default_url) {
|
||||
LOGE("Output parameter |%s| is not provided",
|
||||
request ? "default_url" : "request");
|
||||
@@ -202,7 +212,7 @@ CdmResponseType CertificateProvisioning::GetProvisioningRequest(
|
||||
|
||||
default_url->assign(kProvisioningServerUrl);
|
||||
|
||||
if (crypto_session_->IsOpen()) crypto_session_->Close();
|
||||
CloseSession();
|
||||
CdmResponseType status = crypto_session_->Open(requested_security_level);
|
||||
if (NO_ERROR != status) {
|
||||
LOGE("Failed to create a crypto session: status = %d",
|
||||
@@ -423,7 +433,7 @@ CdmResponseType CertificateProvisioning::HandleProvisioningResponse(
|
||||
}
|
||||
|
||||
const CdmSecurityLevel security_level = crypto_session_->GetSecurityLevel();
|
||||
crypto_session_->Close();
|
||||
CloseSession();
|
||||
|
||||
// This is the entire certificate (SignedDrmCertificate).
|
||||
const std::string& device_cert_data =
|
||||
@@ -520,4 +530,14 @@ bool CertificateProvisioning::ExtractDeviceInfo(
|
||||
return true;
|
||||
}
|
||||
|
||||
void CertificateProvisioning::CloseSession() {
|
||||
if (crypto_session_->IsOpen()) crypto_session_->Close();
|
||||
}
|
||||
|
||||
CdmResponseType CertificateProvisioning::CloseSessionOnError(
|
||||
CdmResponseType status) {
|
||||
if (status != NO_ERROR) CloseSession();
|
||||
return status;
|
||||
}
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
Reference in New Issue
Block a user