xref: /aosp_15_r20/external/mbedtls/library/entropy_poll.h (revision 62c56f9862f102b96d72393aff6076c951fb8148)
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