31 #ifndef MBEDTLS_PLATFORM_H
32 #define MBEDTLS_PLATFORM_H
34 #if !defined(MBEDTLS_CONFIG_FILE)
37 #include MBEDTLS_CONFIG_FILE
40 #if defined(MBEDTLS_HAVE_TIME)
45 #define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070
47 #define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072
65 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
66 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
67 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
70 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
73 #if defined(MBEDTLS_HAVE_TIME)
76 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
77 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
78 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
80 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
83 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
84 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
85 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
87 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
90 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
91 #define MBEDTLS_PLATFORM_STD_PRINTF printf
93 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
94 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
96 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
97 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
99 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
100 #define MBEDTLS_PLATFORM_STD_FREE free
102 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
103 #define MBEDTLS_PLATFORM_STD_EXIT exit
105 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
106 #define MBEDTLS_PLATFORM_STD_TIME time
108 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
109 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
111 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
112 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
114 #if defined(MBEDTLS_FS_IO)
115 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
116 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
118 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
119 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
121 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
122 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
126 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
127 #include MBEDTLS_PLATFORM_STD_MEM_HDR
137 #if defined(MBEDTLS_PLATFORM_MEMORY)
138 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
139 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
140 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
141 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
157 int mbedtls_platform_set_calloc_free(
void * (*calloc_func)(
size_t,
size_t ),
158 void (*free_func)(
void * ) );
161 #define mbedtls_free free
162 #define mbedtls_calloc calloc
168 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
171 extern int (*
mbedtls_fprintf)( FILE *stream,
const char *format, ... );
182 int mbedtls_platform_set_fprintf(
int (*fprintf_func)( FILE *stream,
const char *,
185 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
186 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
188 #define mbedtls_fprintf fprintf
195 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
207 int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ... ) );
209 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
210 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
212 #define mbedtls_printf printf
225 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
227 int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ... );
230 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
231 extern int (*
mbedtls_snprintf)(
char * s,
size_t n,
const char * format, ... );
241 int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char * s,
size_t n,
242 const char * format, ... ) );
244 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
245 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
247 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
260 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
263 int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg );
266 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
268 extern int (*
mbedtls_vsnprintf)(
char * s,
size_t n,
const char * format, va_list arg );
277 int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char * s,
size_t n,
278 const char * format, va_list arg ) );
280 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
281 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
283 #define mbedtls_vsnprintf vsnprintf
290 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
302 int mbedtls_platform_set_exit(
void (*exit_func)(
int status ) );
304 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
305 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
307 #define mbedtls_exit exit
314 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
315 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
317 #define MBEDTLS_EXIT_SUCCESS 0
319 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
320 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
322 #define MBEDTLS_EXIT_FAILURE 1
331 #if defined(MBEDTLS_ENTROPY_NV_SEED)
332 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
334 int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len );
335 int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len );
338 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
339 extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len );
340 extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len );
351 int mbedtls_platform_set_nv_seed(
352 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len ),
353 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len )
356 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
357 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
358 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
359 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
361 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
362 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
367 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
382 #include "platform_alt.h"
Configuration options (set of defines)
The platform context structure.