5 #include "dt/dt_clkmgr.h"
6 #include "dt/dt_kmac.h"
11 #include "sw/device/lib/testing/test_framework/check.h"
14 static_assert(kDtKmacCount >= 1,
"this test requires at least one kmac");
15 const dt_kmac_t kKmacDt = (dt_kmac_t)0;
17 static dif_clkmgr_t clkmgr;
18 static dif_kmac_t kmac;
20 OTTF_DEFINE_TEST_CONFIG();
24 #define TIMEOUT (1000 * 1000)
27 #define DIGEST_LEN_SHA3_256 (256 / 32)
28 #define DIGEST_LEN_SHA3_512 (512 / 32)
29 #define DIGEST_LEN_SHA3_MAX DIGEST_LEN_SHA3_512
38 const uint32_t digest[DIGEST_LEN_SHA3_MAX];
47 .message =
"\xe7\x37\x21\x05",
49 .digest = {0x8ab6423a, 0x8cf279b0, 0x52c7a34c, 0x90276f29, 0x78fec406,
50 0xd979ebb1, 0x057f7789, 0xae46401e},
51 .digest_len = DIGEST_LEN_SHA3_256};
53 static void check_clock_state(
dif_toggle_t expected_clock_state) {
57 CHECK(clock_state == expected_clock_state,
58 "Clock enabled state is not as expected (%d).", expected_clock_state);
61 static bool is_hintable_clock_enabled(
const dif_clkmgr_t *clkmgr,
69 static void do_sha3_test(
void) {
81 sha3_256_test.message, sha3_256_test.message_len,
84 uint32_t out[DIGEST_LEN_SHA3_MAX];
86 sha3_256_test.digest_len, NULL,
92 CHECK_DIF_OK(
dif_kmac_end(&kmac, &kmac_operation_state));
98 IBEX_SPIN_FOR(!is_hintable_clock_enabled(&clkmgr, kmac_clock), TIMEOUT);
104 CHECK_ARRAYS_EQ(out, sha3_256_test.digest, sha3_256_test.digest_len,
105 "Digest mismatch for test SHA3 256.");
114 CHECK_DIF_OK(dif_clkmgr_init_from_dt(kDtClkmgrAon, &clkmgr));
116 &clkmgr, dt_kmac_instance_id(kKmacDt), &kmac_clock));
136 static_assert(kDtKmacCount > 0,
"This test requires a KMAC instance");
137 CHECK_DIF_OK(dif_kmac_init_from_dt(kKmacDt, &kmac));
142 .entropy_seed = {0xb153e3fe, 0x09596819, 0x3e85a6e8, 0xb6dcdaba,
143 0x50dc409c, 0x11e1ebd1},