38 #ifndef MBEDTLS_PLATFORM_H
39 #define MBEDTLS_PLATFORM_H
44 #if defined(MBEDTLS_HAVE_TIME)
64 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
65 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
66 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
69 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
72 #if defined(MBEDTLS_HAVE_TIME)
75 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
76 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
77 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
79 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
82 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
83 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
84 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
86 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
89 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
90 #define MBEDTLS_PLATFORM_STD_PRINTF printf
92 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
93 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
95 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
96 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
98 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
99 #define MBEDTLS_PLATFORM_STD_FREE free
101 #if !defined(MBEDTLS_PLATFORM_STD_SETBUF)
102 #define MBEDTLS_PLATFORM_STD_SETBUF setbuf
104 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
105 #define MBEDTLS_PLATFORM_STD_EXIT exit
107 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
108 #define MBEDTLS_PLATFORM_STD_TIME time
110 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
111 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
113 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
114 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
116 #if defined(MBEDTLS_FS_IO)
117 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
118 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
120 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
121 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
123 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
124 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
128 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
129 #include MBEDTLS_PLATFORM_STD_MEM_HDR
139 #if defined(MBEDTLS_PLATFORM_MEMORY)
140 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
141 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
142 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
143 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
159 int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
160 void (*free_func)(
void *));
163 #define mbedtls_free free
164 #define mbedtls_calloc calloc
170 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
184 int mbedtls_platform_set_fprintf(
int (*fprintf_func)(FILE *stream,
const char *,
187 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
188 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
190 #define mbedtls_fprintf fprintf
197 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
209 int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ...));
211 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
212 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
214 #define mbedtls_printf printf
227 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
229 int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
232 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
243 int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char *s,
size_t n,
244 const char *format, ...));
246 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
247 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
249 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
262 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
265 int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
268 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
270 extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
279 int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char *s,
size_t n,
280 const char *format, va_list arg));
282 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
283 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
285 #define mbedtls_vsnprintf vsnprintf
292 #if defined(MBEDTLS_PLATFORM_SETBUF_ALT)
321 int mbedtls_platform_set_setbuf(
void (*setbuf_func)(
322 FILE *stream,
char *buf));
323 #elif defined(MBEDTLS_PLATFORM_SETBUF_MACRO)
334 #define mbedtls_setbuf MBEDTLS_PLATFORM_SETBUF_MACRO
336 #define mbedtls_setbuf setbuf
342 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
354 int mbedtls_platform_set_exit(
void (*exit_func)(
int status));
356 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
357 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
359 #define mbedtls_exit exit
366 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
367 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
369 #define MBEDTLS_EXIT_SUCCESS 0
371 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
372 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
374 #define MBEDTLS_EXIT_FAILURE 1
383 #if defined(MBEDTLS_ENTROPY_NV_SEED)
384 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
386 int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
387 int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
390 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
391 extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len);
392 extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len);
403 int mbedtls_platform_set_nv_seed(
404 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
405 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
408 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
409 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
410 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
411 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
413 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
414 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
419 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
433 #include "platform_alt.h"
#define MBEDTLS_PRIVATE(member)
The platform context structure.
Macro wrapper for struct's members.
Build-time configuration info.