26 #ifndef MBEDTLS_PLATFORM_H
27 #define MBEDTLS_PLATFORM_H
29 #if !defined(MBEDTLS_CONFIG_FILE)
32 #include MBEDTLS_CONFIG_FILE
35 #if defined(MBEDTLS_HAVE_TIME)
40 #define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070
42 #define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072
60 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
61 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
62 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
65 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
68 #if defined(MBEDTLS_HAVE_TIME)
71 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
72 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
73 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
75 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
78 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
79 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
80 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
82 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
85 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
86 #define MBEDTLS_PLATFORM_STD_PRINTF printf
88 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
89 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
91 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
92 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
94 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
95 #define MBEDTLS_PLATFORM_STD_FREE free
97 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
98 #define MBEDTLS_PLATFORM_STD_EXIT exit
100 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
101 #define MBEDTLS_PLATFORM_STD_TIME time
103 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
104 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
106 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
107 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
109 #if defined(MBEDTLS_FS_IO)
110 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
111 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
113 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
114 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
116 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
117 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
121 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
122 #include MBEDTLS_PLATFORM_STD_MEM_HDR
128 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_CALLOC)
129 #define MBEDTLS_PLATFORM_STD_CALLOC
132 #if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_FREE)
133 #define MBEDTLS_PLATFORM_STD_FREE
143 #if defined(MBEDTLS_PLATFORM_MEMORY)
144 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
145 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
147 #undef mbedtls_calloc
148 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
149 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
165 int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
166 void (*free_func)(
void *));
170 #undef mbedtls_calloc
171 #define mbedtls_free free
172 #define mbedtls_calloc calloc
178 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
192 int mbedtls_platform_set_fprintf(
int (*fprintf_func)(FILE *stream,
const char *,
195 #undef mbedtls_fprintf
196 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
197 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
199 #define mbedtls_fprintf fprintf
206 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
218 int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ...));
220 #undef mbedtls_printf
221 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
222 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
224 #define mbedtls_printf printf
237 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
239 int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
242 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
253 int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char *s,
size_t n,
254 const char *format, ...));
256 #undef mbedtls_snprintf
257 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
258 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
260 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
273 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
276 int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
279 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
281 extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
290 int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char *s,
size_t n,
291 const char *format, va_list arg));
293 #undef mbedtls_vsnprintf
294 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
295 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
297 #define mbedtls_vsnprintf vsnprintf
304 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
316 int mbedtls_platform_set_exit(
void (*exit_func)(
int status));
319 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
320 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
322 #define mbedtls_exit exit
329 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
330 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
332 #define MBEDTLS_EXIT_SUCCESS 0
334 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
335 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
337 #define MBEDTLS_EXIT_FAILURE 1
346 #if defined(MBEDTLS_ENTROPY_NV_SEED)
347 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
349 int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
350 int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
353 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
354 extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len);
355 extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len);
366 int mbedtls_platform_set_nv_seed(
367 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
368 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
371 #undef mbedtls_nv_seed_read
372 #undef mbedtls_nv_seed_write
373 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
374 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
375 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
376 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
378 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
379 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
384 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
398 #include "platform_alt.h"
Configuration options (set of defines)
The platform context structure.