| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_AES_TESTUTILS_H_ |
| #define OPENTITAN_SW_DEVICE_LIB_TESTING_AES_TESTUTILS_H_ |
| |
| #include "sw/device/lib/dif/dif_aes.h" |
| #include "sw/device/lib/runtime/ibex.h" |
| #include "sw/device/lib/testing/test_framework/check.h" |
| |
| /** |
| * Returns the value of the AES status flag. |
| * |
| * @param aes An aes DIF handle. |
| * @param flag Status flag to query. |
| */ |
| inline bool aes_testutils_get_status(dif_aes_t *aes, dif_aes_status_t flag) { |
| bool status; |
| CHECK_DIF_OK(dif_aes_get_status(aes, flag, &status)); |
| return status; |
| } |
| |
| /** |
| * Waits for the given AES status flag to be set the the given value. |
| * |
| * @param aes An aes DIF handle. |
| * @param flag Status flag to query. |
| * @param value The status flag value. |
| * @param timeout_usec Timeout in microseconds. |
| */ |
| #define AES_TESTUTILS_WAIT_FOR_STATUS(aes_, flag_, value_, timeout_usec_) \ |
| IBEX_SPIN_FOR(aes_testutils_get_status((aes_), (flag_)) == (value_), \ |
| (timeout_usec_)) |
| |
| #if !OT_IS_ENGLISH_BREAKFAST |
| /** |
| * Initializes the entropy complex for performing AES SCA measurements with |
| * masking switched off. |
| * |
| * Initializes CSRNG and EDN0 to produce a fixed seed which after being loaded |
| * into AES causes the AES masking PRNG to output an all-zero vector. Entropy |
| * src and EDN1 are left untouched. |
| */ |
| void aes_testutils_masking_prng_zero_output_seed(void); |
| |
| /** |
| * CTR_DRBG Known-Answer-Test (KAT) using the CSRNG SW application interface. |
| * |
| * Initializes CSRNG and then runs multiple generate and a reseed command to |
| * ensure the seed leading to an all-zero output of the AES masking PRNG can |
| * repeatedly be generated. |
| */ |
| void aes_testutils_csrng_kat(void); |
| #endif |
| |
| #endif // OPENTITAN_SW_DEVICE_LIB_TESTING_AES_TESTUTILS_H_ |