Software APIs
csrng_kat_test.c
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
7 #include "sw/device/lib/base/status.h"
10 #include "sw/device/lib/testing/csrng_testutils.h"
11 #include "sw/device/lib/testing/test_framework/check.h"
13 
14 OTTF_DEFINE_TEST_CONFIG();
15 
16 status_t test_ctr_drbg_ctr0(const dif_csrng_t *csrng) {
17  TRY(csrng_testutils_cmd_ready_wait(csrng));
18  TRY(dif_csrng_uninstantiate(csrng));
19  TRY(csrng_testutils_fips_instantiate_kat(csrng, /*fail_expected=*/false));
20  TRY(csrng_testutils_fips_generate_kat(csrng));
21  return OK_STATUS();
22 }
23 
24 bool test_main(void) {
25  dif_csrng_t csrng;
26  dt_csrng_t kCsrngDt = (dt_csrng_t)0;
27  static_assert(kDtCsrngCount == 1, "This test expects exactly one CSRNG");
28  CHECK_DIF_OK(dif_csrng_init_from_dt(kCsrngDt, &csrng));
29  CHECK_DIF_OK(dif_csrng_configure(&csrng));
30 
31  CHECK_STATUS_OK(test_ctr_drbg_ctr0(&csrng));
32 
33  return true;
34 }