/* * Copyright (C) 2020 HAW Hamburg * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level * directory for more details. */ /** * @defgroup sys_entropy_source_zero Zero Entropy Source * @ingroup sys_entropy_source * @brief Zero Entropy Source for testing. * * This module produces zeros only and should be used for testing purposes only. * * @{ * @file * * @author Peter Kietzmann */ #ifndef ENTROPY_SOURCE_ZERO_ENTROPY_H #define ENTROPY_SOURCE_ZERO_ENTROPY_H #ifdef __cplusplus extern "C" { #endif #include #include /** * @ingroup sys_entropy_source_config * @{ */ /** * @brief Min. Entropy value for zero entropy module. * * H_min=0.9 bit/sample * 2^16 fake for testing! */ #if !defined(CONFIG_KCONFIG_USEMODULE_ENTROPY_SOURCE_ZERO_ENTROPY) || defined(DOXYGEN) #ifndef CONFIG_ENTROPY_SOURCE_ZERO_ENTROPY_HMIN #define CONFIG_ENTROPY_SOURCE_ZERO_HMIN (58982) #endif /** * @brief Enable health test by default. * * Testing is the only purpose of this module. */ #ifndef CONFIG_ENTROPY_SOURCE_ZERO_HEALTH_TEST #define CONFIG_ENTROPY_SOURCE_ZERO_HEALTH_TEST 1 #endif /** * @brief Disable conditioning by default. * * Conditioning is useless for zeros only. The von Neumann extractor would * never finish and wait for the stop criterion given by * @ref CONFIG_ENTROPY_SOURCE_NEUMANN_ABORT. */ #ifndef CONFIG_ENTROPY_SOURCE_ZERO_COND #define CONFIG_ENTROPY_SOURCE_ZERO_COND 0 #endif #endif /* !CONFIG_KCONFIG_USEMODULE_ENTROPY_SOURCE_ZERO_ENTROPY || DOXYGEN */ /** @} */ /** * @brief Initializes test structures, if tests are enabled. * * @return ENTROPY_SOURCE_OK always */ int entropy_source_zero_init(void); /** * @brief Generates zeros. * * @param[out] buf pointer to write zeros to * @param[in] len number of bytes to generate * * @return ENTROPY_SOURCE_OK on success * @return negative @ref entropy_source_error_t code on error */ int entropy_source_zero_get(uint8_t *buf, size_t len); #ifdef __cplusplus } #endif #endif /* ENTROPY_SOURCE_ZERO_ENTROPY_H */ /** @} */