Revert "Merge latest oemcrypto-v17 change"
This reverts commit 642965c678.
Reason for revert: Droidfood Blocking Bug: 217145027
Change-Id: I669b72fcd91c62e28883b5f55eb36af274d85806
(cherry picked from commit 8dbea15e5da05b371572297041454569dc166c90)
Merged-In:I669b72fcd91c62e28883b5f55eb36af274d85806
This commit is contained in:
committed by
Android Build Coastguard Worker
parent
1397b61f87
commit
d69b488be1
@@ -20,7 +20,7 @@
|
||||
namespace wvodk_test {
|
||||
|
||||
void ODK_SetDefaultCoreFields(ODK_CoreMessage* core_message,
|
||||
ODK_MessageType message_type) {
|
||||
uint32_t message_type) {
|
||||
ASSERT_TRUE(core_message != nullptr);
|
||||
core_message->message_type = message_type;
|
||||
core_message->message_length = 0;
|
||||
@@ -30,8 +30,7 @@ void ODK_SetDefaultCoreFields(ODK_CoreMessage* core_message,
|
||||
core_message->nonce_values.session_id = 0xcafebabe;
|
||||
}
|
||||
|
||||
void ODK_SetDefaultLicenseResponseParams(ODK_LicenseResponseParams* params,
|
||||
uint32_t odk_major_version) {
|
||||
void ODK_SetDefaultLicenseResponseParams(ODK_LicenseResponseParams* params) {
|
||||
ODK_SetDefaultCoreFields(&(params->core_message), ODK_License_Response_Type);
|
||||
params->initial_license_load = true;
|
||||
params->usage_entry_present = true;
|
||||
@@ -51,29 +50,6 @@ void ODK_SetDefaultLicenseResponseParams(ODK_LicenseResponseParams* params,
|
||||
.total_playback_duration_seconds = 12,
|
||||
.initial_renewal_duration_seconds = 13,
|
||||
},
|
||||
.watermarking = 0,
|
||||
.dtcp2_required = {.dtcp2_required = 0,
|
||||
.cmi_descriptor_0 =
|
||||
{
|
||||
.id = 0,
|
||||
.extension = 0,
|
||||
.length = 1,
|
||||
.data = 0,
|
||||
},
|
||||
.cmi_descriptor_1 =
|
||||
{
|
||||
.id = 1,
|
||||
.extension = 0,
|
||||
.length = 3,
|
||||
.data = {0, 0, 0},
|
||||
},
|
||||
.cmi_descriptor_2 =
|
||||
{
|
||||
.id = 2,
|
||||
.extension = 0,
|
||||
.length = 3,
|
||||
.data = {0, 0, 0},
|
||||
}},
|
||||
.key_array_length = 3,
|
||||
.key_array =
|
||||
{
|
||||
@@ -128,132 +104,37 @@ void ODK_SetDefaultLicenseResponseParams(ODK_LicenseResponseParams* params,
|
||||
{ODK_UINT64,
|
||||
&(params->parsed_license.timer_limits.initial_renewal_duration_seconds),
|
||||
".initial_renewal_duration_seconds"},
|
||||
};
|
||||
if (odk_major_version >= 17) {
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT32, &(params->parsed_license.watermarking), ".watermarking"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8, &(params->parsed_license.dtcp2_required.dtcp2_required),
|
||||
".dtcp2_required"});
|
||||
if (params->parsed_license.dtcp2_required.dtcp2_required) {
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_0.id),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_0.extension),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT16,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_0.length),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_0.data),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.id),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.extension),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT16,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.length),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.data[0]),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.data[1]),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_1.data[2]),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.id),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.extension),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT16,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.length),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.data[0]),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.data[1]),
|
||||
".cmi_descriptor_data"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT8,
|
||||
&(params->parsed_license.dtcp2_required.cmi_descriptor_2.data[2]),
|
||||
".cmi_descriptor_data"});
|
||||
}
|
||||
}
|
||||
params->extra_fields.push_back({ODK_UINT32,
|
||||
&(params->parsed_license.key_array_length),
|
||||
".key_array_length"});
|
||||
params->extra_fields.push_back({ODK_SUBSTRING,
|
||||
&(params->parsed_license.key_array[0].key_id),
|
||||
".key_id"});
|
||||
params->extra_fields.push_back(
|
||||
{ODK_UINT32, &(params->parsed_license.key_array_length),
|
||||
".key_array_length"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[0].key_id), ".key_id"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[0].key_data_iv),
|
||||
".key_data_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[0].key_data),
|
||||
".key_data"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[0].key_control_iv),
|
||||
".key_control_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_control_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[0].key_control),
|
||||
".key_control"});
|
||||
params->extra_fields.push_back({ODK_SUBSTRING,
|
||||
&(params->parsed_license.key_array[1].key_id),
|
||||
".key_id"});
|
||||
params->extra_fields.push_back(
|
||||
".key_control"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[1].key_id), ".key_id"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[1].key_data_iv),
|
||||
".key_data_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[1].key_data),
|
||||
".key_data"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[1].key_control_iv),
|
||||
".key_control_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_control_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[1].key_control),
|
||||
".key_control"});
|
||||
params->extra_fields.push_back({ODK_SUBSTRING,
|
||||
&(params->parsed_license.key_array[2].key_id),
|
||||
".key_id"});
|
||||
params->extra_fields.push_back(
|
||||
".key_control"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[2].key_id), ".key_id"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[2].key_data_iv),
|
||||
".key_data_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[2].key_data),
|
||||
".key_data"});
|
||||
params->extra_fields.push_back(
|
||||
".key_data"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[2].key_control_iv),
|
||||
".key_control_iv"});
|
||||
params->extra_fields.push_back(
|
||||
".key_control_iv"},
|
||||
{ODK_SUBSTRING, &(params->parsed_license.key_array[2].key_control),
|
||||
".key_control"});
|
||||
if (odk_major_version == 16) {
|
||||
params->extra_fields.push_back(
|
||||
{ODK_HASH, params->request_hash, ".request_hash"});
|
||||
}
|
||||
".key_control"},
|
||||
{ODK_HASH, params->request_hash, ".request_hash"},
|
||||
};
|
||||
}
|
||||
|
||||
void ODK_SetDefaultRenewalResponseParams(ODK_RenewalResponseParams* params) {
|
||||
@@ -275,7 +156,7 @@ void ODK_SetDefaultRenewalResponseParams(ODK_RenewalResponseParams* params) {
|
||||
.initial_renewal_duration_seconds = 300,
|
||||
};
|
||||
params->clock_values = {
|
||||
.time_of_license_request_signed =
|
||||
.time_of_license_signed =
|
||||
params->system_time - params->playback_clock - 42,
|
||||
.time_of_first_decrypt = params->system_time - params->playback_clock,
|
||||
.time_of_last_decrypt = params->system_time - params->playback_clock,
|
||||
@@ -295,7 +176,6 @@ void ODK_SetDefaultProvisioningResponseParams(
|
||||
memset(params->device_id + params->device_id_length, 0,
|
||||
ODK_DEVICE_ID_LEN_MAX - params->device_id_length);
|
||||
params->parsed_provisioning = {
|
||||
.key_type = OEMCrypto_RSA_Private_Key,
|
||||
.enc_private_key = {.offset = 0, .length = 1},
|
||||
.enc_private_key_iv = {.offset = 2, .length = 3},
|
||||
.encrypted_message_key = {.offset = 4, .length = 5},
|
||||
@@ -315,8 +195,6 @@ void ODK_SetDefaultProvisioningResponseParams(
|
||||
|
||||
size_t ODK_FieldLength(ODK_FieldType type) {
|
||||
switch (type) {
|
||||
case ODK_UINT8:
|
||||
return sizeof(uint8_t);
|
||||
case ODK_UINT16:
|
||||
return sizeof(uint16_t);
|
||||
case ODK_UINT32:
|
||||
@@ -348,10 +226,6 @@ OEMCryptoResult ODK_WriteSingleField(uint8_t* buf, const ODK_Field* field) {
|
||||
return ODK_ERROR_CORE_MESSAGE;
|
||||
}
|
||||
switch (field->type) {
|
||||
case ODK_UINT8: {
|
||||
memcpy(buf, field->value, sizeof(uint8_t));
|
||||
break;
|
||||
}
|
||||
case ODK_UINT16: {
|
||||
const uint16_t u16 =
|
||||
oemcrypto_htobe16(*static_cast<uint16_t*>(field->value));
|
||||
@@ -404,10 +278,6 @@ OEMCryptoResult ODK_ReadSingleField(const uint8_t* buf,
|
||||
return ODK_ERROR_CORE_MESSAGE;
|
||||
}
|
||||
switch (field->type) {
|
||||
case ODK_UINT8: {
|
||||
memcpy(field->value, buf, sizeof(uint8_t));
|
||||
break;
|
||||
}
|
||||
case ODK_UINT16: {
|
||||
memcpy(field->value, buf, sizeof(uint16_t));
|
||||
uint16_t* u16p = static_cast<uint16_t*>(field->value);
|
||||
@@ -462,13 +332,6 @@ OEMCryptoResult ODK_DumpSingleField(const uint8_t* buf,
|
||||
return ODK_ERROR_CORE_MESSAGE;
|
||||
}
|
||||
switch (field->type) {
|
||||
case ODK_UINT8: {
|
||||
uint8_t val;
|
||||
memcpy(&val, buf, sizeof(uint8_t));
|
||||
std::cerr << field->name << ": " << val << " = 0x" << std::hex << val
|
||||
<< "\n";
|
||||
break;
|
||||
}
|
||||
case ODK_UINT16: {
|
||||
uint16_t val;
|
||||
memcpy(&val, buf, sizeof(uint16_t));
|
||||
@@ -564,30 +427,9 @@ OEMCryptoResult ODK_IterFields(ODK_FieldMode mode, uint8_t* buf,
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
|
||||
std::vector<ODK_Field> ODK_MakeTotalFields(
|
||||
const std::vector<ODK_Field>& extra_fields, ODK_CoreMessage* core_message) {
|
||||
std::vector<ODK_Field> total_fields = {
|
||||
{ODK_UINT32, &(core_message->message_type), "message_type"},
|
||||
{ODK_UINT32, &(core_message->message_length), "message_size"},
|
||||
{ODK_UINT16, &(core_message->nonce_values.api_minor_version),
|
||||
"api_minor_version"},
|
||||
{ODK_UINT16, &(core_message->nonce_values.api_major_version),
|
||||
"api_major_version"},
|
||||
{ODK_UINT32, &(core_message->nonce_values.nonce), "nonce"},
|
||||
{ODK_UINT32, &(core_message->nonce_values.session_id), "session_id"},
|
||||
};
|
||||
total_fields.insert(total_fields.end(), extra_fields.begin(),
|
||||
extra_fields.end());
|
||||
return total_fields;
|
||||
}
|
||||
|
||||
// Expect the two buffers of size n to be equal. If not, dump the messages.
|
||||
void ODK_ExpectEqualBuf(const void* s1, const void* s2, size_t n,
|
||||
const std::vector<ODK_Field>& fields) {
|
||||
if (memcmp(s1, s2, n) != 0) {
|
||||
ODK_CoreMessage core_message;
|
||||
std::vector<ODK_Field> total_fields =
|
||||
ODK_MakeTotalFields(fields, &core_message);
|
||||
const void* buffers[] = {s1, s2};
|
||||
for (int i = 0; i < 2; i++) {
|
||||
char _tmp[] = "/tmp/fileXXXXXX";
|
||||
@@ -602,12 +444,11 @@ void ODK_ExpectEqualBuf(const void* s1, const void* s2, size_t n,
|
||||
std::fstream out(tmp, std::ios::out | std::ios::binary);
|
||||
out.write(static_cast<const char*>(buffers[i]), n);
|
||||
out.close();
|
||||
std::cerr << std::endl
|
||||
<< "Message buffer " << i << " dumped to " << tmp << std::endl;
|
||||
std::cerr << "buffer " << i << " dumped to " << tmp << std::endl;
|
||||
size_t bytes_written;
|
||||
uint8_t* buf =
|
||||
const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(buffers[i]));
|
||||
ODK_IterFields(ODK_DUMP, buf, n, &bytes_written, total_fields);
|
||||
ODK_IterFields(ODK_DUMP, buf, n, &bytes_written, fields);
|
||||
}
|
||||
FAIL();
|
||||
}
|
||||
@@ -630,9 +471,19 @@ void ODK_BuildMessageBuffer(ODK_CoreMessage* core_message,
|
||||
uint8_t** buf, uint32_t* buf_size) {
|
||||
ASSERT_TRUE(core_message != nullptr);
|
||||
ASSERT_TRUE(buf_size != nullptr);
|
||||
std::vector<ODK_Field> total_fields =
|
||||
ODK_MakeTotalFields(extra_fields, core_message);
|
||||
std::vector<ODK_Field> total_fields = {
|
||||
{ODK_UINT32, &(core_message->message_type), "message_type"},
|
||||
{ODK_UINT32, &(core_message->message_length), "message_size"},
|
||||
{ODK_UINT16, &(core_message->nonce_values.api_minor_version),
|
||||
"api_minor_version"},
|
||||
{ODK_UINT16, &(core_message->nonce_values.api_major_version),
|
||||
"api_major_version"},
|
||||
{ODK_UINT32, &(core_message->nonce_values.nonce), "nonce"},
|
||||
{ODK_UINT32, &(core_message->nonce_values.session_id), "session_id"},
|
||||
};
|
||||
|
||||
total_fields.insert(total_fields.end(), extra_fields.begin(),
|
||||
extra_fields.end());
|
||||
for (auto& field : total_fields) {
|
||||
*buf_size += ODK_FieldLength(field.type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user