5#include "sw/device/lib/testing/keymgr_dpe_testutils.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"
21 uint32_t slot_dst_sel) {
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");
42 TRY(dif_rstmgr_software_device_reset(&rstmgr));
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));
58 TRY(dif_keymgr_dpe_initialize(keymgr_dpe, slot_dst_sel));
59 TRY(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
60 TRY(keymgr_dpe_testutils_check_state(keymgr_dpe,
61 kDifKeymgrDpeStateAvailable));
67status_t keymgr_dpe_testutils_advance_state(
70 TRY(dif_keymgr_dpe_advance_state(keymgr_dpe, params));
71 return keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe);
74status_t keymgr_dpe_testutils_erase_slot(
77 TRY(dif_keymgr_dpe_erase_slot(keymgr_dpe, params));
78 return keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe);
81status_t keymgr_dpe_testutils_generate(
85 TRY(dif_keymgr_dpe_generate(keymgr_dpe, params));
86 TRY(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
87 TRY(dif_keymgr_dpe_read_output(keymgr_dpe, key));
91status_t keymgr_dpe_testutils_check_state(
95 TRY(dif_keymgr_dpe_get_state(keymgr_dpe, &act_state));
96 TRY_CHECK(act_state == exp_state,
97 "KeymgrDPE in unexpected state: %x, expected to be %x", act_state,
102status_t keymgr_dpe_testutils_wait_for_operation_done(
106 TRY(dif_keymgr_dpe_get_status_codes(keymgr_dpe, &
status));