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
140#if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_CALLOC)
141#define MBEDTLS_PLATFORM_STD_CALLOC
144#if defined(__DOXYGEN__) && !defined(MBEDTLS_PLATFORM_STD_FREE)
145#define MBEDTLS_PLATFORM_STD_FREE
155#if defined(MBEDTLS_PLATFORM_MEMORY)
156#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
157 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
160#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
161#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
177int mbedtls_platform_set_calloc_free(
void *(*calloc_func)(
size_t,
size_t),
178 void (*free_func)(
void *));
183#define mbedtls_free free
184#define mbedtls_calloc calloc
190#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
204int mbedtls_platform_set_fprintf(
int (*fprintf_func)(FILE *stream,
const char *,
207#undef mbedtls_fprintf
208#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
209#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
211#define mbedtls_fprintf fprintf
218#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
230int mbedtls_platform_set_printf(
int (*printf_func)(
const char *, ...));
233#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
234#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
236#define mbedtls_printf printf
249#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
251int mbedtls_platform_win32_snprintf(
char *s,
size_t n,
const char *fmt, ...);
254#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
265int mbedtls_platform_set_snprintf(
int (*snprintf_func)(
char *s,
size_t n,
266 const char *format, ...));
268#undef mbedtls_snprintf
269#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
270#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
272#define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
285#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
288int mbedtls_platform_win32_vsnprintf(
char *s,
size_t n,
const char *fmt, va_list arg);
291#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
293extern int (*
mbedtls_vsnprintf)(
char *s,
size_t n,
const char *format, va_list arg);
302int mbedtls_platform_set_vsnprintf(
int (*vsnprintf_func)(
char *s,
size_t n,
303 const char *format, va_list arg));
305#undef mbedtls_vsnprintf
306#if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO)
307#define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO
309#define mbedtls_vsnprintf vsnprintf
316#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
328int mbedtls_platform_set_exit(
void (*exit_func)(
int status));
331#if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
332#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
334#define mbedtls_exit exit
341#if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
342#define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
344#define MBEDTLS_EXIT_SUCCESS 0
346#if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
347#define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
349#define MBEDTLS_EXIT_FAILURE 1
358#if defined(MBEDTLS_ENTROPY_NV_SEED)
359#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
361int mbedtls_platform_std_nv_seed_read(
unsigned char *buf,
size_t buf_len);
362int mbedtls_platform_std_nv_seed_write(
unsigned char *buf,
size_t buf_len);
365#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
366extern int (*mbedtls_nv_seed_read)(
unsigned char *buf,
size_t buf_len);
367extern int (*mbedtls_nv_seed_write)(
unsigned char *buf,
size_t buf_len);
378int mbedtls_platform_set_nv_seed(
379 int (*nv_seed_read_func)(
unsigned char *buf,
size_t buf_len),
380 int (*nv_seed_write_func)(
unsigned char *buf,
size_t buf_len)
383#undef mbedtls_nv_seed_read
384#undef mbedtls_nv_seed_write
385#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
386 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
387#define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
388#define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
390#define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
391#define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
396#if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
410#include "platform_alt.h"
Configuration options (set of defines)
The platform context structure.