26#ifndef MBEDTLS_PLATFORM_H
27#define MBEDTLS_PLATFORM_H
32#if defined(MBEDTLS_HAVE_TIME)
52#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
53#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
54#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
57#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
60#if defined(MBEDTLS_HAVE_TIME)
63#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
64#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
65#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
67#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
70#if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
71#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
72#define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
74#define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
77#if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
78#define MBEDTLS_PLATFORM_STD_PRINTF printf
80#if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
81#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
83#if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
84#define MBEDTLS_PLATFORM_STD_CALLOC calloc
86#if !defined(MBEDTLS_PLATFORM_STD_FREE)
87#define MBEDTLS_PLATFORM_STD_FREE free
89#if !defined(MBEDTLS_PLATFORM_STD_SETBUF)
90#define MBEDTLS_PLATFORM_STD_SETBUF setbuf
92#if !defined(MBEDTLS_PLATFORM_STD_EXIT)
93#define MBEDTLS_PLATFORM_STD_EXIT exit
95#if !defined(MBEDTLS_PLATFORM_STD_TIME)
96#define MBEDTLS_PLATFORM_STD_TIME time
98#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
99#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
101#if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
102#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
104#if defined(MBEDTLS_FS_IO)
105#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
106#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
108#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
109#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
111#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
112#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
116#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
117#include MBEDTLS_PLATFORM_STD_MEM_HDR
123#if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_CALLOC)
124#define MBEDTLS_PLATFORM_STD_CALLOC
127#if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_FREE)
128#define MBEDTLS_PLATFORM_STD_FREE
138#if defined(MBEDTLS_PLATFORM_MEMORY)
139#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
140 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
143#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
144#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
160int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
161 void (*free_func)(
void *));
166#define mbedtls_free free
167#define mbedtls_calloc calloc
173#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
187int mbedtls_platform_set_fprintf(
int (*fprintf_func)(FILE *stream,
const char *,
190#undef mbedtls_fprintf
191#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
192#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
194#define mbedtls_fprintf fprintf
201#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
213int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ...));
216#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
217#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
219#define mbedtls_printf printf
232#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
234int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
237#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
248int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char *s,
size_t n,
249 const char *format, ...));
251#undef mbedtls_snprintf
252#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
253#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
255#define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
268#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
271int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
274#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
276extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
285int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char *s,
size_t n,
286 const char *format, va_list arg));
288#undef mbedtls_vsnprintf
289#if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
290#define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
292#define mbedtls_vsnprintf vsnprintf
299#if defined(MBEDTLS_PLATFORM_SETBUF_ALT)
328int mbedtls_platform_set_setbuf(
void (*setbuf_func)(
329 FILE *stream,
char *buf));
332#if defined(MBEDTLS_PLATFORM_SETBUF_MACRO)
343#define mbedtls_setbuf MBEDTLS_PLATFORM_SETBUF_MACRO
345#define mbedtls_setbuf setbuf
352#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
364int mbedtls_platform_set_exit(
void (*exit_func)(
int status));
367#if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
368#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
370#define mbedtls_exit exit
377#if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
378#define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
380#define MBEDTLS_EXIT_SUCCESS 0
382#if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
383#define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
385#define MBEDTLS_EXIT_FAILURE 1
394#if defined(MBEDTLS_ENTROPY_NV_SEED)
395#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
397int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
398int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
401#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
402extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len);
403extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len);
414int mbedtls_platform_set_nv_seed(
415 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
416 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
419#undef mbedtls_nv_seed_read
420#undef mbedtls_nv_seed_write
421#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
422 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
423#define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
424#define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
426#define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
427#define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
432#if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
Build-time configuration info.
Macro wrapper for struct's members.
#define MBEDTLS_PRIVATE(member)
The platform context structure.