| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| #include "sw/device/lib/testing/keymgr_testutils.h" |
| |
| #include "sw/device/lib/dif/dif_keymgr.h" |
| #include "sw/device/lib/runtime/ibex.h" |
| #include "sw/device/lib/runtime/log.h" |
| #include "sw/device/lib/testing/check.h" |
| |
| void keymgr_testutils_advance_state(const dif_keymgr_t *keymgr, |
| const dif_keymgr_state_params_t *params) { |
| CHECK_DIF_OK(dif_keymgr_advance_state(keymgr, params)); |
| |
| while (true) { |
| dif_keymgr_status_codes_t status; |
| |
| CHECK_DIF_OK(dif_keymgr_get_status_codes(keymgr, &status)); |
| if (status == 0) { |
| LOG_INFO("Advancing to next state"); |
| } else if (status == kDifKeymgrStatusCodeIdle) { |
| break; |
| } else { |
| LOG_ERROR("Unexpected status: %0x", status); |
| break; |
| } |
| } |
| } |
| |
| void keymgr_testutils_check_state(const dif_keymgr_t *keymgr, |
| const dif_keymgr_state_t exp_state) { |
| dif_keymgr_state_t act_state; |
| CHECK_DIF_OK(dif_keymgr_get_state(keymgr, &act_state)); |
| if (act_state != exp_state) { |
| LOG_INFO("Keymgr in unexpected state: %0x, expected to be %0x", act_state, |
| exp_state); |
| } |
| } |
| |
| void keymgr_testutils_generate_identity(const dif_keymgr_t *keymgr) { |
| CHECK_DIF_OK(dif_keymgr_generate_identity_seed(keymgr)); |
| |
| dif_keymgr_status_codes_t status; |
| do { |
| CHECK_DIF_OK(dif_keymgr_get_status_codes(keymgr, &status)); |
| if (status == 0) { |
| LOG_INFO("Generating identity seed"); |
| } else if (status > kDifKeymgrStatusCodeIdle) { |
| LOG_ERROR("Unexpected status: %0x", status); |
| break; |
| } |
| } while (status != kDifKeymgrStatusCodeIdle); |
| } |
| |
| void keymgr_testutils_generate_versioned_key( |
| const dif_keymgr_t *keymgr, |
| const dif_keymgr_versioned_key_params_t params) { |
| CHECK_DIF_OK(dif_keymgr_generate_versioned_key(keymgr, params)); |
| |
| dif_keymgr_status_codes_t status; |
| do { |
| CHECK_DIF_OK(dif_keymgr_get_status_codes(keymgr, &status)); |
| if (status == 0) { |
| LOG_INFO("Generating versioned key for dest: 0x%0x", params.dest); |
| } else if (status > kDifKeymgrStatusCodeIdle) { |
| LOG_ERROR("Unexpected status: %0x", status); |
| break; |
| } |
| } while (status != kDifKeymgrStatusCodeIdle); |
| } |