00001
00023 #ifndef MBEDTLS_PLATFORM_H
00024 #define MBEDTLS_PLATFORM_H
00025
00026 #if !defined(MBEDTLS_CONFIG_FILE)
00027 #include "config.h"
00028 #else
00029 #include MBEDTLS_CONFIG_FILE
00030 #endif
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00044 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
00045 #include <stdio.h>
00046 #include <stdlib.h>
00047 #include <time.h>
00048 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
00049 #if defined(_WIN32)
00050 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
00051 #else
00052 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
00053 #endif
00054 #endif
00055 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
00056 #define MBEDTLS_PLATFORM_STD_PRINTF printf
00057 #endif
00058 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
00059 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
00060 #endif
00061 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
00062 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
00063 #endif
00064 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
00065 #define MBEDTLS_PLATFORM_STD_FREE free
00066 #endif
00067 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
00068 #define MBEDTLS_PLATFORM_STD_EXIT exit
00069 #endif
00070 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
00071 #define MBEDTLS_PLATFORM_STD_TIME time
00072 #endif
00073 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00074 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
00075 #endif
00076 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00077 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
00078 #endif
00079 #if defined(MBEDTLS_FS_IO)
00080 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
00081 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
00082 #endif
00083 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
00084 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
00085 #endif
00086 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
00087 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
00088 #endif
00089 #endif
00090 #else
00091 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
00092 #include MBEDTLS_PLATFORM_STD_MEM_HDR
00093 #endif
00094 #endif
00095
00096
00097
00098
00099
00100
00101
00102 #if defined(MBEDTLS_PLATFORM_MEMORY)
00103 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
00104 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
00105 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
00106 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
00107 #else
00108
00109 #include <stddef.h>
00110 extern void * (*mbedtls_calloc)( size_t n, size_t size );
00111 extern void (*mbedtls_free)( void *ptr );
00112
00121 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
00122 void (*free_func)( void * ) );
00123 #endif
00124 #else
00125 #define mbedtls_free free
00126 #define mbedtls_calloc calloc
00127 #endif
00128
00129
00130
00131
00132 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
00133
00134 #include <stdio.h>
00135 extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
00136
00144 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
00145 ... ) );
00146 #else
00147 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
00148 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
00149 #else
00150 #define mbedtls_fprintf fprintf
00151 #endif
00152 #endif
00153
00154
00155
00156
00157 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
00158 extern int (*mbedtls_printf)( const char *format, ... );
00159
00167 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
00168 #else
00169 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
00170 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
00171 #else
00172 #define mbedtls_printf printf
00173 #endif
00174 #endif
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 #if defined(_WIN32)
00186
00187 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
00188 #endif
00189
00190 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
00191 extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
00192
00200 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
00201 const char * format, ... ) );
00202 #else
00203 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
00204 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
00205 #else
00206 #define mbedtls_snprintf snprintf
00207 #endif
00208 #endif
00209
00210
00211
00212
00213 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
00214 extern void (*mbedtls_exit)( int status );
00215
00223 int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
00224 #else
00225 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
00226 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
00227 #else
00228 #define mbedtls_exit exit
00229 #endif
00230 #endif
00231
00232
00233
00234
00235 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00236 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
00237 #else
00238 #define MBEDTLS_EXIT_SUCCESS 0
00239 #endif
00240 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00241 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
00242 #else
00243 #define MBEDTLS_EXIT_FAILURE 1
00244 #endif
00245
00246
00247
00248
00249 #if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO)
00250 typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t;
00251 #else
00252
00253 #include <time.h>
00254 typedef time_t mbedtls_time_t;
00255 #endif
00256
00257
00258
00259
00260 #if defined(MBEDTLS_PLATFORM_TIME_ALT)
00261 extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time );
00262
00270 int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) );
00271 #else
00272 #if defined(MBEDTLS_PLATFORM_TIME_MACRO)
00273 #define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO
00274 #else
00275 #define mbedtls_time time
00276 #endif
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
00304 int mbedtls_platform_set_nv_seed(
00305 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
00306 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len )
00307 );
00308 #else
00309 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
00310 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
00311 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
00312 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
00313 #else
00314 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
00315 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
00316 #endif
00317 #endif
00318 #endif
00319
00320 #ifdef __cplusplus
00321 }
00322 #endif
00323
00324 #endif