1*32b31808SJens Wiklander /** 2*32b31808SJens Wiklander * \file entropy_poll.h 3*32b31808SJens Wiklander * 4*32b31808SJens Wiklander * \brief Platform-specific and custom entropy polling functions 5*32b31808SJens Wiklander */ 6*32b31808SJens Wiklander /* 7*32b31808SJens Wiklander * Copyright The Mbed TLS Contributors 8*32b31808SJens Wiklander * SPDX-License-Identifier: Apache-2.0 9*32b31808SJens Wiklander * 10*32b31808SJens Wiklander * Licensed under the Apache License, Version 2.0 (the "License"); you may 11*32b31808SJens Wiklander * not use this file except in compliance with the License. 12*32b31808SJens Wiklander * You may obtain a copy of the License at 13*32b31808SJens Wiklander * 14*32b31808SJens Wiklander * http://www.apache.org/licenses/LICENSE-2.0 15*32b31808SJens Wiklander * 16*32b31808SJens Wiklander * Unless required by applicable law or agreed to in writing, software 17*32b31808SJens Wiklander * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 18*32b31808SJens Wiklander * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19*32b31808SJens Wiklander * See the License for the specific language governing permissions and 20*32b31808SJens Wiklander * limitations under the License. 21*32b31808SJens Wiklander */ 22*32b31808SJens Wiklander #ifndef MBEDTLS_ENTROPY_POLL_H 23*32b31808SJens Wiklander #define MBEDTLS_ENTROPY_POLL_H 24*32b31808SJens Wiklander 25*32b31808SJens Wiklander #include "mbedtls/build_info.h" 26*32b31808SJens Wiklander 27*32b31808SJens Wiklander #include <stddef.h> 28*32b31808SJens Wiklander 29*32b31808SJens Wiklander #ifdef __cplusplus 30*32b31808SJens Wiklander extern "C" { 31*32b31808SJens Wiklander #endif 32*32b31808SJens Wiklander 33*32b31808SJens Wiklander /* 34*32b31808SJens Wiklander * Default thresholds for built-in sources, in bytes 35*32b31808SJens Wiklander */ 36*32b31808SJens Wiklander #define MBEDTLS_ENTROPY_MIN_PLATFORM 32 /**< Minimum for platform source */ 37*32b31808SJens Wiklander #if !defined(MBEDTLS_ENTROPY_MIN_HARDWARE) 38*32b31808SJens Wiklander #define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */ 39*32b31808SJens Wiklander #endif 40*32b31808SJens Wiklander 41*32b31808SJens Wiklander #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY) 42*32b31808SJens Wiklander /** 43*32b31808SJens Wiklander * \brief Platform-specific entropy poll callback 44*32b31808SJens Wiklander */ 45*32b31808SJens Wiklander int mbedtls_platform_entropy_poll(void *data, 46*32b31808SJens Wiklander unsigned char *output, size_t len, size_t *olen); 47*32b31808SJens Wiklander #endif 48*32b31808SJens Wiklander 49*32b31808SJens Wiklander #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) 50*32b31808SJens Wiklander /** 51*32b31808SJens Wiklander * \brief Entropy poll callback for a hardware source 52*32b31808SJens Wiklander * 53*32b31808SJens Wiklander * \warning This is not provided by mbed TLS! 54*32b31808SJens Wiklander * See \c MBEDTLS_ENTROPY_HARDWARE_ALT in mbedtls_config.h. 55*32b31808SJens Wiklander * 56*32b31808SJens Wiklander * \note This must accept NULL as its first argument. 57*32b31808SJens Wiklander */ 58*32b31808SJens Wiklander int mbedtls_hardware_poll(void *data, 59*32b31808SJens Wiklander unsigned char *output, size_t len, size_t *olen); 60*32b31808SJens Wiklander #endif 61*32b31808SJens Wiklander 62*32b31808SJens Wiklander #if defined(MBEDTLS_ENTROPY_NV_SEED) 63*32b31808SJens Wiklander /** 64*32b31808SJens Wiklander * \brief Entropy poll callback for a non-volatile seed file 65*32b31808SJens Wiklander * 66*32b31808SJens Wiklander * \note This must accept NULL as its first argument. 67*32b31808SJens Wiklander */ 68*32b31808SJens Wiklander int mbedtls_nv_seed_poll(void *data, 69*32b31808SJens Wiklander unsigned char *output, size_t len, size_t *olen); 70*32b31808SJens Wiklander #endif 71*32b31808SJens Wiklander 72*32b31808SJens Wiklander #ifdef __cplusplus 73*32b31808SJens Wiklander } 74*32b31808SJens Wiklander #endif 75*32b31808SJens Wiklander 76*32b31808SJens Wiklander #endif /* entropy_poll.h */ 77