Cherry pick cdm udc-widevine-release changes to udc-widevine-dev to be in sync with 18.3 release
Merged from go/wvgerrit/178231 Bug: 290252845 Test: WVTS tests seem to be running and passing Change-Id: Ifff9123a73e173e835a6e89ba7c2760e1cd500fd (cherry picked from commit 6889845d2e7e24f22c00b333335c34259b3fc96e)
This commit is contained in:
@@ -4,8 +4,11 @@
|
||||
#include "fuzzing/odk_fuzz_helper.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "core_message_types.h"
|
||||
#include "odk.h"
|
||||
#include "odk_attributes.h"
|
||||
#include "odk_structs.h"
|
||||
|
||||
namespace oemcrypto_core_message {
|
||||
@@ -41,7 +44,8 @@ OEMCryptoResult odk_serialize_LicenseRequest(
|
||||
const ODK_LicenseRequest& core_license_request UNUSED,
|
||||
const ODK_NonceValues* nonce_values) {
|
||||
// TODO(mattfedd): hook up counters to fuzzer
|
||||
const ODK_MessageCounterInfo counter_info = {0};
|
||||
const ODK_MessageCounterInfo counter_info = {0, 0, 0, 0, 0,
|
||||
0, 0, {0}, {0}, {0}};
|
||||
return ODK_PrepareCoreLicenseRequest(out, SIZE_MAX, size, nonce_values,
|
||||
&counter_info);
|
||||
}
|
||||
@@ -58,10 +62,11 @@ OEMCryptoResult odk_serialize_RenewalRequest(
|
||||
|
||||
OEMCryptoResult odk_serialize_ProvisioningRequest(
|
||||
const void* in UNUSED, uint8_t* out, size_t* size,
|
||||
const ODK_ProvisioningRequest& core_provisioning,
|
||||
const ODK_ProvisioningRequest& core_provisioning UNUSED,
|
||||
const ODK_NonceValues* nonce_values) {
|
||||
// TODO(mattfedd): hook up counters to fuzzer
|
||||
const ODK_MessageCounterInfo counter_info = {0};
|
||||
const ODK_MessageCounterInfo counter_info = {0, 0, 0, 0, 0,
|
||||
0, 0, {0}, {0}, {0}};
|
||||
return ODK_PrepareCoreProvisioningRequest(out, SIZE_MAX, size, nonce_values,
|
||||
&counter_info);
|
||||
}
|
||||
@@ -123,13 +128,32 @@ bool kdo_serialize_LicenseResponse(const ODK_ParseLicense_Args* args,
|
||||
const ODK_ParsedLicense& parsed_lic,
|
||||
std::string* oemcrypto_core_message) {
|
||||
const auto& nonce_values = args->nonce_values;
|
||||
ODK_LicenseRequest core_request{nonce_values.api_minor_version,
|
||||
nonce_values.api_major_version,
|
||||
nonce_values.nonce, nonce_values.session_id};
|
||||
const ODK_MessageCounter counter_info = {0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}};
|
||||
ODK_LicenseRequest core_request{
|
||||
nonce_values.api_minor_version, nonce_values.api_major_version,
|
||||
nonce_values.nonce, nonce_values.session_id, counter_info};
|
||||
std::string core_request_sha_256(
|
||||
reinterpret_cast<const char*>(args->request_hash), ODK_SHA256_HASH_SIZE);
|
||||
ODK_Packing_ParsedLicense parsed_license;
|
||||
parsed_license.enc_mac_keys_iv = parsed_lic.enc_mac_keys_iv;
|
||||
parsed_license.enc_mac_keys = parsed_lic.enc_mac_keys;
|
||||
parsed_license.pst = parsed_lic.pst;
|
||||
parsed_license.srm_restriction_data = parsed_lic.srm_restriction_data;
|
||||
parsed_license.license_type = parsed_lic.license_type;
|
||||
parsed_license.nonce_required = parsed_lic.nonce_required;
|
||||
parsed_license.timer_limits = parsed_lic.timer_limits;
|
||||
parsed_license.watermarking = parsed_lic.watermarking;
|
||||
parsed_license.dtcp2_required = parsed_lic.dtcp2_required;
|
||||
parsed_license.renewal_delay_base = parsed_lic.renewal_delay_base;
|
||||
parsed_license.key_array_length = parsed_lic.key_array_length;
|
||||
std::vector<OEMCrypto_KeyObject> key_array;
|
||||
size_t i;
|
||||
for (i = 0; i < parsed_lic.key_array_length; i++) {
|
||||
key_array.push_back(parsed_lic.key_array[i]);
|
||||
}
|
||||
parsed_license.key_array = key_array.data();
|
||||
return serialize::CreateCoreLicenseResponse(
|
||||
CoreMessageFeatures::kDefaultFeatures, parsed_lic, core_request,
|
||||
CoreMessageFeatures::kDefaultFeatures, parsed_license, core_request,
|
||||
core_request_sha_256, oemcrypto_core_message);
|
||||
}
|
||||
|
||||
@@ -155,11 +179,17 @@ bool kdo_serialize_ProvisioningResponse(
|
||||
if (args->device_id_length > sizeof(args->device_id)) {
|
||||
return false;
|
||||
}
|
||||
const ODK_MessageCounter counter_info = {0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}};
|
||||
ODK_ProvisioningRequest core_request{
|
||||
nonce_values.api_minor_version, nonce_values.api_major_version,
|
||||
nonce_values.nonce, nonce_values.session_id,
|
||||
nonce_values.api_minor_version,
|
||||
nonce_values.api_major_version,
|
||||
nonce_values.nonce,
|
||||
nonce_values.session_id,
|
||||
std::string(reinterpret_cast<const char*>(args->device_id),
|
||||
args->device_id_length)};
|
||||
args->device_id_length),
|
||||
0,
|
||||
"",
|
||||
counter_info};
|
||||
return serialize::CreateCoreProvisioningResponse(
|
||||
CoreMessageFeatures::kDefaultFeatures, parsed_prov, core_request,
|
||||
oemcrypto_core_message);
|
||||
|
||||
Reference in New Issue
Block a user