Skip to content

Commit

Permalink
Adds unit test to validate type checking
Browse files Browse the repository at this point in the history
Adds a new test case to secret_store tests that verifies that
trying to read a secret with the wrong type yields an error
  • Loading branch information
italo-sampaio committed Feb 3, 2025
1 parent aa78767 commit 3b08dda
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions firmware/src/hal/sgx/test/secret_store/test_secret_store.c
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,52 @@ void test_remove_fails_when_kvstore_remove_fails() {
teardown();
}

void test_read_fails_wrong_type() {
test_fixture_t* fixture = setup("secret", 0xff);
printf("Test read fails when secret type is wrong...\n");

// Write the secret and make sure the seal API is called with the correct
// arguments
char* key = "key";
assert(sest_write(key,
fixture->secret_type,
fixture->secret_payload,
fixture->payload_size));
assert_oe_seal_called_with(
NULL,
(const oe_seal_setting_t[]){OE_SEAL_SET_POLICY(1)},
1,
fixture->secret,
fixture->secret_size,
NULL,
0);
assert(sest_exists(key));
mock_ocall_kstore_assert_value(key, fixture->sealed_secret);

// Attempt to read the secret with the wrong type
uint8_t retrieved[MAX_SEST_READ_SIZE];
memset(retrieved, 0, sizeof(retrieved));
uint8_t retrieved_length =
sest_read(key, 0xee, retrieved, sizeof(retrieved));
assert_oe_unseal_called_with(
fixture->sealed_secret, fixture->sealed_size, NULL, 0);
assert(retrieved_length == SEST_ERROR);
ASSERT_ARRAY_CLEARED(retrieved);

// Try again with the correct type
retrieved_length =
sest_read(key, fixture->secret_type, retrieved, sizeof(retrieved));
assert_oe_unseal_called_with(
fixture->sealed_secret, fixture->sealed_size, NULL, 0);
printf("retrieved_length: %d\n", retrieved_length);
printf("fixture payload size: %ld\n", fixture->payload_size);
printf("retrieved: %s\n", retrieved);
printf("plaintext: %s\n", fixture->secret_payload);
assert(retrieved_length == fixture->payload_size);
ASSERT_MEMCMP(retrieved, fixture->secret_payload, fixture->payload_size);
teardown();
}

int main() {
test_secret_exists_after_write();
test_write_and_retrieve_secret();
Expand All @@ -561,6 +607,7 @@ int main() {
test_exists_fails_when_kvstore_exists_fails();
test_remove_with_invalid_key_fails();
test_remove_fails_when_kvstore_remove_fails();
test_read_fails_wrong_type();

return 0;
}

0 comments on commit 3b08dda

Please sign in to comment.