Add support for SRM
[ Merge of http://go/wvgerrit/22980 ] System Renewability Messages (SRM) contains a list of Key Selection Vectors, which are HDCP Identifiers that have been revoked. During HDCP negotiations a transmitter may authenticate a receiver and verify that its unique identier is not present in the SRM. This CL enables reporting of the current SRM version and whether SRM updates are supported. It also loads SRM updates in the license and specifies SRM version requirements when keys are loaded. Test: All unittests other than some oemcrypto, request_license_test passed. Those tests failed with or without this CL. b/28955520 Change-Id: Id840078ea2deb01d9619c1cd8d367b50452f76cc
This commit is contained in:
@@ -494,6 +494,8 @@ CdmResponseType CdmLicense::HandleKeyResponse(
|
||||
return NO_CONTENT_KEY;
|
||||
}
|
||||
|
||||
if (license.has_srm_update()) crypto_session_->LoadSrm(license.srm_update());
|
||||
|
||||
if (license.id().type() == video_widevine::OFFLINE &&
|
||||
license.policy().can_persist())
|
||||
is_offline_ = true;
|
||||
@@ -511,7 +513,7 @@ CdmResponseType CdmLicense::HandleKeyResponse(
|
||||
|
||||
CdmResponseType resp = crypto_session_->LoadKeys(
|
||||
signed_response.msg(), signed_response.signature(), mac_key_iv, mac_key,
|
||||
key_array, provider_session_token_);
|
||||
key_array, provider_session_token_, license.srm_requirement());
|
||||
|
||||
if (KEY_ADDED == resp) {
|
||||
loaded_keys_.clear();
|
||||
@@ -949,11 +951,18 @@ CdmResponseType CdmLicense::PrepareClientId(
|
||||
}
|
||||
}
|
||||
|
||||
client_capabilities->set_can_update_srm(
|
||||
crypto_session_->IsSrmUpdateSupported());
|
||||
uint16_t srm_version;
|
||||
if (crypto_session_->GetSrmVersion(&srm_version))
|
||||
client_capabilities->set_srm_version(srm_version);
|
||||
|
||||
if (service_certificate_->IsRequired()) {
|
||||
if (!service_certificate_->IsAvailable()) {
|
||||
LOGE("CdmLicense::PrepareClientId: Service Certificate not staged");
|
||||
return LICENSE_REQUEST_SERVICE_CERTIFICATE_GENERATION_ERROR;
|
||||
}
|
||||
|
||||
EncryptedClientIdentification* encrypted_client_id =
|
||||
license_request->mutable_encrypted_client_id();
|
||||
CdmResponseType status;
|
||||
|
||||
Reference in New Issue
Block a user