00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef MBEDTLS_PLATFORM_H
00050 #define MBEDTLS_PLATFORM_H
00051
00052 #if !defined(MBEDTLS_CONFIG_FILE)
00053 #include "config.h"
00054 #else
00055 #include MBEDTLS_CONFIG_FILE
00056 #endif
00057
00058 #if defined(MBEDTLS_HAVE_TIME)
00059 #include "platform_time.h"
00060 #endif
00061
00062 #ifdef __cplusplus
00063 extern "C" {
00064 #endif
00065
00074 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
00075 #include <stdio.h>
00076 #include <stdlib.h>
00077 #include <time.h>
00078 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
00079 #if defined(_WIN32)
00080 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
00081 #else
00082 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
00083 #endif
00084 #endif
00085 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
00086 #define MBEDTLS_PLATFORM_STD_PRINTF printf
00087 #endif
00088 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
00089 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
00090 #endif
00091 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
00092 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
00093 #endif
00094 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
00095 #define MBEDTLS_PLATFORM_STD_FREE free
00096 #endif
00097 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
00098 #define MBEDTLS_PLATFORM_STD_EXIT exit
00099 #endif
00100 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
00101 #define MBEDTLS_PLATFORM_STD_TIME time
00102 #endif
00103 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00104 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
00105 #endif
00106 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00107 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
00108 #endif
00109 #if defined(MBEDTLS_FS_IO)
00110 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
00111 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
00112 #endif
00113 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
00114 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
00115 #endif
00116 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
00117 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
00118 #endif
00119 #endif
00120 #else
00121 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
00122 #include MBEDTLS_PLATFORM_STD_MEM_HDR
00123 #endif
00124 #endif
00125
00126
00127
00128
00129
00130
00131
00132 #if defined(MBEDTLS_PLATFORM_MEMORY)
00133 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
00134 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
00135 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
00136 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
00137 #else
00138
00139 #include <stddef.h>
00140 extern void * (*mbedtls_calloc)( size_t n, size_t size );
00141 extern void (*mbedtls_free)( void *ptr );
00142
00151 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
00152 void (*free_func)( void * ) );
00153 #endif
00154 #else
00155 #define mbedtls_free free
00156 #define mbedtls_calloc calloc
00157 #endif
00158
00159
00160
00161
00162 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
00163
00164 #include <stdio.h>
00165 extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
00166
00174 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
00175 ... ) );
00176 #else
00177 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
00178 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
00179 #else
00180 #define mbedtls_fprintf fprintf
00181 #endif
00182 #endif
00183
00184
00185
00186
00187 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
00188 extern int (*mbedtls_printf)( const char *format, ... );
00189
00198 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
00199 #else
00200 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
00201 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
00202 #else
00203 #define mbedtls_printf printf
00204 #endif
00205 #endif
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216 #if defined(_WIN32)
00217
00218 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
00219 #endif
00220
00221 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
00222 extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
00223
00232 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
00233 const char * format, ... ) );
00234 #else
00235 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
00236 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
00237 #else
00238 #define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
00239 #endif
00240 #endif
00241
00242
00243
00244
00245 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
00246 extern void (*mbedtls_exit)( int status );
00247
00256 int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
00257 #else
00258 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
00259 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
00260 #else
00261 #define mbedtls_exit exit
00262 #endif
00263 #endif
00264
00265
00266
00267
00268 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00269 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
00270 #else
00271 #define MBEDTLS_EXIT_SUCCESS 0
00272 #endif
00273 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00274 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
00275 #else
00276 #define MBEDTLS_EXIT_FAILURE 1
00277 #endif
00278
00279
00280
00281
00282
00283
00284
00285 #if defined(MBEDTLS_ENTROPY_NV_SEED)
00286 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
00287
00288 int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len );
00289 int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len );
00290 #endif
00291
00292 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
00293 extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len );
00294 extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len );
00295
00305 int mbedtls_platform_set_nv_seed(
00306 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
00307 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len )
00308 );
00309 #else
00310 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
00311 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
00312 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
00313 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
00314 #else
00315 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
00316 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
00317 #endif
00318 #endif
00319 #endif
00320
00321 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
00322
00329 typedef struct {
00330 char dummy;
00331 }
00332 mbedtls_platform_context;
00333
00334 #else
00335 #include "platform_alt.h"
00336 #endif
00337
00353 int mbedtls_platform_setup( mbedtls_platform_context *ctx );
00367 void mbedtls_platform_teardown( mbedtls_platform_context *ctx );
00368
00369 #ifdef __cplusplus
00370 }
00371 #endif
00372
00373 #endif