blob: 471a09f34102656c439fce2308732acb75585afa [file] [log] [blame]
// 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_CSRNG_TESTUTILS_H_
#define OPENTITAN_SW_DEVICE_LIB_TESTING_CSRNG_TESTUTILS_H_
#include "sw/device/lib/dif/dif_csrng.h"
/**
* Wait for the `csrng` instance command interface to be ready to accept
* commands. Aborts test execution if an error is found.
*/
void csrng_testutils_cmd_ready_wait(const dif_csrng_t *csrng);
/**
* Runs CSRNG generate command.
*
* @param csrng A CSRNG handle.
* @param output Output buffer.
* @param output_len Number of words of entropy to write to output buffer.
*/
void csrng_testutils_cmd_generate_run(const dif_csrng_t *csrng,
uint32_t *output, size_t output_len);
/**
* Checks the CSRNG internal state against `expected` values.
*
* @param csrng A CSRNG handle.
* @param expected Expected CSRNG internal state.
*/
void csrng_testutils_check_internal_state(
const dif_csrng_t *csrng, const dif_csrng_internal_state_t *expected);
/**
* CTR_DRBG Known-Answer-Test (KAT) for INSTANTIATE command.
*
* @param csrng A CSRNG handle.
* @param fail_expected Expected fail.
* @param seed_material Seed material to use for the command.
* @param expected_state Expected CSRNG internal state after the command.
*/
void csrng_testutils_kat_instantiate(
const dif_csrng_t *csrng, bool fail_expected,
const dif_csrng_seed_material_t *seed_material,
const dif_csrng_internal_state_t *expected_state);
/**
* CTR_DRBG Known-Answer-Test (KAT) for GENERATE command.
*
* @param csrng A CSRNG handle.
* @param num_generates Number of GENERATE commands to run.
* @param output_len Number of output words to read from CSRNG after the last
* command.
* @param expected_output Expected CSRNG output after the last command.
* @param expected_state Expected CSRNG internal state after the last command.
*/
void csrng_testutils_kat_generate(
const dif_csrng_t *csrng, uint32_t num_generates, uint32_t output_len,
const uint32_t *expected_output,
const dif_csrng_internal_state_t *expected_state);
/**
* CTR_DRBG Known-Answer-Test (KAT) for RESEED command.
*
* @param csrng A CSRNG handle.
* @param seed_material Seed material to use for the command.
* @param expected_state Expected CSRNG internal state after the command.
*/
void csrng_testutils_kat_reseed(
const dif_csrng_t *csrng, const dif_csrng_seed_material_t *seed_material,
const dif_csrng_internal_state_t *expected_state);
/**
* CTR DRBG Known-Answer-Test (KAT) for INSTANTIATE command.
*
* @param csrng Handle.
* @param fail_expected Expected fail.
*/
void csrng_testutils_fips_instantiate_kat(const dif_csrng_t *csrng,
bool fail_expected);
/**
* CTR DRBG Known-Answer-Test (KAT) for GENERATE command.
*
* @param csrng Handle.
*/
void csrng_testutils_fips_generate_kat(const dif_csrng_t *csrng);
/**
* Checks CSRNG command status.
*
* Asserts error if the command or internal FIFO status contains any errors.
*
* @param csrng Handle.
*/
void csrng_testutils_cmd_status_check(const dif_csrng_t *csrng);
/**
* Checks CSRNG recoverable alerts.
*
* Asserts error if there are any CSRNG recoverable alerts set.
*
* @param csrng Handle.
*/
void csrng_testutils_recoverable_alerts_check(const dif_csrng_t *csrng);
#endif // OPENTITAN_SW_DEVICE_LIB_TESTING_CSRNG_TESTUTILS_H_