Changes included in this CL: 166806: Update OEMCrypto_GetDeviceInformation() | https://widevine-internal-review.googlesource.com/c/cdm/+/166806 166808: Update Android L3 after OEMCrypto_GetDeviceInformation() signature changes | https://widevine-internal-review.googlesource.com/c/cdm/+/166808 166809: Decode device info and write it to CSR payload | https://widevine-internal-review.googlesource.com/c/cdm/+/166809 167158: Fix Android include path and copy_files | https://widevine-internal-review.googlesource.com/c/cdm/+/167158 167159: Fix common typos and use inclusive language suggested by Android linter | https://widevine-internal-review.googlesource.com/c/cdm/+/167159 165618: Explicitly state python3 where needed. | https://widevine-internal-review.googlesource.com/c/cdm/+/165618 166757: Update Android.bp for Android | https://widevine-internal-review.googlesource.com/c/cdm/+/166757 164993: Refactor basic oemcrypto unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/164993 164978: Update OEMCrypto Unit Test Docs | https://widevine-internal-review.googlesource.com/c/cdm/+/164978 166941: Update make files for OEMCrypto | https://widevine-internal-review.googlesource.com/c/cdm/+/166941 165279: Refactor license unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/165279 165318: Refactor provisioning unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/165318 164800: Add extra check for renew on license load unit test | https://widevine-internal-review.googlesource.com/c/cdm/+/164800 165860: Remove duplicate definition of MaybeHex() | https://widevine-internal-review.googlesource.com/c/cdm/+/165860 164889: Updated CoreCommonRequestFromMessage and fix test | https://widevine-internal-review.googlesource.com/c/cdm/+/164889 164967: Add OPK pre-hook and post-hook error codes | https://widevine-internal-review.googlesource.com/c/cdm/+/164967 165140: Add hidden device_id_length to v18 provisioning message | https://widevine-internal-review.googlesource.com/c/cdm/+/165140 165204: Fix memory leak in oemcrypto test | https://widevine-internal-review.googlesource.com/c/cdm/+/165204 165958: Fix oemcrypto_generic_verify_fuzz mutator signature offset | https://widevine-internal-review.googlesource.com/c/cdm/+/165958 166037: Support SHA-256 in OEMCrypto Session Util | https://widevine-internal-review.googlesource.com/c/cdm/+/166037 Test: Run GtsMediaTests on Pixel 7 Bug: 270612144 Change-Id: Iff0820a2de7d043a820470a130af65b0dcadb759
121 lines
3.8 KiB
C++
121 lines
3.8 KiB
C++
// Copyright 2019 Google LLC. All rights reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine
|
|
// License Agreement.
|
|
|
|
#ifndef WIDEVINE_ODK_TEST_ODK_TEST_HELPER_H_
|
|
#define WIDEVINE_ODK_TEST_ODK_TEST_HELPER_H_
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "odk_structs.h"
|
|
#include "odk_structs_priv.h"
|
|
|
|
namespace wvodk_test {
|
|
|
|
enum ODK_FieldType {
|
|
ODK_UINT8,
|
|
ODK_UINT16,
|
|
ODK_UINT32,
|
|
ODK_UINT64,
|
|
ODK_SUBSTRING,
|
|
ODK_DEVICEID,
|
|
ODK_DEVICEINFO,
|
|
ODK_MESSAGECOUNTER,
|
|
ODK_RENEWALDATA,
|
|
ODK_HASH,
|
|
// The "stressable" types are the ones we can put in a stress test that packs
|
|
// and unpacks random data and can expect to get back the same thing.
|
|
ODK_LAST_STRESSABLE_TYPE,
|
|
// Put boolean after ODK_LAST_STRESSABLE_TYPE, so that we skip boolean type in
|
|
// SerializeFieldsStress because we unpack any nonzero to 'true'.
|
|
ODK_BOOL,
|
|
};
|
|
|
|
enum ODK_FieldMode {
|
|
ODK_READ,
|
|
ODK_WRITE,
|
|
ODK_DUMP,
|
|
};
|
|
|
|
struct ODK_Field {
|
|
ODK_FieldType type;
|
|
void* value;
|
|
std::string name;
|
|
};
|
|
|
|
// This structure contains all parameters available in message version v16
|
|
// through the current version.
|
|
struct ODK_LicenseResponseParams {
|
|
ODK_CoreMessage core_message;
|
|
bool initial_license_load;
|
|
bool usage_entry_present;
|
|
uint8_t request_hash[ODK_SHA256_HASH_SIZE];
|
|
ODK_TimerLimits timer_limits;
|
|
ODK_ClockValues clock_values;
|
|
ODK_ParsedLicense parsed_license;
|
|
std::vector<ODK_Field> extra_fields;
|
|
};
|
|
|
|
struct ODK_RenewalResponseParams {
|
|
ODK_CoreMessage core_message;
|
|
uint64_t system_time;
|
|
uint64_t playback_clock;
|
|
uint64_t renewal_duration;
|
|
ODK_TimerLimits timer_limits;
|
|
ODK_ClockValues clock_values;
|
|
uint64_t playback_timer;
|
|
std::vector<ODK_Field> extra_fields;
|
|
};
|
|
|
|
struct ODK_ProvisioningResponseParams {
|
|
ODK_CoreMessage core_message;
|
|
uint8_t device_id[ODK_DEVICE_ID_LEN_MAX];
|
|
uint32_t device_id_length;
|
|
uint32_t padding_u32;
|
|
ODK_MessageCounterInfo counter_info;
|
|
ODK_ParsedProvisioning parsed_provisioning;
|
|
std::vector<ODK_Field> extra_fields;
|
|
};
|
|
|
|
struct ODK_Provisioning40ResponseParams {
|
|
ODK_CoreMessage core_message;
|
|
std::vector<ODK_Field> extra_fields;
|
|
};
|
|
|
|
// Default values in core_message for testing
|
|
void ODK_SetDefaultCoreFields(ODK_CoreMessage* core_message,
|
|
ODK_MessageType message_type);
|
|
void ODK_SetDefaultLicenseResponseParams(ODK_LicenseResponseParams* params,
|
|
uint32_t odk_major_version);
|
|
void ODK_SetDefaultRenewalResponseParams(ODK_RenewalResponseParams* params);
|
|
void ODK_SetDefaultProvisioningResponseParams(
|
|
ODK_ProvisioningResponseParams* params, uint32_t odk_major_version);
|
|
void ODK_SetDefaultProvisioning40ResponseParams(
|
|
ODK_Provisioning40ResponseParams* params);
|
|
|
|
size_t ODK_FieldLength(ODK_FieldType type);
|
|
size_t ODK_AllocSize(ODK_FieldType type);
|
|
|
|
// Copy ODK_Field to buf
|
|
OEMCryptoResult ODK_WriteSingleField(uint8_t* buf, const ODK_Field* field);
|
|
// Load buf to ODK_Field
|
|
OEMCryptoResult ODK_ReadSingleField(const uint8_t* buf, const ODK_Field* field);
|
|
OEMCryptoResult ODK_DumpSingleField(const uint8_t* buf, const ODK_Field* field);
|
|
OEMCryptoResult ODK_IterFields(ODK_FieldMode mode, uint8_t* buf, size_t size_in,
|
|
size_t* size_out,
|
|
const std::vector<ODK_Field>& fields);
|
|
void ODK_ExpectEqualBuf(const void* s1, const void* s2, size_t n,
|
|
const std::vector<ODK_Field>& fields);
|
|
void ODK_ResetOdkFields(std::vector<ODK_Field>* fields);
|
|
|
|
// Serialize core_message and extra_fields into buf
|
|
void ODK_BuildMessageBuffer(ODK_CoreMessage* core_message,
|
|
const std::vector<ODK_Field>& extra_fields,
|
|
uint8_t** buf, uint32_t* buf_size);
|
|
|
|
} // namespace wvodk_test
|
|
|
|
#endif // WIDEVINE_ODK_TEST_ODK_TEST_HELPER_H_
|