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 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(
|
||||
const std::vector<WidevinePsshData_EntitledKey>& wrapped_keys);
|
||||
|
||||
|
||||
@@ -367,6 +367,25 @@ CdmResponseType CdmLicense::PrepareKeyRequest(
|
||||
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(
|
||||
bool is_renewal, const CdmAppParameterMap& app_parameters,
|
||||
CdmSession* cdm_session, CdmKeyMessage* signed_request,
|
||||
@@ -822,6 +841,8 @@ CdmResponseType CdmLicense::RestoreOfflineLicense(
|
||||
if (sts != KEY_ADDED) return sts;
|
||||
|
||||
if (!license_renewal_response.empty()) {
|
||||
sts = PrepareKeyUpdateReload(cdm_session);
|
||||
if (sts != KEY_MESSAGE) return sts;
|
||||
sts = HandleKeyUpdateResponse(true, license_renewal_response);
|
||||
if (sts != KEY_ADDED) return sts;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user