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
159int 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)
184int 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)
209int 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)
229int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ... );
232#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
233extern int (*
mbedtls_snprintf)(
char * s,
size_t n,
const char * format, ... );
243int 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)
265int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg );
268#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
270extern int (*
mbedtls_vsnprintf)(
char * s,
size_t n,
const char * format, va_list arg );
279int 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)
321int 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)
354int 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)
386int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len );
387int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len );
390#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
391extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len );
392extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len );
403int 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)
434#include "platform_alt.h"
Build-time configuration info.
Macro wrapper for struct's members.
#define MBEDTLS_PRIVATE(member)
The platform context structure.