5 #include "sw/device/lib/testing/keymgr_dpe_testutils.h"
7 #include "dt/dt_keymgr_dpe.h"
8 #include "dt/dt_otp_ctrl.h"
9 #include "dt/dt_rstmgr.h"
15 #include "sw/device/lib/testing/otp_ctrl_testutils.h"
16 #include "sw/device/lib/testing/rstmgr_testutils.h"
17 #include "sw/device/lib/testing/test_framework/check.h"
20 status_t keymgr_dpe_testutils_startup(dif_keymgr_dpe_t *keymgr_dpe,
21 uint32_t slot_dst_sel) {
25 TRY(dif_rstmgr_init_from_dt(kDtRstmgrAon, &rstmgr));
26 info = rstmgr_testutils_reason_get();
31 "Powered up for the first time, lock SECRET2 and SECRET3 partitions");
33 TRY(dif_otp_ctrl_init_from_dt(kDtOtpCtrl, &otp));
36 TRY(otp_ctrl_testutils_lock_partition(&otp, kDifOtpCtrlPartitionSecret3,
40 rstmgr_testutils_reason_clear();
41 LOG_INFO(
"Triggering software reset");
51 "Powered up for the second time, actuate keymgr_dpe and perform test.");
54 TRY(dif_keymgr_dpe_init_from_dt(kDtKeymgrDpe, keymgr_dpe));
57 TRY(keymgr_dpe_testutils_check_state(keymgr_dpe, kDifKeymgrDpeStateReset));
59 TRY(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
60 TRY(keymgr_dpe_testutils_check_state(keymgr_dpe,
61 kDifKeymgrDpeStateAvailable));
67 status_t keymgr_dpe_testutils_advance_state(
68 const dif_keymgr_dpe_t *keymgr_dpe,
71 return keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe);
74 status_t keymgr_dpe_testutils_erase_slot(
75 const dif_keymgr_dpe_t *keymgr_dpe,
78 return keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe);
81 status_t keymgr_dpe_testutils_generate(
82 const dif_keymgr_dpe_t *keymgr_dpe,
86 TRY(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
91 status_t keymgr_dpe_testutils_check_state(
92 const dif_keymgr_dpe_t *keymgr_dpe,
96 TRY_CHECK(act_state == exp_state,
97 "KeymgrDPE in unexpected state: %x, expected to be %x", act_state,
102 status_t keymgr_dpe_testutils_wait_for_operation_done(
103 const dif_keymgr_dpe_t *keymgr_dpe) {