00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef MBEDTLS_PLATFORM_H
00025 #define MBEDTLS_PLATFORM_H
00026
00027 #if !defined(MBEDTLS_CONFIG_FILE)
00028 #include "config.h"
00029 #else
00030 #include MBEDTLS_CONFIG_FILE
00031 #endif
00032
00033 #if defined(MBEDTLS_HAVE_TIME)
00034 #include "platform_time.h"
00035 #endif
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00049 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
00050 #include <stdio.h>
00051 #include <stdlib.h>
00052 #include <time.h>
00053 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
00054 #if defined(_WIN32)
00055 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
00056 #else
00057 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
00058 #endif
00059 #endif
00060 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
00061 #define MBEDTLS_PLATFORM_STD_PRINTF printf
00062 #endif
00063 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
00064 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
00065 #endif
00066 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
00067 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
00068 #endif
00069 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
00070 #define MBEDTLS_PLATFORM_STD_FREE free
00071 #endif
00072 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
00073 #define MBEDTLS_PLATFORM_STD_EXIT exit
00074 #endif
00075 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
00076 #define MBEDTLS_PLATFORM_STD_TIME time
00077 #endif
00078 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00079 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
00080 #endif
00081 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00082 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
00083 #endif
00084 #if defined(MBEDTLS_FS_IO)
00085 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
00086 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
00087 #endif
00088 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
00089 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
00090 #endif
00091 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
00092 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
00093 #endif
00094 #endif
00095 #else
00096 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
00097 #include MBEDTLS_PLATFORM_STD_MEM_HDR
00098 #endif
00099 #endif
00100
00101
00102
00103
00104
00105
00106
00107 #if defined(MBEDTLS_PLATFORM_MEMORY)
00108 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
00109 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
00110 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
00111 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
00112 #else
00113
00114 #include <stddef.h>
00115 extern void * (*mbedtls_calloc)( size_t n, size_t size );
00116 extern void (*mbedtls_free)( void *ptr );
00117
00126 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
00127 void (*free_func)( void * ) );
00128 #endif
00129 #else
00130 #define mbedtls_free free
00131 #define mbedtls_calloc calloc
00132 #endif
00133
00134
00135
00136
00137 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
00138
00139 #include <stdio.h>
00140 extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
00141
00149 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
00150 ... ) );
00151 #else
00152 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
00153 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
00154 #else
00155 #define mbedtls_fprintf fprintf
00156 #endif
00157 #endif
00158
00159
00160
00161
00162 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
00163 extern int (*mbedtls_printf)( const char *format, ... );
00164
00173 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
00174 #else
00175 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
00176 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
00177 #else
00178 #define mbedtls_printf printf
00179 #endif
00180 #endif
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 #if defined(_WIN32)
00192
00193 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
00194 #endif
00195
00196 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
00197 extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
00198
00207 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
00208 const char * format, ... ) );
00209 #else
00210 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
00211 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
00212 #else
00213 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
00214 #endif
00215 #endif
00216
00217
00218
00219
00220 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
00221 extern void (*mbedtls_exit)( int status );
00222
00231 int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
00232 #else
00233 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
00234 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
00235 #else
00236 #define mbedtls_exit exit
00237 #endif
00238 #endif
00239
00240
00241
00242
00243 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00244 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
00245 #else
00246 #define MBEDTLS_EXIT_SUCCESS 0
00247 #endif
00248 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00249 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
00250 #else
00251 #define MBEDTLS_EXIT_FAILURE 1
00252 #endif
00253
00254
00255
00256
00257
00258
00259
00260 #if defined(MBEDTLS_ENTROPY_NV_SEED)
00261 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
00262
00263 int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len );
00264 int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len );
00265 #endif
00266
00267 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
00268 extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len );
00269 extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len );
00270
00280 int mbedtls_platform_set_nv_seed(
00281 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
00282 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len )
00283 );
00284 #else
00285 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
00286 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
00287 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
00288 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
00289 #else
00290 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
00291 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
00292 #endif
00293 #endif
00294 #endif
00295
00296 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
00297
00304 typedef struct {
00305 char dummy;
00306 }
00307 mbedtls_platform_context;
00308
00309 #else
00310 #include "platform_alt.h"
00311 #endif
00312
00328 int mbedtls_platform_setup( mbedtls_platform_context *ctx );
00342 void mbedtls_platform_teardown( mbedtls_platform_context *ctx );
00343
00344 #ifdef __cplusplus
00345 }
00346 #endif
00347
00348 #endif