38 #ifndef MBEDTLS_PLATFORM_H
39 #define MBEDTLS_PLATFORM_H
41 #if !defined(MBEDTLS_CONFIG_FILE)
44 #include MBEDTLS_CONFIG_FILE
47 #if defined(MBEDTLS_HAVE_TIME)
52 #define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070
54 #define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072
72 #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
73 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
74 #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
77 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
80 #if defined(MBEDTLS_HAVE_TIME)
83 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
84 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
85 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
87 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
90 #if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
91 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
92 #define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
94 #define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
97 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
98 #define MBEDTLS_PLATFORM_STD_PRINTF printf
100 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
101 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
103 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
104 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
106 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
107 #define MBEDTLS_PLATFORM_STD_FREE free
109 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
110 #define MBEDTLS_PLATFORM_STD_EXIT exit
112 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
113 #define MBEDTLS_PLATFORM_STD_TIME time
115 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
116 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
118 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
119 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
121 #if defined(MBEDTLS_FS_IO)
122 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
123 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
125 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
126 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
128 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
129 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
133 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
134 #include MBEDTLS_PLATFORM_STD_MEM_HDR
144 #if defined(MBEDTLS_PLATFORM_MEMORY)
145 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
146 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
148 #undef mbedtls_calloc
149 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
150 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
166 int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
167 void (*free_func)(
void *));
171 #undef mbedtls_calloc
172 #define mbedtls_free free
173 #define mbedtls_calloc calloc
179 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
193 int mbedtls_platform_set_fprintf(
int (*fprintf_func)(FILE *stream,
const char *,
196 #undef mbedtls_fprintf
197 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
198 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
200 #define mbedtls_fprintf fprintf
207 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
219 int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ...));
221 #undef mbedtls_printf
222 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
223 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
225 #define mbedtls_printf printf
238 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
240 int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
243 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
254 int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char *s,
size_t n,
255 const char *format, ...));
257 #undef mbedtls_snprintf
258 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
259 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
261 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
274 #if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
277 int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
280 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
282 extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
291 int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char *s,
size_t n,
292 const char *format, va_list arg));
294 #undef mbedtls_vsnprintf
295 #if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
296 #define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
298 #define mbedtls_vsnprintf vsnprintf
305 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
317 int mbedtls_platform_set_exit(
void (*exit_func)(
int status));
320 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
321 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
323 #define mbedtls_exit exit
330 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
331 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
333 #define MBEDTLS_EXIT_SUCCESS 0
335 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
336 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
338 #define MBEDTLS_EXIT_FAILURE 1
347 #if defined(MBEDTLS_ENTROPY_NV_SEED)
348 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
350 int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
351 int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
354 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
355 extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len);
356 extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len);
367 int mbedtls_platform_set_nv_seed(
368 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
369 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
372 #undef mbedtls_nv_seed_read
373 #undef mbedtls_nv_seed_write
374 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
375 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
376 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
377 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
379 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
380 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
385 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
399 #include "platform_alt.h"
Configuration options (set of defines)
The platform context structure.