Fix ODK warning errors for WV DRM
PiperOrigin-RevId: 525266553 Merged from https://widevine-internal-review.googlesource.com/169640 Change-Id: Id92dac068a2b2f767287641170f7b522f54588e4
This commit is contained in:
@@ -25,14 +25,13 @@ namespace {
|
||||
* computing the API version of the response.
|
||||
*
|
||||
* Template arguments:
|
||||
* T: struct to be deserialized by odk
|
||||
* S: kdo input struct
|
||||
*/
|
||||
template <typename T, typename S>
|
||||
template <typename S>
|
||||
bool CreateResponseHeader(const CoreMessageFeatures& features,
|
||||
ODK_MessageType message_type,
|
||||
ODK_CoreMessage* response_header,
|
||||
const S& core_request, T& response) {
|
||||
const S& core_request) {
|
||||
// Bad major version.
|
||||
if ((features.maximum_major_version > ODK_MAJOR_VERSION) ||
|
||||
(features.maximum_major_version == ODK_MAJOR_VERSION &&
|
||||
@@ -68,11 +67,10 @@ bool CreateResponseHeader(const CoreMessageFeatures& features,
|
||||
*
|
||||
* Template arguments:
|
||||
* T: struct to be deserialized by odk
|
||||
* S: kdo input struct
|
||||
* P: auto-generated serializing function for |T|
|
||||
*/
|
||||
template <typename T, typename S, typename P>
|
||||
bool CreateResponse(ODK_MessageType message_type, const S& core_request,
|
||||
template <typename T, typename P>
|
||||
bool CreateResponse(ODK_MessageType message_type,
|
||||
std::string* oemcrypto_core_message,
|
||||
ODK_CoreMessage* response_header, T& response,
|
||||
const P& packer) {
|
||||
@@ -125,8 +123,7 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
||||
ODK_LicenseResponse license_response{
|
||||
{}, const_cast<ODK_ParsedLicense*>(&parsed_lic)};
|
||||
if (!CreateResponseHeader(features, ODK_License_Response_Type,
|
||||
&license_response.core_message, core_request,
|
||||
license_response)) {
|
||||
&license_response.core_message, core_request)) {
|
||||
return false;
|
||||
}
|
||||
if (ODK_MAX_NUM_KEYS < license_response.parsed_license->key_array_length) {
|
||||
@@ -162,8 +159,7 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
||||
return false;
|
||||
memcpy(license_response_v16.request_hash, core_request_sha256.data(),
|
||||
sizeof(license_response_v16.request_hash));
|
||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
||||
oemcrypto_core_message,
|
||||
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||
&license_response_v16.request.core_message,
|
||||
license_response_v16, Pack_ODK_LicenseResponseV16);
|
||||
} else if (license_response.core_message.nonce_values.api_major_version ==
|
||||
@@ -222,14 +218,13 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
||||
return false;
|
||||
memcpy(license_response_v17.request_hash, core_request_sha256.data(),
|
||||
sizeof(license_response_v17.request_hash));
|
||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
||||
oemcrypto_core_message,
|
||||
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||
&license_response_v17.request.core_message,
|
||||
license_response_v17, Pack_ODK_LicenseResponseV17);
|
||||
}
|
||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
||||
oemcrypto_core_message, &license_response.core_message,
|
||||
license_response, Pack_ODK_LicenseResponse);
|
||||
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||
&license_response.core_message, license_response,
|
||||
Pack_ODK_LicenseResponse);
|
||||
}
|
||||
|
||||
bool CreateCoreRenewalResponse(const CoreMessageFeatures& features,
|
||||
@@ -241,11 +236,10 @@ bool CreateCoreRenewalResponse(const CoreMessageFeatures& features,
|
||||
renewal_response.renewal_duration_seconds = renewal_duration_seconds;
|
||||
if (!CreateResponseHeader(features, ODK_Renewal_Response_Type,
|
||||
&renewal_response.request.core_message,
|
||||
core_request, renewal_response)) {
|
||||
core_request)) {
|
||||
return false;
|
||||
}
|
||||
return CreateResponse(ODK_Renewal_Response_Type, core_request,
|
||||
oemcrypto_core_message,
|
||||
return CreateResponse(ODK_Renewal_Response_Type, oemcrypto_core_message,
|
||||
&renewal_response.request.core_message,
|
||||
renewal_response, Pack_ODK_RenewalResponse);
|
||||
}
|
||||
@@ -257,8 +251,7 @@ bool CreateCoreProvisioningResponse(const CoreMessageFeatures& features,
|
||||
ODK_ProvisioningResponse prov_response{
|
||||
{}, const_cast<ODK_ParsedProvisioning*>(&parsed_prov)};
|
||||
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
||||
&prov_response.core_message, core_request,
|
||||
prov_response)) {
|
||||
&prov_response.core_message, core_request)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -269,15 +262,15 @@ bool CreateCoreProvisioningResponse(const CoreMessageFeatures& features,
|
||||
}
|
||||
prov_response_v16.request.core_message = prov_response.core_message;
|
||||
prov_response_v16.parsed_provisioning = prov_response.parsed_provisioning;
|
||||
return CreateResponse(ODK_Provisioning_Response_Type, core_request,
|
||||
return CreateResponse(ODK_Provisioning_Response_Type,
|
||||
oemcrypto_core_message,
|
||||
&prov_response_v16.request.core_message,
|
||||
prov_response_v16, Pack_ODK_ProvisioningResponseV16);
|
||||
}
|
||||
|
||||
return CreateResponse(ODK_Provisioning_Response_Type, core_request,
|
||||
oemcrypto_core_message, &prov_response.core_message,
|
||||
prov_response, Pack_ODK_ProvisioningResponse);
|
||||
return CreateResponse(ODK_Provisioning_Response_Type, oemcrypto_core_message,
|
||||
&prov_response.core_message, prov_response,
|
||||
Pack_ODK_ProvisioningResponse);
|
||||
}
|
||||
|
||||
bool CreateCoreProvisioning40Response(
|
||||
@@ -286,13 +279,12 @@ bool CreateCoreProvisioning40Response(
|
||||
std::string* oemcrypto_core_message) {
|
||||
ODK_Provisioning40Response prov_response = {};
|
||||
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
||||
&prov_response.core_message, core_request,
|
||||
prov_response)) {
|
||||
&prov_response.core_message, core_request)) {
|
||||
return false;
|
||||
}
|
||||
return CreateResponse(ODK_Provisioning_Response_Type, core_request,
|
||||
oemcrypto_core_message, &prov_response.core_message,
|
||||
prov_response, Pack_ODK_Provisioning40Response);
|
||||
return CreateResponse(ODK_Provisioning_Response_Type, oemcrypto_core_message,
|
||||
&prov_response.core_message, prov_response,
|
||||
Pack_ODK_Provisioning40Response);
|
||||
}
|
||||
|
||||
} // namespace serialize
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "core_message_types.h"
|
||||
#include "odk.h"
|
||||
#include "odk_attributes.h"
|
||||
#include "odk_structs.h"
|
||||
|
||||
namespace oemcrypto_core_message {
|
||||
@@ -41,7 +43,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 +61,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,9 +127,10 @@ 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);
|
||||
return serialize::CreateCoreLicenseResponse(
|
||||
@@ -155,11 +160,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