4 #include "sw/device/lib/testing/entropy_testutils.h"
7 #include "sw/device/lib/dif/dif_csrng_shared.h"
9 #include "sw/device/lib/testing/test_framework/check.h"
11 #ifdef HAS_ENTROPY_SRC
15 #define MODULE_ID MAKE_MODULE_ID('e', 'n', 'y')
17 status_t entropy_testutils_entropy_src_init(
void) {
18 #ifdef HAS_ENTROPY_SRC
19 dif_entropy_src_t entropy_src;
20 CHECK_DIF_OK(dif_entropy_src_init_from_dt(kDtEntropySrc, &entropy_src));
25 .route_to_firmware =
false,
26 .bypass_conditioner =
false,
28 .health_test_window_size = 0x0200,
37 status_t entropy_testutils_auto_mode_init(
void) {
41 CHECK_DIF_OK(dif_csrng_init_from_dt(kDtCsrng, &csrng));
42 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn0, &edn0));
43 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn1, &edn1));
45 TRY(entropy_testutils_stop_all());
48 TRY(entropy_testutils_entropy_src_init());
60 .cmd = csrng_cmd_header_build(kCsrngAppCmdInstantiate,
71 .cmd = csrng_cmd_header_build(
82 .cmd = csrng_cmd_header_build(kCsrngAppCmdGenerate,
92 .reseed_interval = 32,
103 .cmd = csrng_cmd_header_build(kCsrngAppCmdInstantiate,
114 .cmd = csrng_cmd_header_build(
125 .cmd = csrng_cmd_header_build(kCsrngAppCmdGenerate,
135 .reseed_interval = 4,
140 status_t entropy_testutils_boot_mode_init(
void) {
144 CHECK_DIF_OK(dif_csrng_init_from_dt(kDtCsrng, &csrng));
145 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn0, &edn0));
146 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn1, &edn1));
148 TRY(entropy_testutils_stop_all());
150 TRY(entropy_testutils_entropy_src_init());
159 status_t entropy_testutils_stop_csrng_edn(
void) {
163 CHECK_DIF_OK(dif_csrng_init_from_dt(kDtCsrng, &csrng));
164 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn0, &edn0));
165 CHECK_DIF_OK(dif_edn_init_from_dt(kDtEdn1, &edn1));
173 status_t entropy_testutils_stop_all(
void) {
174 CHECK_STATUS_OK(entropy_testutils_stop_csrng_edn());
176 #ifdef HAS_ENTROPY_SRC
177 dif_entropy_src_t entropy_src;
178 CHECK_DIF_OK(dif_entropy_src_init_from_dt(kDtEntropySrc, &entropy_src));
185 status_t entropy_testutils_error_check(
const dif_csrng_t *csrng,
186 const dif_edn_t *edn0,
187 const dif_edn_t *edn1) {
189 bool found_error =
false;
191 #ifdef HAS_ENTROPY_SRC
192 dif_entropy_src_t entropy_src;
193 CHECK_DIF_OK(dif_entropy_src_init_from_dt(kDtEntropySrc, &entropy_src));
197 LOG_ERROR(
"entropy_src status. err: 0x%x", err_code);
209 uint32_t fifo_errors;
211 if (err_code || fifo_errors) {
213 LOG_ERROR(
"end0 error status. err: 0x%x, fifo_err: 0x%x", err_code,
218 if (err_code || fifo_errors) {
220 LOG_ERROR(
"end1 error status. err: 0x%x, fifo_err: 0x%x", err_code,
223 TRY_CHECK(!found_error,
"entropy_testutils_error_check fail");