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 #if defined(MBEDTLS_HAVE_TIME)
00033 #include "mbedtls/platform_time.h"
00034 #endif
00035
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039
00048 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
00049 #include <stdio.h>
00050 #include <stdlib.h>
00051 #include <time.h>
00052 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
00053 #if defined(_WIN32)
00054 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf
00055 #else
00056 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf
00057 #endif
00058 #endif
00059 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
00060 #define MBEDTLS_PLATFORM_STD_PRINTF printf
00061 #endif
00062 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
00063 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf
00064 #endif
00065 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
00066 #define MBEDTLS_PLATFORM_STD_CALLOC calloc
00067 #endif
00068 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
00069 #define MBEDTLS_PLATFORM_STD_FREE free
00070 #endif
00071 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
00072 #define MBEDTLS_PLATFORM_STD_EXIT exit
00073 #endif
00074 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
00075 #define MBEDTLS_PLATFORM_STD_TIME time
00076 #endif
00077 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00078 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS
00079 #endif
00080 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00081 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE
00082 #endif
00083 #if defined(MBEDTLS_FS_IO)
00084 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
00085 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
00086 #endif
00087 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
00088 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
00089 #endif
00090 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
00091 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
00092 #endif
00093 #endif
00094 #else
00095 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
00096 #include MBEDTLS_PLATFORM_STD_MEM_HDR
00097 #endif
00098 #endif
00099
00100
00101
00102
00103
00104
00105
00106 #if defined(MBEDTLS_PLATFORM_MEMORY)
00107 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
00108 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
00109 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
00110 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
00111 #else
00112
00113 #include <stddef.h>
00114 extern void * (*mbedtls_calloc)( size_t n, size_t size );
00115 extern void (*mbedtls_free)( void *ptr );
00116
00125 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
00126 void (*free_func)( void * ) );
00127 #endif
00128 #else
00129 #define mbedtls_free free
00130 #define mbedtls_calloc calloc
00131 #endif
00132
00133
00134
00135
00136 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
00137
00138 #include <stdio.h>
00139 extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
00140
00148 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
00149 ... ) );
00150 #else
00151 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
00152 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
00153 #else
00154 #define mbedtls_fprintf fprintf
00155 #endif
00156 #endif
00157
00158
00159
00160
00161 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
00162 extern int (*mbedtls_printf)( const char *format, ... );
00163
00171 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
00172 #else
00173 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
00174 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
00175 #else
00176 #define mbedtls_printf printf
00177 #endif
00178 #endif
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 #if defined(_WIN32)
00190
00191 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
00192 #endif
00193
00194 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
00195 extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
00196
00204 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
00205 const char * format, ... ) );
00206 #else
00207 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
00208 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
00209 #else
00210 #define mbedtls_snprintf snprintf
00211 #endif
00212 #endif
00213
00214
00215
00216
00217 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
00218 extern void (*mbedtls_exit)( int status );
00219
00227 int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
00228 #else
00229 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
00230 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
00231 #else
00232 #define mbedtls_exit exit
00233 #endif
00234 #endif
00235
00236
00237
00238
00239 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
00240 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
00241 #else
00242 #define MBEDTLS_EXIT_SUCCESS 0
00243 #endif
00244 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
00245 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
00246 #else
00247 #define MBEDTLS_EXIT_FAILURE 1
00248 #endif
00249
00250
00251
00252
00253
00254
00255
00256 #if defined(MBEDTLS_ENTROPY_NV_SEED)
00257 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
00258
00259 int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len );
00260 int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len );
00261 #endif
00262
00263 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
00264 extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len );
00265 extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len );
00266
00275 int mbedtls_platform_set_nv_seed(
00276 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
00277 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len )
00278 );
00279 #else
00280 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
00281 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
00282 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
00283 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
00284 #else
00285 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
00286 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
00287 #endif
00288 #endif
00289 #endif
00290
00291 #ifdef __cplusplus
00292 }
00293 #endif
00294
00295 #endif