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)
44#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070
45#define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072
63#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
64#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
65#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
68#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
72#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
73#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
74#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
76#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
79#if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF)
80#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
81#define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf
83#define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf
86#if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
87#define MBEDTLS_PLATFORM_STD_PRINTF printf
89#if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
90#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
92#if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
93#define MBEDTLS_PLATFORM_STD_CALLOC calloc
95#if !defined(MBEDTLS_PLATFORM_STD_FREE)
96#define MBEDTLS_PLATFORM_STD_FREE free
98#if !defined(MBEDTLS_PLATFORM_STD_EXIT)
99#define MBEDTLS_PLATFORM_STD_EXIT exit
101#if !defined(MBEDTLS_PLATFORM_STD_TIME)
102#define MBEDTLS_PLATFORM_STD_TIME time
104#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
105#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
107#if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
108#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
110#if defined(MBEDTLS_FS_IO)
111#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
112#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
114#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
115#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
117#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
118#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
122#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
123#include MBEDTLS_PLATFORM_STD_MEM_HDR
133#if defined(MBEDTLS_PLATFORM_MEMORY)
134#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
135 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
136#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
137#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
153int mbedtls_platform_set_calloc_free(
void * (*calloc_func)(
size_t,
size_t ),
154 void (*free_func)(
void * ) );
157#define mbedtls_free free
158#define mbedtls_calloc calloc
164#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
178int mbedtls_platform_set_fprintf(
int (*fprintf_func)( FILE *stream,
const char *,
181#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
182#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
184#define mbedtls_fprintf fprintf
191#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
203int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ... ) );
205#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
206#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
208#define mbedtls_printf printf
221#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
223int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ... );
226#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
227extern int (*
mbedtls_snprintf)(
char * s,
size_t n,
const char * format, ... );
237int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char * s,
size_t n,
238 const char * format, ... ) );
240#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
241#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
243#define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
256#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
259int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg );
262#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
264extern int (*
mbedtls_vsnprintf)(
char * s,
size_t n,
const char * format, va_list arg );
273int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char * s,
size_t n,
274 const char * format, va_list arg ) );
276#if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
277#define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
279#define mbedtls_vsnprintf vsnprintf
286#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
298int mbedtls_platform_set_exit(
void (*exit_func)(
int status ) );
300#if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
301#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
303#define mbedtls_exit exit
310#if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
311#define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
313#define MBEDTLS_EXIT_SUCCESS 0
315#if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
316#define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
318#define MBEDTLS_EXIT_FAILURE 1
327#if defined(MBEDTLS_ENTROPY_NV_SEED)
328#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
330int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len );
331int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len );
334#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
335extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len );
336extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len );
347int mbedtls_platform_set_nv_seed(
348 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len ),
349 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len )
352#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
353 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
354#define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
355#define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
357#define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
358#define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
363#if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
378#include "platform_alt.h"
Configuration options (set of defines)
The platform context structure.