6 #include "sw/device/lib/testing/test_framework/check.h"
9 #include "sw/device/silicon_creator/lib/drivers/hmac.h"
10 #include "sw/device/silicon_creator/lib/sigverify/rsa_verify.h"
11 #include "sw/device/silicon_creator/lib/sigverify/sigverify.h"
17 #include "sigverify_testvectors.h"
20 static uint32_t test_index;
22 rom_error_t sigverify_test(
void) {
23 sigverify_test_vector_t testvec = sigverify_tests[test_index];
27 memcpy(digest.digest, testvec.encoded_msg,
28 kHmacDigestNumWords *
sizeof(uint32_t));
30 uint32_t flash_exec = 0;
31 rom_error_t result = sigverify_rsa_verify(&testvec.sig, &testvec.key, &digest,
32 kLcStateRma, &flash_exec);
34 rom_error_t test_result;
36 CHECK(flash_exec == kSigverifyRsaSuccess);
37 if (result == kErrorOk) {
38 test_result = kErrorOk;
41 LOG_ERROR(
"Error while attempting to verify a valid signature.");
42 LOG_INFO(
"Test notes: %s", testvec.comment);
46 CHECK(flash_exec == UINT32_MAX);
47 if (result == kErrorOk) {
49 LOG_ERROR(
"Invalid signature passed verification.");
50 LOG_INFO(
"Test notes: %s", testvec.comment);
51 test_result = kErrorUnknown;
53 test_result = kErrorOk;
60 OTTF_DEFINE_TEST_CONFIG();
66 LOG_INFO(
"Starting sigverify_dynamic_functest:%s", RULE_NAME);
67 for (uint32_t i = 0; i < SIGVERIFY_NUM_TESTS; i++) {
68 LOG_INFO(
"Starting test vector %d of %d...", i + 1, SIGVERIFY_NUM_TESTS);
72 LOG_INFO(
"Finished sigverify_dynamic_functest:%s", RULE_NAME);
73 return status_ok(result);