4 #include "sw/device/tests/entropy_src_kat_impl.h"
11 #include "sw/device/lib/testing/entropy_src_testutils.h"
12 #include "sw/device/lib/testing/entropy_testutils.h"
13 #include "sw/device/lib/testing/test_framework/check.h"
22 kEntropyFifoBufferSize = 12,
26 kKatTestTimeoutAttempts = 256,
38 static void stop_sha3_conditioner(dif_entropy_src_t *entropy_src) {
39 uint32_t fail_count = 0;
46 CHECK(fail_count < kKatTestTimeoutAttempts);
48 CHECK_DIF_OK(op_result);
58 static void flush_sha3_conditioner(dif_entropy_src_t *entropy_src) {
61 stop_sha3_conditioner(entropy_src);
66 uint32_t got[kEntropyFifoBufferSize];
73 CHECK(fail_count < kKatTestTimeoutAttempts);
75 CHECK_DIF_OK(op_result);
81 void entropy_src_kat_test(dif_entropy_src_t *entropy_src) {
82 CHECK_STATUS_OK(entropy_testutils_stop_all());
83 CHECK_STATUS_OK(entropy_src_testutils_fw_override_enable(
84 entropy_src, kEntropyFifoBufferSize,
91 flush_sha3_conditioner(entropy_src);
93 const uint32_t kInputMsg[kEntropyFifoBufferSize] = {
94 0xa52a0da9, 0xcae141b2, 0x6d5bab9d, 0x2c3e5cc0, 0x225afc93, 0x5d31a610,
95 0x91b7f960, 0x0d566bb3, 0xef35e170, 0x94ba7d8e, 0x534eb741, 0x6b60b0da,
101 uint32_t fail_count = 0;
108 entropy_src, kInputMsg + total,
ARRAYSIZE(kInputMsg) - total, &count);
111 CHECK(fail_count < kKatTestTimeoutAttempts);
114 CHECK_DIF_OK(op_result);
120 stop_sha3_conditioner(entropy_src);
123 uint32_t got[kEntropyFifoBufferSize];
129 CHECK(fail_count < kKatTestTimeoutAttempts);
131 CHECK_DIF_OK(op_result);
136 const uint32_t kExpectedDigest[kEntropyFifoBufferSize] = {
137 0x1c88164a, 0x5ff456e1, 0x0845dbdf, 0xbe233f8e, 0x7a5a4c1b, 0x5d31356a,
138 0x751cc536, 0x337375f2, 0x85a1ac19, 0x1333abd4, 0xf745fe0f, 0xc5bbf151,
141 CHECK_ARRAYS_EQ(got, kExpectedDigest, kEntropyFifoBufferSize,
142 "Unexpected digest value.");