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.
|
* computing the API version of the response.
|
||||||
*
|
*
|
||||||
* Template arguments:
|
* Template arguments:
|
||||||
* T: struct to be deserialized by odk
|
|
||||||
* S: kdo input struct
|
* S: kdo input struct
|
||||||
*/
|
*/
|
||||||
template <typename T, typename S>
|
template <typename S>
|
||||||
bool CreateResponseHeader(const CoreMessageFeatures& features,
|
bool CreateResponseHeader(const CoreMessageFeatures& features,
|
||||||
ODK_MessageType message_type,
|
ODK_MessageType message_type,
|
||||||
ODK_CoreMessage* response_header,
|
ODK_CoreMessage* response_header,
|
||||||
const S& core_request, T& response) {
|
const S& core_request) {
|
||||||
// Bad major version.
|
// Bad major version.
|
||||||
if ((features.maximum_major_version > ODK_MAJOR_VERSION) ||
|
if ((features.maximum_major_version > ODK_MAJOR_VERSION) ||
|
||||||
(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:
|
* Template arguments:
|
||||||
* T: struct to be deserialized by odk
|
* T: struct to be deserialized by odk
|
||||||
* S: kdo input struct
|
|
||||||
* P: auto-generated serializing function for |T|
|
* P: auto-generated serializing function for |T|
|
||||||
*/
|
*/
|
||||||
template <typename T, typename S, typename P>
|
template <typename T, typename P>
|
||||||
bool CreateResponse(ODK_MessageType message_type, const S& core_request,
|
bool CreateResponse(ODK_MessageType message_type,
|
||||||
std::string* oemcrypto_core_message,
|
std::string* oemcrypto_core_message,
|
||||||
ODK_CoreMessage* response_header, T& response,
|
ODK_CoreMessage* response_header, T& response,
|
||||||
const P& packer) {
|
const P& packer) {
|
||||||
@@ -125,8 +123,7 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
|||||||
ODK_LicenseResponse license_response{
|
ODK_LicenseResponse license_response{
|
||||||
{}, const_cast<ODK_ParsedLicense*>(&parsed_lic)};
|
{}, const_cast<ODK_ParsedLicense*>(&parsed_lic)};
|
||||||
if (!CreateResponseHeader(features, ODK_License_Response_Type,
|
if (!CreateResponseHeader(features, ODK_License_Response_Type,
|
||||||
&license_response.core_message, core_request,
|
&license_response.core_message, core_request)) {
|
||||||
license_response)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (ODK_MAX_NUM_KEYS < license_response.parsed_license->key_array_length) {
|
if (ODK_MAX_NUM_KEYS < license_response.parsed_license->key_array_length) {
|
||||||
@@ -162,8 +159,7 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
|||||||
return false;
|
return false;
|
||||||
memcpy(license_response_v16.request_hash, core_request_sha256.data(),
|
memcpy(license_response_v16.request_hash, core_request_sha256.data(),
|
||||||
sizeof(license_response_v16.request_hash));
|
sizeof(license_response_v16.request_hash));
|
||||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message,
|
|
||||||
&license_response_v16.request.core_message,
|
&license_response_v16.request.core_message,
|
||||||
license_response_v16, Pack_ODK_LicenseResponseV16);
|
license_response_v16, Pack_ODK_LicenseResponseV16);
|
||||||
} else if (license_response.core_message.nonce_values.api_major_version ==
|
} else if (license_response.core_message.nonce_values.api_major_version ==
|
||||||
@@ -222,14 +218,13 @@ bool CreateCoreLicenseResponse(const CoreMessageFeatures& features,
|
|||||||
return false;
|
return false;
|
||||||
memcpy(license_response_v17.request_hash, core_request_sha256.data(),
|
memcpy(license_response_v17.request_hash, core_request_sha256.data(),
|
||||||
sizeof(license_response_v17.request_hash));
|
sizeof(license_response_v17.request_hash));
|
||||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message,
|
|
||||||
&license_response_v17.request.core_message,
|
&license_response_v17.request.core_message,
|
||||||
license_response_v17, Pack_ODK_LicenseResponseV17);
|
license_response_v17, Pack_ODK_LicenseResponseV17);
|
||||||
}
|
}
|
||||||
return CreateResponse(ODK_License_Response_Type, core_request,
|
return CreateResponse(ODK_License_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message, &license_response.core_message,
|
&license_response.core_message, license_response,
|
||||||
license_response, Pack_ODK_LicenseResponse);
|
Pack_ODK_LicenseResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CreateCoreRenewalResponse(const CoreMessageFeatures& features,
|
bool CreateCoreRenewalResponse(const CoreMessageFeatures& features,
|
||||||
@@ -241,11 +236,10 @@ bool CreateCoreRenewalResponse(const CoreMessageFeatures& features,
|
|||||||
renewal_response.renewal_duration_seconds = renewal_duration_seconds;
|
renewal_response.renewal_duration_seconds = renewal_duration_seconds;
|
||||||
if (!CreateResponseHeader(features, ODK_Renewal_Response_Type,
|
if (!CreateResponseHeader(features, ODK_Renewal_Response_Type,
|
||||||
&renewal_response.request.core_message,
|
&renewal_response.request.core_message,
|
||||||
core_request, renewal_response)) {
|
core_request)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return CreateResponse(ODK_Renewal_Response_Type, core_request,
|
return CreateResponse(ODK_Renewal_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message,
|
|
||||||
&renewal_response.request.core_message,
|
&renewal_response.request.core_message,
|
||||||
renewal_response, Pack_ODK_RenewalResponse);
|
renewal_response, Pack_ODK_RenewalResponse);
|
||||||
}
|
}
|
||||||
@@ -257,8 +251,7 @@ bool CreateCoreProvisioningResponse(const CoreMessageFeatures& features,
|
|||||||
ODK_ProvisioningResponse prov_response{
|
ODK_ProvisioningResponse prov_response{
|
||||||
{}, const_cast<ODK_ParsedProvisioning*>(&parsed_prov)};
|
{}, const_cast<ODK_ParsedProvisioning*>(&parsed_prov)};
|
||||||
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
||||||
&prov_response.core_message, core_request,
|
&prov_response.core_message, core_request)) {
|
||||||
prov_response)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,15 +262,15 @@ bool CreateCoreProvisioningResponse(const CoreMessageFeatures& features,
|
|||||||
}
|
}
|
||||||
prov_response_v16.request.core_message = prov_response.core_message;
|
prov_response_v16.request.core_message = prov_response.core_message;
|
||||||
prov_response_v16.parsed_provisioning = prov_response.parsed_provisioning;
|
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,
|
oemcrypto_core_message,
|
||||||
&prov_response_v16.request.core_message,
|
&prov_response_v16.request.core_message,
|
||||||
prov_response_v16, Pack_ODK_ProvisioningResponseV16);
|
prov_response_v16, Pack_ODK_ProvisioningResponseV16);
|
||||||
}
|
}
|
||||||
|
|
||||||
return CreateResponse(ODK_Provisioning_Response_Type, core_request,
|
return CreateResponse(ODK_Provisioning_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message, &prov_response.core_message,
|
&prov_response.core_message, prov_response,
|
||||||
prov_response, Pack_ODK_ProvisioningResponse);
|
Pack_ODK_ProvisioningResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CreateCoreProvisioning40Response(
|
bool CreateCoreProvisioning40Response(
|
||||||
@@ -286,13 +279,12 @@ bool CreateCoreProvisioning40Response(
|
|||||||
std::string* oemcrypto_core_message) {
|
std::string* oemcrypto_core_message) {
|
||||||
ODK_Provisioning40Response prov_response = {};
|
ODK_Provisioning40Response prov_response = {};
|
||||||
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
if (!CreateResponseHeader(features, ODK_Provisioning_Response_Type,
|
||||||
&prov_response.core_message, core_request,
|
&prov_response.core_message, core_request)) {
|
||||||
prov_response)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return CreateResponse(ODK_Provisioning_Response_Type, core_request,
|
return CreateResponse(ODK_Provisioning_Response_Type, oemcrypto_core_message,
|
||||||
oemcrypto_core_message, &prov_response.core_message,
|
&prov_response.core_message, prov_response,
|
||||||
prov_response, Pack_ODK_Provisioning40Response);
|
Pack_ODK_Provisioning40Response);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace serialize
|
} // namespace serialize
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "core_message_types.h"
|
||||||
#include "odk.h"
|
#include "odk.h"
|
||||||
|
#include "odk_attributes.h"
|
||||||
#include "odk_structs.h"
|
#include "odk_structs.h"
|
||||||
|
|
||||||
namespace oemcrypto_core_message {
|
namespace oemcrypto_core_message {
|
||||||
@@ -41,7 +43,8 @@ OEMCryptoResult odk_serialize_LicenseRequest(
|
|||||||
const ODK_LicenseRequest& core_license_request UNUSED,
|
const ODK_LicenseRequest& core_license_request UNUSED,
|
||||||
const ODK_NonceValues* nonce_values) {
|
const ODK_NonceValues* nonce_values) {
|
||||||
// TODO(mattfedd): hook up counters to fuzzer
|
// 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,
|
return ODK_PrepareCoreLicenseRequest(out, SIZE_MAX, size, nonce_values,
|
||||||
&counter_info);
|
&counter_info);
|
||||||
}
|
}
|
||||||
@@ -58,10 +61,11 @@ OEMCryptoResult odk_serialize_RenewalRequest(
|
|||||||
|
|
||||||
OEMCryptoResult odk_serialize_ProvisioningRequest(
|
OEMCryptoResult odk_serialize_ProvisioningRequest(
|
||||||
const void* in UNUSED, uint8_t* out, size_t* size,
|
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) {
|
const ODK_NonceValues* nonce_values) {
|
||||||
// TODO(mattfedd): hook up counters to fuzzer
|
// 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,
|
return ODK_PrepareCoreProvisioningRequest(out, SIZE_MAX, size, nonce_values,
|
||||||
&counter_info);
|
&counter_info);
|
||||||
}
|
}
|
||||||
@@ -123,9 +127,10 @@ bool kdo_serialize_LicenseResponse(const ODK_ParseLicense_Args* args,
|
|||||||
const ODK_ParsedLicense& parsed_lic,
|
const ODK_ParsedLicense& parsed_lic,
|
||||||
std::string* oemcrypto_core_message) {
|
std::string* oemcrypto_core_message) {
|
||||||
const auto& nonce_values = args->nonce_values;
|
const auto& nonce_values = args->nonce_values;
|
||||||
ODK_LicenseRequest core_request{nonce_values.api_minor_version,
|
const ODK_MessageCounter counter_info = {0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}};
|
||||||
nonce_values.api_major_version,
|
ODK_LicenseRequest core_request{
|
||||||
nonce_values.nonce, nonce_values.session_id};
|
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(
|
std::string core_request_sha_256(
|
||||||
reinterpret_cast<const char*>(args->request_hash), ODK_SHA256_HASH_SIZE);
|
reinterpret_cast<const char*>(args->request_hash), ODK_SHA256_HASH_SIZE);
|
||||||
return serialize::CreateCoreLicenseResponse(
|
return serialize::CreateCoreLicenseResponse(
|
||||||
@@ -155,11 +160,17 @@ bool kdo_serialize_ProvisioningResponse(
|
|||||||
if (args->device_id_length > sizeof(args->device_id)) {
|
if (args->device_id_length > sizeof(args->device_id)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
const ODK_MessageCounter counter_info = {0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}};
|
||||||
ODK_ProvisioningRequest core_request{
|
ODK_ProvisioningRequest core_request{
|
||||||
nonce_values.api_minor_version, nonce_values.api_major_version,
|
nonce_values.api_minor_version,
|
||||||
nonce_values.nonce, nonce_values.session_id,
|
nonce_values.api_major_version,
|
||||||
|
nonce_values.nonce,
|
||||||
|
nonce_values.session_id,
|
||||||
std::string(reinterpret_cast<const char*>(args->device_id),
|
std::string(reinterpret_cast<const char*>(args->device_id),
|
||||||
args->device_id_length)};
|
args->device_id_length),
|
||||||
|
0,
|
||||||
|
"",
|
||||||
|
counter_info};
|
||||||
return serialize::CreateCoreProvisioningResponse(
|
return serialize::CreateCoreProvisioningResponse(
|
||||||
CoreMessageFeatures::kDefaultFeatures, parsed_prov, core_request,
|
CoreMessageFeatures::kDefaultFeatures, parsed_prov, core_request,
|
||||||
oemcrypto_core_message);
|
oemcrypto_core_message);
|
||||||
|
|||||||
Reference in New Issue
Block a user