diff --git a/libwvdrmengine/cdm/core/src/license.cpp b/libwvdrmengine/cdm/core/src/license.cpp index f34b4f78..a6585d34 100644 --- a/libwvdrmengine/cdm/core/src/license.cpp +++ b/libwvdrmengine/cdm/core/src/license.cpp @@ -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; diff --git a/libwvdrmengine/cdm/core/test/test_base.cpp b/libwvdrmengine/cdm/core/test/test_base.cpp index f3b90bc1..29adcfca 100644 --- a/libwvdrmengine/cdm/core/test/test_base.cpp +++ b/libwvdrmengine/cdm/core/test/test_base.cpp @@ -562,6 +562,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, diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index 3b00e13f..caf0ae10 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -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) { diff --git a/libwvdrmengine/cdm/test/cdm_feature_test.cpp b/libwvdrmengine/cdm/test/cdm_feature_test.cpp index 5d1f4bf1..254848dd 100644 --- a/libwvdrmengine/cdm/test/cdm_feature_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_feature_test.cpp @@ -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( diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index ed36edee..c272d474 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -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(