Snap for 6496827 from f667ccaaef to sc-release
Change-Id: I57266aa41b758fa5e0c2580148206fb3d790025d
This commit is contained in:
@@ -702,12 +702,13 @@ CdmResponseType CdmLicense::HandleKeyUpdateResponse(
|
||||
return INVALID_LICENSE_TYPE;
|
||||
}
|
||||
|
||||
// At this point of the license life-cycle (handling a renewal or
|
||||
// release), we should already know if the license is v15 or not.
|
||||
// If license is v16, then there should be a |core_message|
|
||||
// present; otherwise there might have beeen some tampering with the
|
||||
// request or response.
|
||||
if (supports_core_messages() &&
|
||||
// At this point of the license life-cycle (handling a renewal), we should
|
||||
// already know if the license is v15 or not. If license is v16, then a
|
||||
// renewal should have a |core_message| present; otherwise there might have
|
||||
// been some tampering with the request or response. On the other hand, a
|
||||
// release is processed without loading the license, so OEMCrypto does not
|
||||
// know if it is v15 or v16, and will not add a core message.
|
||||
if (is_renewal && supports_core_messages() &&
|
||||
(!signed_response.has_oemcrypto_core_message() ||
|
||||
signed_response.oemcrypto_core_message().empty())) {
|
||||
LOGE("Renewal response is missing |core_message| field");
|
||||
@@ -720,8 +721,9 @@ CdmResponseType CdmLicense::HandleKeyUpdateResponse(
|
||||
}
|
||||
const std::string& signed_message = signed_response.msg();
|
||||
const std::string core_message =
|
||||
supports_core_messages() ? signed_response.oemcrypto_core_message()
|
||||
: std::string();
|
||||
signed_response.has_oemcrypto_core_message()
|
||||
? signed_response.oemcrypto_core_message()
|
||||
: std::string();
|
||||
const std::string& signature = signed_response.signature();
|
||||
|
||||
License license;
|
||||
|
||||
@@ -531,6 +531,7 @@ void TestLicenseHolder::GenerateKeyRequest(
|
||||
CdmAppParameterMap app_parameters;
|
||||
CdmKeySetId key_set_id;
|
||||
InitializationData init_data(init_data_type_string, key_id);
|
||||
if (g_cutoff >= LOG_DEBUG) init_data.DumpToLogs();
|
||||
CdmKeyRequest key_request;
|
||||
CdmResponseType result = cdm_engine_->GenerateKeyRequest(
|
||||
session_id_, key_set_id, init_data, kLicenseTypeStreaming, app_parameters,
|
||||
|
||||
@@ -268,9 +268,13 @@ class WvCdmExtendedDurationTest : public WvCdmTestBase {
|
||||
CdmResponseType *response) {
|
||||
CdmAppParameterMap app_parameters;
|
||||
CdmKeyRequest key_request;
|
||||
|
||||
const std::string init_data_type = "video/mp4";
|
||||
if (g_cutoff >= LOG_DEBUG) {
|
||||
InitializationData parsed_init_data(init_data_type, init_data);
|
||||
parsed_init_data.DumpToLogs();
|
||||
}
|
||||
*response = decryptor_->GenerateKeyRequest(
|
||||
session_id_, key_set_id_, "video/mp4", init_data,
|
||||
session_id_, key_set_id_, init_data_type, init_data,
|
||||
license_type, app_parameters, nullptr,
|
||||
kDefaultCdmIdentifier, &key_request);
|
||||
if (*response == KEY_MESSAGE) {
|
||||
|
||||
@@ -326,6 +326,10 @@ class WvCdmFeatureTest : public WvCdmTestBase {
|
||||
CdmKeyRequest key_request;
|
||||
std::string key_set_id;
|
||||
license_type_ = license_type;
|
||||
if (g_cutoff >= LOG_DEBUG) {
|
||||
InitializationData parsed_init_data(init_data_type, init_data);
|
||||
parsed_init_data.DumpToLogs();
|
||||
}
|
||||
EXPECT_EQ(
|
||||
expected_response,
|
||||
decryptor_.GenerateKeyRequest(
|
||||
|
||||
@@ -1776,6 +1776,10 @@ class WvCdmRequestLicenseTest : public WvCdmTestBase {
|
||||
CdmKeyRequest key_request;
|
||||
std::string key_set_id;
|
||||
license_type_ = license_type;
|
||||
if (g_cutoff >= LOG_DEBUG) {
|
||||
InitializationData parsed_init_data(init_data_type, init_data);
|
||||
parsed_init_data.DumpToLogs();
|
||||
}
|
||||
EXPECT_EQ(
|
||||
expected_response,
|
||||
decryptor_->GenerateKeyRequest(
|
||||
|
||||
@@ -88,15 +88,23 @@ OEMCryptoResult odk_deserialize_RenewalResponse(
|
||||
OEMCryptoResult err =
|
||||
ODK_ParseRenewal(buf, SIZE_MAX, len, nonce_values, a->system_time,
|
||||
&a->timer_limits, &a->clock_values, &timer_value);
|
||||
if (OEMCrypto_SUCCESS == err) {
|
||||
Message* msg = nullptr;
|
||||
AllocateMessage(&msg, message_block);
|
||||
InitMessage(msg, const_cast<uint8_t*>(buf), len);
|
||||
SetSize(msg, len);
|
||||
Unpack_ODK_PreparedRenewalRequest(msg, renewal_msg);
|
||||
assert(ValidMessage(msg));
|
||||
const bool is_parse_renewal_response_successful =
|
||||
err == ODK_SET_TIMER || err == ODK_DISABLE_TIMER ||
|
||||
err == ODK_TIMER_EXPIRED || err == ODK_STALE_RENEWAL;
|
||||
if (!is_parse_renewal_response_successful) {
|
||||
return err;
|
||||
}
|
||||
return err;
|
||||
// In order to capture playback_time information which is part of
|
||||
// renewal_msg and will be later used in kdo_serialize_RenewalResponse in
|
||||
// odk_kdo method, we call Unpack_ODK_PreparedRenewalRequest private method.
|
||||
// playback_time cannot be captured from publicly exposed API
|
||||
// ODK_ParseRenewal.
|
||||
Message* msg = nullptr;
|
||||
AllocateMessage(&msg, message_block);
|
||||
InitMessage(msg, const_cast<uint8_t*>(buf), len);
|
||||
SetSize(msg, len);
|
||||
Unpack_ODK_PreparedRenewalRequest(msg, renewal_msg);
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
|
||||
OEMCryptoResult odk_deserialize_ProvisioningResponse(
|
||||
|
||||
Reference in New Issue
Block a user