26 #ifndef MBEDTLS_PLATFORM_H
27 #define MBEDTLS_PLATFORM_H
28 #include "mbedtls/private_access.h"
32 #if defined(MBEDTLS_HAVE_TIME)
54 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
55 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
56 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
59 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
62 #if defined(MBEDTLS_HAVE_TIME)
65 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
66 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
67 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
69 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
72 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
73 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
74 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
76 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
79 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
80 #define MBEDTLS_PLATFORM_STD_PRINTF printf
82 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
83 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
85 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
86 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
88 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
89 #define MBEDTLS_PLATFORM_STD_FREE free
91 #if !defined(MBEDTLS_PLATFORM_STD_SETBUF)
92 #define MBEDTLS_PLATFORM_STD_SETBUF setbuf
94 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
95 #define MBEDTLS_PLATFORM_STD_EXIT exit
97 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
98 #define MBEDTLS_PLATFORM_STD_TIME time
100 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
101 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
103 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
104 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
106 #if defined(MBEDTLS_FS_IO)
107 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
108 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
110 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
111 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
113 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
114 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
118 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
119 #include MBEDTLS_PLATFORM_STD_MEM_HDR
125 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_CALLOC)
126 #define MBEDTLS_PLATFORM_STD_CALLOC
129 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_FREE)
130 #define MBEDTLS_PLATFORM_STD_FREE
140 #if defined(MBEDTLS_PLATFORM_MEMORY)
141 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
142 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
144 #undef mbedtls_calloc
145 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
146 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
162 int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
163 void (*free_func)(
void *));
167 #undef mbedtls_calloc
168 #define mbedtls_free free
169 #define mbedtls_calloc calloc
175 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
192 #undef mbedtls_fprintf
193 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
194 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
196 #define mbedtls_fprintf fprintf
203 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
217 #undef mbedtls_printf
218 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
219 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
221 #define mbedtls_printf printf
234 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
236 int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
239 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
251 const char *format, ...));
253 #undef mbedtls_snprintf
254 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
255 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
257 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
270 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
273 int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
276 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
278 extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
288 const char *format, va_list arg));
290 #undef mbedtls_vsnprintf
291 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
292 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
294 #define mbedtls_vsnprintf vsnprintf
301 #if defined(MBEDTLS_PLATFORM_SETBUF_ALT)
331 FILE *stream,
char *buf));
333 #undef mbedtls_setbuf
334 #if defined(MBEDTLS_PLATFORM_SETBUF_MACRO)
345 #define mbedtls_setbuf MBEDTLS_PLATFORM_SETBUF_MACRO
347 #define mbedtls_setbuf setbuf
354 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
369 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
370 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
372 #define mbedtls_exit exit
379 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
380 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
382 #define MBEDTLS_EXIT_SUCCESS 0
384 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
385 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
387 #define MBEDTLS_EXIT_FAILURE 1
396 #if defined(MBEDTLS_ENTROPY_NV_SEED)
397 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
399 int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
400 int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
403 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
417 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
418 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
421 #undef mbedtls_nv_seed_read
422 #undef mbedtls_nv_seed_write
423 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
424 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
425 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
426 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
428 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
429 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
434 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
443 char MBEDTLS_PRIVATE(
dummy);
487 size_t *estimate_bits,
488 unsigned char *output,
size_t output_size);
uint32_t psa_driver_get_entropy_flags_t
Definitions for PSA random and entropy drivers.
Build-time configuration info.