Allow a service certificate to be specified for provisioning
[ Merge of http://go/wvgerrit/48400 ] Client identification information has recently been enabled in provisioning messages. For privacy concerns this information is being encrypted with a default service certificate. Apps need to be able to override the default one to allow for provisioning with third party provisioning services. Bug: 78420508 Test: WV unit, integration tests New WvCdmRequestLicenseTest.ProvisioningTestWithServiceCertificate test GTS MediaDrmTestCases Change-Id: Iee61ad47d33ce011efbea4eb90f7e4b1f032d15f
This commit is contained in:
@@ -370,11 +370,10 @@ status_t WVDrmPlugin::getProvisionRequest(const String8& cert_type,
|
||||
|
||||
string cdmCertAuthority = cert_authority.string();
|
||||
|
||||
CdmResponseType res = mCDM->GetProvisioningRequest(cdmCertType,
|
||||
cdmCertAuthority,
|
||||
mCdmIdentifier,
|
||||
&cdmProvisionRequest,
|
||||
&cdmDefaultUrl);
|
||||
CdmResponseType res = mCDM->GetProvisioningRequest(
|
||||
cdmCertType, cdmCertAuthority, mCdmIdentifier,
|
||||
mProvisioningServiceCertificate, &cdmProvisionRequest,
|
||||
&cdmDefaultUrl);
|
||||
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
request = ToVector(cdmProvisionRequest);
|
||||
@@ -541,6 +540,8 @@ status_t WVDrmPlugin::getPropertyByteArray(const String8& name,
|
||||
return queryProperty(QUERY_KEY_PROVISIONING_ID, value);
|
||||
} else if (name == "serviceCertificate") {
|
||||
value = ToVector(mPropertySet.service_certificate());
|
||||
} else if (name == "provisioningServiceCertificate") {
|
||||
value = ToVector(mProvisioningServiceCertificate);
|
||||
} else if (name == "metrics") {
|
||||
std::string serialized_metrics;
|
||||
drm_metrics::WvCdmMetrics metrics;
|
||||
@@ -642,6 +643,13 @@ status_t WVDrmPlugin::setPropertyByteArray(const String8& name,
|
||||
} else {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
} else if (name == "provisioningServiceCertificate") {
|
||||
std::string cert(value.begin(), value.end());
|
||||
if (value.isEmpty() || mCDM->IsValidServiceCertificate(cert)) {
|
||||
mProvisioningServiceCertificate = cert;
|
||||
} else {
|
||||
return android::BAD_VALUE;
|
||||
}
|
||||
} else {
|
||||
ALOGE("App set unknown byte array property %s", name.string());
|
||||
return android::ERROR_DRM_CANNOT_HANDLE;
|
||||
|
||||
Reference in New Issue
Block a user