ODK unit tests for release request

PiperOrigin-RevId: 584427947
Change-Id: I7a131739c5ea0d27c2f9e9c5ecb7b138176ce049
This commit is contained in:
Vicky Min
2023-11-21 14:21:06 -08:00
committed by Robert Shih
parent 91e573f574
commit 726f2d51e9
7 changed files with 160 additions and 15 deletions

View File

@@ -235,12 +235,12 @@ OEMCryptoResult ODK_PrepareCoreLicenseRequest(
OEMCryptoResult ODK_PrepareCoreReleaseRequest(
uint8_t* message, size_t message_length, size_t* core_message_size,
const ODK_NonceValues* nonce_values,
const ODK_MessageCounterInfo* counter_info, uint32_t status,
ODK_NonceValues* nonce_values, uint32_t status,
uint32_t clock_security_level, int64_t seconds_since_license_requested,
int64_t seconds_since_first_decrypt) {
int64_t seconds_since_first_decrypt, ODK_ClockValues* clock_values,
uint64_t system_time_seconds) {
if (core_message_size == NULL || nonce_values == NULL ||
counter_info == NULL) {
clock_values == NULL) {
return ODK_ERROR_CORE_MESSAGE;
}
if (nonce_values->api_major_version >= 19) {
@@ -251,8 +251,9 @@ OEMCryptoResult ODK_PrepareCoreReleaseRequest(
} else {
// If the version is pre 19 when license release isn't supported, create a
// license request.
return ODK_PrepareCoreLicenseRequest(
message, message_length, core_message_size, nonce_values, counter_info);
return ODK_PrepareCoreRenewalRequest(message, message_length,
core_message_size, nonce_values,
clock_values, system_time_seconds);
}
}
@@ -521,6 +522,35 @@ OEMCryptoResult ODK_ParseRenewal(const uint8_t* message, size_t message_length,
timer_value);
}
OEMCryptoResult ODK_ParseRelease(const uint8_t* message, size_t message_length,
size_t core_message_length,
ODK_NonceValues* nonce_values,
int64_t seconds_since_license_requested,
int64_t seconds_since_first_decrypt) {
if (message == NULL || nonce_values == NULL) {
return ODK_ERROR_CORE_MESSAGE;
}
const OEMCryptoResult err =
ODK_ParseCoreHeader(message, message_length, core_message_length,
ODK_Release_Response_Type, nonce_values);
if (err != OEMCrypto_SUCCESS) {
return err;
}
ODK_ReleaseResponse release_response = {0};
ODK_Message msg = ODK_Message_Create((uint8_t*)message, message_length);
ODK_Message_SetSize(&msg, core_message_length);
Unpack_ODK_ReleaseResponse(&msg, &release_response);
if (ODK_Message_GetStatus(&msg) != MESSAGE_STATUS_OK ||
ODK_Message_GetOffset(&msg) != core_message_length) {
return ODK_ERROR_CORE_MESSAGE;
}
return OEMCrypto_SUCCESS;
}
OEMCryptoResult ODK_ParseProvisioning(
const uint8_t* message, size_t message_length, size_t core_message_length,
ODK_NonceValues* nonce_values, const uint8_t* device_id,

View File

@@ -132,7 +132,7 @@ typedef struct {
#define ODK_CORE_MESSAGE_SIZE 20u
#define ODK_LICENSE_REQUEST_SIZE 90u
#define ODK_LICENSE_REQUEST_SIZE_V17 20u
#define ODK_RELEASE_REQUEST_SIZE 90u
#define ODK_RELEASE_REQUEST_SIZE 20u
#define ODK_RENEWAL_REQUEST_SIZE 28u
#define ODK_PROVISIONING_REQUEST_SIZE 94u
#define ODK_PROVISIONING_REQUEST_SIZE_V17 88u