RTC auf true

Committer:
kevman
Date:
Wed Nov 28 15:10:15 2018 +0000
Revision:
0:38ceb79fef03
RTC modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 0:38ceb79fef03 1 /*
kevman 0:38ceb79fef03 2 * Platform abstraction layer
kevman 0:38ceb79fef03 3 *
kevman 0:38ceb79fef03 4 * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved
kevman 0:38ceb79fef03 5 * SPDX-License-Identifier: Apache-2.0
kevman 0:38ceb79fef03 6 *
kevman 0:38ceb79fef03 7 * Licensed under the Apache License, Version 2.0 (the "License"); you may
kevman 0:38ceb79fef03 8 * not use this file except in compliance with the License.
kevman 0:38ceb79fef03 9 * You may obtain a copy of the License at
kevman 0:38ceb79fef03 10 *
kevman 0:38ceb79fef03 11 * http://www.apache.org/licenses/LICENSE-2.0
kevman 0:38ceb79fef03 12 *
kevman 0:38ceb79fef03 13 * Unless required by applicable law or agreed to in writing, software
kevman 0:38ceb79fef03 14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
kevman 0:38ceb79fef03 15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kevman 0:38ceb79fef03 16 * See the License for the specific language governing permissions and
kevman 0:38ceb79fef03 17 * limitations under the License.
kevman 0:38ceb79fef03 18 *
kevman 0:38ceb79fef03 19 * This file is part of mbed TLS (https://tls.mbed.org)
kevman 0:38ceb79fef03 20 */
kevman 0:38ceb79fef03 21
kevman 0:38ceb79fef03 22 #if !defined(MBEDTLS_CONFIG_FILE)
kevman 0:38ceb79fef03 23 #include "mbedtls/config.h"
kevman 0:38ceb79fef03 24 #else
kevman 0:38ceb79fef03 25 #include MBEDTLS_CONFIG_FILE
kevman 0:38ceb79fef03 26 #endif
kevman 0:38ceb79fef03 27
kevman 0:38ceb79fef03 28 #if defined(MBEDTLS_PLATFORM_C)
kevman 0:38ceb79fef03 29
kevman 0:38ceb79fef03 30 #include "mbedtls/platform.h"
kevman 0:38ceb79fef03 31 #include "mbedtls/platform_util.h"
kevman 0:38ceb79fef03 32
kevman 0:38ceb79fef03 33 #if defined(MBEDTLS_PLATFORM_MEMORY)
kevman 0:38ceb79fef03 34 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
kevman 0:38ceb79fef03 35 static void *platform_calloc_uninit( size_t n, size_t size )
kevman 0:38ceb79fef03 36 {
kevman 0:38ceb79fef03 37 ((void) n);
kevman 0:38ceb79fef03 38 ((void) size);
kevman 0:38ceb79fef03 39 return( NULL );
kevman 0:38ceb79fef03 40 }
kevman 0:38ceb79fef03 41
kevman 0:38ceb79fef03 42 #define MBEDTLS_PLATFORM_STD_CALLOC platform_calloc_uninit
kevman 0:38ceb79fef03 43 #endif /* !MBEDTLS_PLATFORM_STD_CALLOC */
kevman 0:38ceb79fef03 44
kevman 0:38ceb79fef03 45 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
kevman 0:38ceb79fef03 46 static void platform_free_uninit( void *ptr )
kevman 0:38ceb79fef03 47 {
kevman 0:38ceb79fef03 48 ((void) ptr);
kevman 0:38ceb79fef03 49 }
kevman 0:38ceb79fef03 50
kevman 0:38ceb79fef03 51 #define MBEDTLS_PLATFORM_STD_FREE platform_free_uninit
kevman 0:38ceb79fef03 52 #endif /* !MBEDTLS_PLATFORM_STD_FREE */
kevman 0:38ceb79fef03 53
kevman 0:38ceb79fef03 54 static void * (*mbedtls_calloc_func)( size_t, size_t ) = MBEDTLS_PLATFORM_STD_CALLOC;
kevman 0:38ceb79fef03 55 static void (*mbedtls_free_func)( void * ) = MBEDTLS_PLATFORM_STD_FREE;
kevman 0:38ceb79fef03 56
kevman 0:38ceb79fef03 57 void * mbedtls_calloc( size_t nmemb, size_t size )
kevman 0:38ceb79fef03 58 {
kevman 0:38ceb79fef03 59 return (*mbedtls_calloc_func)( nmemb, size );
kevman 0:38ceb79fef03 60 }
kevman 0:38ceb79fef03 61
kevman 0:38ceb79fef03 62 void mbedtls_free( void * ptr )
kevman 0:38ceb79fef03 63 {
kevman 0:38ceb79fef03 64 (*mbedtls_free_func)( ptr );
kevman 0:38ceb79fef03 65 }
kevman 0:38ceb79fef03 66
kevman 0:38ceb79fef03 67 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
kevman 0:38ceb79fef03 68 void (*free_func)( void * ) )
kevman 0:38ceb79fef03 69 {
kevman 0:38ceb79fef03 70 mbedtls_calloc_func = calloc_func;
kevman 0:38ceb79fef03 71 mbedtls_free_func = free_func;
kevman 0:38ceb79fef03 72 return( 0 );
kevman 0:38ceb79fef03 73 }
kevman 0:38ceb79fef03 74 #endif /* MBEDTLS_PLATFORM_MEMORY */
kevman 0:38ceb79fef03 75
kevman 0:38ceb79fef03 76 #if defined(_WIN32)
kevman 0:38ceb79fef03 77 #include <stdarg.h>
kevman 0:38ceb79fef03 78 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... )
kevman 0:38ceb79fef03 79 {
kevman 0:38ceb79fef03 80 int ret;
kevman 0:38ceb79fef03 81 va_list argp;
kevman 0:38ceb79fef03 82
kevman 0:38ceb79fef03 83 /* Avoid calling the invalid parameter handler by checking ourselves */
kevman 0:38ceb79fef03 84 if( s == NULL || n == 0 || fmt == NULL )
kevman 0:38ceb79fef03 85 return( -1 );
kevman 0:38ceb79fef03 86
kevman 0:38ceb79fef03 87 va_start( argp, fmt );
kevman 0:38ceb79fef03 88 #if defined(_TRUNCATE) && !defined(__MINGW32__)
kevman 0:38ceb79fef03 89 ret = _vsnprintf_s( s, n, _TRUNCATE, fmt, argp );
kevman 0:38ceb79fef03 90 #else
kevman 0:38ceb79fef03 91 ret = _vsnprintf( s, n, fmt, argp );
kevman 0:38ceb79fef03 92 if( ret < 0 || (size_t) ret == n )
kevman 0:38ceb79fef03 93 {
kevman 0:38ceb79fef03 94 s[n-1] = '\0';
kevman 0:38ceb79fef03 95 ret = -1;
kevman 0:38ceb79fef03 96 }
kevman 0:38ceb79fef03 97 #endif
kevman 0:38ceb79fef03 98 va_end( argp );
kevman 0:38ceb79fef03 99
kevman 0:38ceb79fef03 100 return( ret );
kevman 0:38ceb79fef03 101 }
kevman 0:38ceb79fef03 102 #endif
kevman 0:38ceb79fef03 103
kevman 0:38ceb79fef03 104 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
kevman 0:38ceb79fef03 105 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
kevman 0:38ceb79fef03 106 /*
kevman 0:38ceb79fef03 107 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 108 */
kevman 0:38ceb79fef03 109 static int platform_snprintf_uninit( char * s, size_t n,
kevman 0:38ceb79fef03 110 const char * format, ... )
kevman 0:38ceb79fef03 111 {
kevman 0:38ceb79fef03 112 ((void) s);
kevman 0:38ceb79fef03 113 ((void) n);
kevman 0:38ceb79fef03 114 ((void) format);
kevman 0:38ceb79fef03 115 return( 0 );
kevman 0:38ceb79fef03 116 }
kevman 0:38ceb79fef03 117
kevman 0:38ceb79fef03 118 #define MBEDTLS_PLATFORM_STD_SNPRINTF platform_snprintf_uninit
kevman 0:38ceb79fef03 119 #endif /* !MBEDTLS_PLATFORM_STD_SNPRINTF */
kevman 0:38ceb79fef03 120
kevman 0:38ceb79fef03 121 int (*mbedtls_snprintf)( char * s, size_t n,
kevman 0:38ceb79fef03 122 const char * format,
kevman 0:38ceb79fef03 123 ... ) = MBEDTLS_PLATFORM_STD_SNPRINTF;
kevman 0:38ceb79fef03 124
kevman 0:38ceb79fef03 125 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
kevman 0:38ceb79fef03 126 const char * format,
kevman 0:38ceb79fef03 127 ... ) )
kevman 0:38ceb79fef03 128 {
kevman 0:38ceb79fef03 129 mbedtls_snprintf = snprintf_func;
kevman 0:38ceb79fef03 130 return( 0 );
kevman 0:38ceb79fef03 131 }
kevman 0:38ceb79fef03 132 #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
kevman 0:38ceb79fef03 133
kevman 0:38ceb79fef03 134 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
kevman 0:38ceb79fef03 135 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
kevman 0:38ceb79fef03 136 /*
kevman 0:38ceb79fef03 137 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 138 */
kevman 0:38ceb79fef03 139 static int platform_printf_uninit( const char *format, ... )
kevman 0:38ceb79fef03 140 {
kevman 0:38ceb79fef03 141 ((void) format);
kevman 0:38ceb79fef03 142 return( 0 );
kevman 0:38ceb79fef03 143 }
kevman 0:38ceb79fef03 144
kevman 0:38ceb79fef03 145 #define MBEDTLS_PLATFORM_STD_PRINTF platform_printf_uninit
kevman 0:38ceb79fef03 146 #endif /* !MBEDTLS_PLATFORM_STD_PRINTF */
kevman 0:38ceb79fef03 147
kevman 0:38ceb79fef03 148 int (*mbedtls_printf)( const char *, ... ) = MBEDTLS_PLATFORM_STD_PRINTF;
kevman 0:38ceb79fef03 149
kevman 0:38ceb79fef03 150 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) )
kevman 0:38ceb79fef03 151 {
kevman 0:38ceb79fef03 152 mbedtls_printf = printf_func;
kevman 0:38ceb79fef03 153 return( 0 );
kevman 0:38ceb79fef03 154 }
kevman 0:38ceb79fef03 155 #endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
kevman 0:38ceb79fef03 156
kevman 0:38ceb79fef03 157 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
kevman 0:38ceb79fef03 158 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
kevman 0:38ceb79fef03 159 /*
kevman 0:38ceb79fef03 160 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 161 */
kevman 0:38ceb79fef03 162 static int platform_fprintf_uninit( FILE *stream, const char *format, ... )
kevman 0:38ceb79fef03 163 {
kevman 0:38ceb79fef03 164 ((void) stream);
kevman 0:38ceb79fef03 165 ((void) format);
kevman 0:38ceb79fef03 166 return( 0 );
kevman 0:38ceb79fef03 167 }
kevman 0:38ceb79fef03 168
kevman 0:38ceb79fef03 169 #define MBEDTLS_PLATFORM_STD_FPRINTF platform_fprintf_uninit
kevman 0:38ceb79fef03 170 #endif /* !MBEDTLS_PLATFORM_STD_FPRINTF */
kevman 0:38ceb79fef03 171
kevman 0:38ceb79fef03 172 int (*mbedtls_fprintf)( FILE *, const char *, ... ) =
kevman 0:38ceb79fef03 173 MBEDTLS_PLATFORM_STD_FPRINTF;
kevman 0:38ceb79fef03 174
kevman 0:38ceb79fef03 175 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *, const char *, ... ) )
kevman 0:38ceb79fef03 176 {
kevman 0:38ceb79fef03 177 mbedtls_fprintf = fprintf_func;
kevman 0:38ceb79fef03 178 return( 0 );
kevman 0:38ceb79fef03 179 }
kevman 0:38ceb79fef03 180 #endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
kevman 0:38ceb79fef03 181
kevman 0:38ceb79fef03 182 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
kevman 0:38ceb79fef03 183 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
kevman 0:38ceb79fef03 184 /*
kevman 0:38ceb79fef03 185 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 186 */
kevman 0:38ceb79fef03 187 static void platform_exit_uninit( int status )
kevman 0:38ceb79fef03 188 {
kevman 0:38ceb79fef03 189 ((void) status);
kevman 0:38ceb79fef03 190 }
kevman 0:38ceb79fef03 191
kevman 0:38ceb79fef03 192 #define MBEDTLS_PLATFORM_STD_EXIT platform_exit_uninit
kevman 0:38ceb79fef03 193 #endif /* !MBEDTLS_PLATFORM_STD_EXIT */
kevman 0:38ceb79fef03 194
kevman 0:38ceb79fef03 195 void (*mbedtls_exit)( int status ) = MBEDTLS_PLATFORM_STD_EXIT;
kevman 0:38ceb79fef03 196
kevman 0:38ceb79fef03 197 int mbedtls_platform_set_exit( void (*exit_func)( int status ) )
kevman 0:38ceb79fef03 198 {
kevman 0:38ceb79fef03 199 mbedtls_exit = exit_func;
kevman 0:38ceb79fef03 200 return( 0 );
kevman 0:38ceb79fef03 201 }
kevman 0:38ceb79fef03 202 #endif /* MBEDTLS_PLATFORM_EXIT_ALT */
kevman 0:38ceb79fef03 203
kevman 0:38ceb79fef03 204 #if defined(MBEDTLS_HAVE_TIME)
kevman 0:38ceb79fef03 205
kevman 0:38ceb79fef03 206 #if defined(MBEDTLS_PLATFORM_TIME_ALT)
kevman 0:38ceb79fef03 207 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
kevman 0:38ceb79fef03 208 /*
kevman 0:38ceb79fef03 209 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 210 */
kevman 0:38ceb79fef03 211 static mbedtls_time_t platform_time_uninit( mbedtls_time_t* timer )
kevman 0:38ceb79fef03 212 {
kevman 0:38ceb79fef03 213 ((void) timer);
kevman 0:38ceb79fef03 214 return( 0 );
kevman 0:38ceb79fef03 215 }
kevman 0:38ceb79fef03 216
kevman 0:38ceb79fef03 217 #define MBEDTLS_PLATFORM_STD_TIME platform_time_uninit
kevman 0:38ceb79fef03 218 #endif /* !MBEDTLS_PLATFORM_STD_TIME */
kevman 0:38ceb79fef03 219
kevman 0:38ceb79fef03 220 mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* timer ) = MBEDTLS_PLATFORM_STD_TIME;
kevman 0:38ceb79fef03 221
kevman 0:38ceb79fef03 222 int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* timer ) )
kevman 0:38ceb79fef03 223 {
kevman 0:38ceb79fef03 224 mbedtls_time = time_func;
kevman 0:38ceb79fef03 225 return( 0 );
kevman 0:38ceb79fef03 226 }
kevman 0:38ceb79fef03 227 #endif /* MBEDTLS_PLATFORM_TIME_ALT */
kevman 0:38ceb79fef03 228
kevman 0:38ceb79fef03 229 #endif /* MBEDTLS_HAVE_TIME */
kevman 0:38ceb79fef03 230
kevman 0:38ceb79fef03 231 #if defined(MBEDTLS_ENTROPY_NV_SEED)
kevman 0:38ceb79fef03 232 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
kevman 0:38ceb79fef03 233 /* Default implementations for the platform independent seed functions use
kevman 0:38ceb79fef03 234 * standard libc file functions to read from and write to a pre-defined filename
kevman 0:38ceb79fef03 235 */
kevman 0:38ceb79fef03 236 int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len )
kevman 0:38ceb79fef03 237 {
kevman 0:38ceb79fef03 238 FILE *file;
kevman 0:38ceb79fef03 239 size_t n;
kevman 0:38ceb79fef03 240
kevman 0:38ceb79fef03 241 if( ( file = fopen( MBEDTLS_PLATFORM_STD_NV_SEED_FILE, "rb" ) ) == NULL )
kevman 0:38ceb79fef03 242 return( -1 );
kevman 0:38ceb79fef03 243
kevman 0:38ceb79fef03 244 if( ( n = fread( buf, 1, buf_len, file ) ) != buf_len )
kevman 0:38ceb79fef03 245 {
kevman 0:38ceb79fef03 246 fclose( file );
kevman 0:38ceb79fef03 247 mbedtls_platform_zeroize( buf, buf_len );
kevman 0:38ceb79fef03 248 return( -1 );
kevman 0:38ceb79fef03 249 }
kevman 0:38ceb79fef03 250
kevman 0:38ceb79fef03 251 fclose( file );
kevman 0:38ceb79fef03 252 return( (int)n );
kevman 0:38ceb79fef03 253 }
kevman 0:38ceb79fef03 254
kevman 0:38ceb79fef03 255 int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len )
kevman 0:38ceb79fef03 256 {
kevman 0:38ceb79fef03 257 FILE *file;
kevman 0:38ceb79fef03 258 size_t n;
kevman 0:38ceb79fef03 259
kevman 0:38ceb79fef03 260 if( ( file = fopen( MBEDTLS_PLATFORM_STD_NV_SEED_FILE, "w" ) ) == NULL )
kevman 0:38ceb79fef03 261 return -1;
kevman 0:38ceb79fef03 262
kevman 0:38ceb79fef03 263 if( ( n = fwrite( buf, 1, buf_len, file ) ) != buf_len )
kevman 0:38ceb79fef03 264 {
kevman 0:38ceb79fef03 265 fclose( file );
kevman 0:38ceb79fef03 266 return -1;
kevman 0:38ceb79fef03 267 }
kevman 0:38ceb79fef03 268
kevman 0:38ceb79fef03 269 fclose( file );
kevman 0:38ceb79fef03 270 return( (int)n );
kevman 0:38ceb79fef03 271 }
kevman 0:38ceb79fef03 272 #endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
kevman 0:38ceb79fef03 273
kevman 0:38ceb79fef03 274 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
kevman 0:38ceb79fef03 275 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
kevman 0:38ceb79fef03 276 /*
kevman 0:38ceb79fef03 277 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 278 */
kevman 0:38ceb79fef03 279 static int platform_nv_seed_read_uninit( unsigned char *buf, size_t buf_len )
kevman 0:38ceb79fef03 280 {
kevman 0:38ceb79fef03 281 ((void) buf);
kevman 0:38ceb79fef03 282 ((void) buf_len);
kevman 0:38ceb79fef03 283 return( -1 );
kevman 0:38ceb79fef03 284 }
kevman 0:38ceb79fef03 285
kevman 0:38ceb79fef03 286 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ platform_nv_seed_read_uninit
kevman 0:38ceb79fef03 287 #endif /* !MBEDTLS_PLATFORM_STD_NV_SEED_READ */
kevman 0:38ceb79fef03 288
kevman 0:38ceb79fef03 289 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
kevman 0:38ceb79fef03 290 /*
kevman 0:38ceb79fef03 291 * Make dummy function to prevent NULL pointer dereferences
kevman 0:38ceb79fef03 292 */
kevman 0:38ceb79fef03 293 static int platform_nv_seed_write_uninit( unsigned char *buf, size_t buf_len )
kevman 0:38ceb79fef03 294 {
kevman 0:38ceb79fef03 295 ((void) buf);
kevman 0:38ceb79fef03 296 ((void) buf_len);
kevman 0:38ceb79fef03 297 return( -1 );
kevman 0:38ceb79fef03 298 }
kevman 0:38ceb79fef03 299
kevman 0:38ceb79fef03 300 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE platform_nv_seed_write_uninit
kevman 0:38ceb79fef03 301 #endif /* !MBEDTLS_PLATFORM_STD_NV_SEED_WRITE */
kevman 0:38ceb79fef03 302
kevman 0:38ceb79fef03 303 int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len ) =
kevman 0:38ceb79fef03 304 MBEDTLS_PLATFORM_STD_NV_SEED_READ;
kevman 0:38ceb79fef03 305 int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len ) =
kevman 0:38ceb79fef03 306 MBEDTLS_PLATFORM_STD_NV_SEED_WRITE;
kevman 0:38ceb79fef03 307
kevman 0:38ceb79fef03 308 int mbedtls_platform_set_nv_seed(
kevman 0:38ceb79fef03 309 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
kevman 0:38ceb79fef03 310 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len ) )
kevman 0:38ceb79fef03 311 {
kevman 0:38ceb79fef03 312 mbedtls_nv_seed_read = nv_seed_read_func;
kevman 0:38ceb79fef03 313 mbedtls_nv_seed_write = nv_seed_write_func;
kevman 0:38ceb79fef03 314 return( 0 );
kevman 0:38ceb79fef03 315 }
kevman 0:38ceb79fef03 316 #endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
kevman 0:38ceb79fef03 317 #endif /* MBEDTLS_ENTROPY_NV_SEED */
kevman 0:38ceb79fef03 318
kevman 0:38ceb79fef03 319 #if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
kevman 0:38ceb79fef03 320 /*
kevman 0:38ceb79fef03 321 * Placeholder platform setup that does nothing by default
kevman 0:38ceb79fef03 322 */
kevman 0:38ceb79fef03 323 int mbedtls_platform_setup( mbedtls_platform_context *ctx )
kevman 0:38ceb79fef03 324 {
kevman 0:38ceb79fef03 325 (void)ctx;
kevman 0:38ceb79fef03 326
kevman 0:38ceb79fef03 327 return( 0 );
kevman 0:38ceb79fef03 328 }
kevman 0:38ceb79fef03 329
kevman 0:38ceb79fef03 330 /*
kevman 0:38ceb79fef03 331 * Placeholder platform teardown that does nothing by default
kevman 0:38ceb79fef03 332 */
kevman 0:38ceb79fef03 333 void mbedtls_platform_teardown( mbedtls_platform_context *ctx )
kevman 0:38ceb79fef03 334 {
kevman 0:38ceb79fef03 335 (void)ctx;
kevman 0:38ceb79fef03 336 }
kevman 0:38ceb79fef03 337 #endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT */
kevman 0:38ceb79fef03 338
kevman 0:38ceb79fef03 339 #endif /* MBEDTLS_PLATFORM_C */