Software APIs
kmac_app_rom_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 
5 #include "dt/dt_rom_ctrl.h" // Generated
10 #include "sw/device/lib/testing/test_framework/check.h"
12 
13 extern const uint32_t kRomImageHash[ROM_CTRL_DIGEST_MULTIREG_COUNT];
14 
15 static dif_rom_ctrl_t rom_ctrl;
16 static dt_rom_ctrl_t kRomCtrlDt = (dt_rom_ctrl_t)0;
17 static_assert(kDtRomCtrlCount >= 1,
18  "This test requires at least one rom_ctrl instance");
19 
20 OTTF_DEFINE_TEST_CONFIG();
21 
22 bool test_main(void) {
23  dif_rom_ctrl_digest_t computed_digest;
24  dif_rom_ctrl_digest_t expected_digest;
25 
26  // initialize rom_ctrl
27  CHECK_DIF_OK(dif_rom_ctrl_init_from_dt(kRomCtrlDt, &rom_ctrl));
28 
29  // get computed and expected digests and check that they match
30  CHECK_DIF_OK(dif_rom_ctrl_get_digest(&rom_ctrl, &computed_digest));
31  CHECK_DIF_OK(dif_rom_ctrl_get_expected_digest(&rom_ctrl, &expected_digest));
32  CHECK_ARRAYS_EQ(computed_digest.digest, expected_digest.digest,
33  ROM_CTRL_DIGEST_MULTIREG_COUNT,
34  "Mismatch between computed and expected digest.");
35  CHECK_ARRAYS_EQ(expected_digest.digest, kRomImageHash,
36  ROM_CTRL_DIGEST_MULTIREG_COUNT,
37  "Mismatch between the expected digest and one generated by "
38  "`scramble_image.py`.");
39 
40  return true;
41 }