1*62c56f98SSadaf Ebrahimi /** 2*62c56f98SSadaf Ebrahimi * \file entropy_poll.h 3*62c56f98SSadaf Ebrahimi * 4*62c56f98SSadaf Ebrahimi * \brief Platform-specific and custom entropy polling functions 5*62c56f98SSadaf Ebrahimi */ 6*62c56f98SSadaf Ebrahimi /* 7*62c56f98SSadaf Ebrahimi * Copyright The Mbed TLS Contributors 8*62c56f98SSadaf Ebrahimi * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 9*62c56f98SSadaf Ebrahimi */ 10*62c56f98SSadaf Ebrahimi #ifndef MBEDTLS_ENTROPY_POLL_H 11*62c56f98SSadaf Ebrahimi #define MBEDTLS_ENTROPY_POLL_H 12*62c56f98SSadaf Ebrahimi 13*62c56f98SSadaf Ebrahimi #include "mbedtls/build_info.h" 14*62c56f98SSadaf Ebrahimi 15*62c56f98SSadaf Ebrahimi #include <stddef.h> 16*62c56f98SSadaf Ebrahimi 17*62c56f98SSadaf Ebrahimi #ifdef __cplusplus 18*62c56f98SSadaf Ebrahimi extern "C" { 19*62c56f98SSadaf Ebrahimi #endif 20*62c56f98SSadaf Ebrahimi 21*62c56f98SSadaf Ebrahimi /* 22*62c56f98SSadaf Ebrahimi * Default thresholds for built-in sources, in bytes 23*62c56f98SSadaf Ebrahimi */ 24*62c56f98SSadaf Ebrahimi #define MBEDTLS_ENTROPY_MIN_PLATFORM 32 /**< Minimum for platform source */ 25*62c56f98SSadaf Ebrahimi #if !defined(MBEDTLS_ENTROPY_MIN_HARDWARE) 26*62c56f98SSadaf Ebrahimi #define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */ 27*62c56f98SSadaf Ebrahimi #endif 28*62c56f98SSadaf Ebrahimi 29*62c56f98SSadaf Ebrahimi #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY) 30*62c56f98SSadaf Ebrahimi /** 31*62c56f98SSadaf Ebrahimi * \brief Platform-specific entropy poll callback 32*62c56f98SSadaf Ebrahimi */ 33*62c56f98SSadaf Ebrahimi int mbedtls_platform_entropy_poll(void *data, 34*62c56f98SSadaf Ebrahimi unsigned char *output, size_t len, size_t *olen); 35*62c56f98SSadaf Ebrahimi #endif 36*62c56f98SSadaf Ebrahimi 37*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) 38*62c56f98SSadaf Ebrahimi /** 39*62c56f98SSadaf Ebrahimi * \brief Entropy poll callback for a hardware source 40*62c56f98SSadaf Ebrahimi * 41*62c56f98SSadaf Ebrahimi * \warning This is not provided by Mbed TLS! 42*62c56f98SSadaf Ebrahimi * See \c MBEDTLS_ENTROPY_HARDWARE_ALT in mbedtls_config.h. 43*62c56f98SSadaf Ebrahimi * 44*62c56f98SSadaf Ebrahimi * \note This must accept NULL as its first argument. 45*62c56f98SSadaf Ebrahimi */ 46*62c56f98SSadaf Ebrahimi int mbedtls_hardware_poll(void *data, 47*62c56f98SSadaf Ebrahimi unsigned char *output, size_t len, size_t *olen); 48*62c56f98SSadaf Ebrahimi #endif 49*62c56f98SSadaf Ebrahimi 50*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_ENTROPY_NV_SEED) 51*62c56f98SSadaf Ebrahimi /** 52*62c56f98SSadaf Ebrahimi * \brief Entropy poll callback for a non-volatile seed file 53*62c56f98SSadaf Ebrahimi * 54*62c56f98SSadaf Ebrahimi * \note This must accept NULL as its first argument. 55*62c56f98SSadaf Ebrahimi */ 56*62c56f98SSadaf Ebrahimi int mbedtls_nv_seed_poll(void *data, 57*62c56f98SSadaf Ebrahimi unsigned char *output, size_t len, size_t *olen); 58*62c56f98SSadaf Ebrahimi #endif 59*62c56f98SSadaf Ebrahimi 60*62c56f98SSadaf Ebrahimi #ifdef __cplusplus 61*62c56f98SSadaf Ebrahimi } 62*62c56f98SSadaf Ebrahimi #endif 63*62c56f98SSadaf Ebrahimi 64*62c56f98SSadaf Ebrahimi #endif /* entropy_poll.h */ 65