5 #include "dt/dt_hmac.h"
10 #include "sw/device/lib/testing/hmac_testutils.h"
11 #include "sw/device/lib/testing/test_framework/check.h"
14 static_assert(kDtHmacCount >= 1,
15 "This test requires at least one HMAC instance");
17 static dt_hmac_t kTestHmac = (dt_hmac_t)0;
19 OTTF_DEFINE_TEST_CONFIG();
26 static const char kData[142] =
27 "Every one suspects himself of at least one of "
28 "the cardinal virtues, and this is mine: I am "
29 "one of the few honest people that I have ever "
32 static uint32_t kHmacKey[8] = {
33 0xec4e6c89, 0x082efa98, 0x299f31d0, 0xa4093822,
34 0x03707344, 0x13198a2e, 0x85a308d3, 0x243f6a88,
69 CHECK_DIF_OK(dif_hmac_init(base_addr, hmac));
76 static void test_start(
const dif_hmac_t *hmac,
const uint8_t *key) {
88 static void run_hmac(
const dif_hmac_t *hmac) {
92 static void run_test(
const dif_hmac_t *hmac,
const char *data,
size_t len,
95 test_start(hmac, key);
96 CHECK_STATUS_OK(hmac_testutils_push_message(hmac, data, len));
97 CHECK_STATUS_OK(hmac_testutils_fifo_empty_polled(hmac));
98 CHECK_STATUS_OK(hmac_testutils_check_message_length(hmac, len * 8));
101 hmac_testutils_finish_and_check_polled(hmac, expected_digest));
105 LOG_INFO(
"Running HMAC DIF test...");
108 CHECK_DIF_OK(dif_hmac_init_from_dt(kTestHmac, &hmac));
110 LOG_INFO(
"Running test SHA256 pass 1...");
111 run_test(&hmac, kData,
sizeof(kData), NULL, &kExpectedShaDigest);
113 LOG_INFO(
"Running test SHA256 pass 2...");
114 run_test(&hmac, kData,
sizeof(kData), NULL, &kExpectedShaDigest);
116 LOG_INFO(
"Running test HMAC pass 1...");
117 run_test(&hmac, kData,
sizeof(kData), (uint8_t *)(&kHmacKey[0]),
118 &kExpectedHmacDigest);
120 LOG_INFO(
"Running test HMAC pass 2...");
121 run_test(&hmac, kData,
sizeof(kData), (uint8_t *)(&kHmacKey[0]),
122 &kExpectedHmacDigest);