xref: /optee_os/lib/libmbedtls/mbedtls/library/entropy_poll.h (revision 32b3180828fa15a49ccc86ecb4be9d274c140c89)
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