Sign unused renewal so that offline renewal may be loaded am: 80667cbac3
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/12629547 Change-Id: Ic8a236e81d07bbc629cfa9a7a0e46513c2cbac1d
This commit is contained in:
committed by
Automerger Merge Worker
commit
f5896158c1
@@ -123,6 +123,11 @@ class CdmLicense {
|
|||||||
const std::string& mac_key, const std::vector<CryptoKey>& key_array,
|
const std::string& mac_key, const std::vector<CryptoKey>& key_array,
|
||||||
const video_widevine::License& license);
|
const video_widevine::License& license);
|
||||||
|
|
||||||
|
// Prepare to reload a key update message. Some special code is needed to work
|
||||||
|
// around b/166010609.
|
||||||
|
// TODO(b/166007195): Remove this.
|
||||||
|
CdmResponseType PrepareKeyUpdateReload(CdmSession* cdm_session);
|
||||||
|
|
||||||
CdmResponseType HandleNewEntitledKeys(
|
CdmResponseType HandleNewEntitledKeys(
|
||||||
const std::vector<WidevinePsshData_EntitledKey>& wrapped_keys);
|
const std::vector<WidevinePsshData_EntitledKey>& wrapped_keys);
|
||||||
|
|
||||||
|
|||||||
@@ -367,6 +367,25 @@ CdmResponseType CdmLicense::PrepareKeyRequest(
|
|||||||
return KEY_MESSAGE;
|
return KEY_MESSAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(b/166007195): Remove this.
|
||||||
|
CdmResponseType CdmLicense::PrepareKeyUpdateReload(CdmSession* cdm_session) {
|
||||||
|
uint32_t api_version = 0;
|
||||||
|
if (!crypto_session_->GetApiVersion(&api_version)) {
|
||||||
|
LOGW("Unknown API Version");
|
||||||
|
api_version = 15;
|
||||||
|
}
|
||||||
|
if (api_version != 16) return NO_ERROR;
|
||||||
|
// To work around b/166010609, we ask OEMCrypto to prepare an unused renewal
|
||||||
|
// request. This lets the ODK library update its clock saying when the renewal
|
||||||
|
// was signed.
|
||||||
|
constexpr bool is_renewal = true;
|
||||||
|
const CdmAppParameterMap unused_app_parameters;
|
||||||
|
CdmKeyMessage unused_request;
|
||||||
|
std::string unused_url;
|
||||||
|
return PrepareKeyUpdateRequest(is_renewal, unused_app_parameters, cdm_session,
|
||||||
|
&unused_request, &unused_url);
|
||||||
|
}
|
||||||
|
|
||||||
CdmResponseType CdmLicense::PrepareKeyUpdateRequest(
|
CdmResponseType CdmLicense::PrepareKeyUpdateRequest(
|
||||||
bool is_renewal, const CdmAppParameterMap& app_parameters,
|
bool is_renewal, const CdmAppParameterMap& app_parameters,
|
||||||
CdmSession* cdm_session, CdmKeyMessage* signed_request,
|
CdmSession* cdm_session, CdmKeyMessage* signed_request,
|
||||||
@@ -822,6 +841,8 @@ CdmResponseType CdmLicense::RestoreOfflineLicense(
|
|||||||
if (sts != KEY_ADDED) return sts;
|
if (sts != KEY_ADDED) return sts;
|
||||||
|
|
||||||
if (!license_renewal_response.empty()) {
|
if (!license_renewal_response.empty()) {
|
||||||
|
sts = PrepareKeyUpdateReload(cdm_session);
|
||||||
|
if (sts != KEY_MESSAGE) return sts;
|
||||||
sts = HandleKeyUpdateResponse(true, license_renewal_response);
|
sts = HandleKeyUpdateResponse(true, license_renewal_response);
|
||||||
if (sts != KEY_ADDED) return sts;
|
if (sts != KEY_ADDED) return sts;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user