Daiki Kato / mbed-os-lychee

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

Committer:
dkato
Date:
Fri Feb 02 05:42:23 2018 +0000
Revision:
0:f782d9c66c49
mbed-os for GR-LYCHEE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f782d9c66c49 1 /**
dkato 0:f782d9c66c49 2 * \file platform.h
dkato 0:f782d9c66c49 3 *
dkato 0:f782d9c66c49 4 * \brief mbed TLS Platform abstraction layer
dkato 0:f782d9c66c49 5 *
dkato 0:f782d9c66c49 6 * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved
dkato 0:f782d9c66c49 7 * SPDX-License-Identifier: Apache-2.0
dkato 0:f782d9c66c49 8 *
dkato 0:f782d9c66c49 9 * Licensed under the Apache License, Version 2.0 (the "License"); you may
dkato 0:f782d9c66c49 10 * not use this file except in compliance with the License.
dkato 0:f782d9c66c49 11 * You may obtain a copy of the License at
dkato 0:f782d9c66c49 12 *
dkato 0:f782d9c66c49 13 * http://www.apache.org/licenses/LICENSE-2.0
dkato 0:f782d9c66c49 14 *
dkato 0:f782d9c66c49 15 * Unless required by applicable law or agreed to in writing, software
dkato 0:f782d9c66c49 16 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
dkato 0:f782d9c66c49 17 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dkato 0:f782d9c66c49 18 * See the License for the specific language governing permissions and
dkato 0:f782d9c66c49 19 * limitations under the License.
dkato 0:f782d9c66c49 20 *
dkato 0:f782d9c66c49 21 * This file is part of mbed TLS (https://tls.mbed.org)
dkato 0:f782d9c66c49 22 */
dkato 0:f782d9c66c49 23 #ifndef MBEDTLS_PLATFORM_H
dkato 0:f782d9c66c49 24 #define MBEDTLS_PLATFORM_H
dkato 0:f782d9c66c49 25
dkato 0:f782d9c66c49 26 #if !defined(MBEDTLS_CONFIG_FILE)
dkato 0:f782d9c66c49 27 #include "config.h"
dkato 0:f782d9c66c49 28 #else
dkato 0:f782d9c66c49 29 #include MBEDTLS_CONFIG_FILE
dkato 0:f782d9c66c49 30 #endif
dkato 0:f782d9c66c49 31
dkato 0:f782d9c66c49 32 #if defined(MBEDTLS_HAVE_TIME)
dkato 0:f782d9c66c49 33 #include "mbedtls/platform_time.h"
dkato 0:f782d9c66c49 34 #endif
dkato 0:f782d9c66c49 35
dkato 0:f782d9c66c49 36 #ifdef __cplusplus
dkato 0:f782d9c66c49 37 extern "C" {
dkato 0:f782d9c66c49 38 #endif
dkato 0:f782d9c66c49 39
dkato 0:f782d9c66c49 40 /**
dkato 0:f782d9c66c49 41 * \name SECTION: Module settings
dkato 0:f782d9c66c49 42 *
dkato 0:f782d9c66c49 43 * The configuration options you can set for this module are in this section.
dkato 0:f782d9c66c49 44 * Either change them in config.h or define them on the compiler command line.
dkato 0:f782d9c66c49 45 * \{
dkato 0:f782d9c66c49 46 */
dkato 0:f782d9c66c49 47
dkato 0:f782d9c66c49 48 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
dkato 0:f782d9c66c49 49 #include <stdio.h>
dkato 0:f782d9c66c49 50 #include <stdlib.h>
dkato 0:f782d9c66c49 51 #include <time.h>
dkato 0:f782d9c66c49 52 #if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
dkato 0:f782d9c66c49 53 #if defined(_WIN32)
dkato 0:f782d9c66c49 54 #define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< Default snprintf to use */
dkato 0:f782d9c66c49 55 #else
dkato 0:f782d9c66c49 56 #define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use */
dkato 0:f782d9c66c49 57 #endif
dkato 0:f782d9c66c49 58 #endif
dkato 0:f782d9c66c49 59 #if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
dkato 0:f782d9c66c49 60 #define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use */
dkato 0:f782d9c66c49 61 #endif
dkato 0:f782d9c66c49 62 #if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
dkato 0:f782d9c66c49 63 #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use */
dkato 0:f782d9c66c49 64 #endif
dkato 0:f782d9c66c49 65 #if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
dkato 0:f782d9c66c49 66 #define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use */
dkato 0:f782d9c66c49 67 #endif
dkato 0:f782d9c66c49 68 #if !defined(MBEDTLS_PLATFORM_STD_FREE)
dkato 0:f782d9c66c49 69 #define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use */
dkato 0:f782d9c66c49 70 #endif
dkato 0:f782d9c66c49 71 #if !defined(MBEDTLS_PLATFORM_STD_EXIT)
dkato 0:f782d9c66c49 72 #define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use */
dkato 0:f782d9c66c49 73 #endif
dkato 0:f782d9c66c49 74 #if !defined(MBEDTLS_PLATFORM_STD_TIME)
dkato 0:f782d9c66c49 75 #define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use */
dkato 0:f782d9c66c49 76 #endif
dkato 0:f782d9c66c49 77 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
dkato 0:f782d9c66c49 78 #define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS /**< Default exit value to use */
dkato 0:f782d9c66c49 79 #endif
dkato 0:f782d9c66c49 80 #if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
dkato 0:f782d9c66c49 81 #define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE /**< Default exit value to use */
dkato 0:f782d9c66c49 82 #endif
dkato 0:f782d9c66c49 83 #if defined(MBEDTLS_FS_IO)
dkato 0:f782d9c66c49 84 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ)
dkato 0:f782d9c66c49 85 #define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read
dkato 0:f782d9c66c49 86 #endif
dkato 0:f782d9c66c49 87 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE)
dkato 0:f782d9c66c49 88 #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write
dkato 0:f782d9c66c49 89 #endif
dkato 0:f782d9c66c49 90 #if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE)
dkato 0:f782d9c66c49 91 #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile"
dkato 0:f782d9c66c49 92 #endif
dkato 0:f782d9c66c49 93 #endif /* MBEDTLS_FS_IO */
dkato 0:f782d9c66c49 94 #else /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
dkato 0:f782d9c66c49 95 #if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
dkato 0:f782d9c66c49 96 #include MBEDTLS_PLATFORM_STD_MEM_HDR
dkato 0:f782d9c66c49 97 #endif
dkato 0:f782d9c66c49 98 #endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
dkato 0:f782d9c66c49 99
dkato 0:f782d9c66c49 100
dkato 0:f782d9c66c49 101 /* \} name SECTION: Module settings */
dkato 0:f782d9c66c49 102
dkato 0:f782d9c66c49 103 /*
dkato 0:f782d9c66c49 104 * The function pointers for calloc and free
dkato 0:f782d9c66c49 105 */
dkato 0:f782d9c66c49 106 #if defined(MBEDTLS_PLATFORM_MEMORY)
dkato 0:f782d9c66c49 107 #if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
dkato 0:f782d9c66c49 108 defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
dkato 0:f782d9c66c49 109 #define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
dkato 0:f782d9c66c49 110 #define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
dkato 0:f782d9c66c49 111 #else
dkato 0:f782d9c66c49 112 /* For size_t */
dkato 0:f782d9c66c49 113 #include <stddef.h>
dkato 0:f782d9c66c49 114 extern void * (*mbedtls_calloc)( size_t n, size_t size );
dkato 0:f782d9c66c49 115 extern void (*mbedtls_free)( void *ptr );
dkato 0:f782d9c66c49 116
dkato 0:f782d9c66c49 117 /**
dkato 0:f782d9c66c49 118 * \brief Set your own memory implementation function pointers
dkato 0:f782d9c66c49 119 *
dkato 0:f782d9c66c49 120 * \param calloc_func the calloc function implementation
dkato 0:f782d9c66c49 121 * \param free_func the free function implementation
dkato 0:f782d9c66c49 122 *
dkato 0:f782d9c66c49 123 * \return 0 if successful
dkato 0:f782d9c66c49 124 */
dkato 0:f782d9c66c49 125 int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
dkato 0:f782d9c66c49 126 void (*free_func)( void * ) );
dkato 0:f782d9c66c49 127 #endif /* MBEDTLS_PLATFORM_FREE_MACRO && MBEDTLS_PLATFORM_CALLOC_MACRO */
dkato 0:f782d9c66c49 128 #else /* !MBEDTLS_PLATFORM_MEMORY */
dkato 0:f782d9c66c49 129 #define mbedtls_free free
dkato 0:f782d9c66c49 130 #define mbedtls_calloc calloc
dkato 0:f782d9c66c49 131 #endif /* MBEDTLS_PLATFORM_MEMORY && !MBEDTLS_PLATFORM_{FREE,CALLOC}_MACRO */
dkato 0:f782d9c66c49 132
dkato 0:f782d9c66c49 133 /*
dkato 0:f782d9c66c49 134 * The function pointers for fprintf
dkato 0:f782d9c66c49 135 */
dkato 0:f782d9c66c49 136 #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
dkato 0:f782d9c66c49 137 /* We need FILE * */
dkato 0:f782d9c66c49 138 #include <stdio.h>
dkato 0:f782d9c66c49 139 extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
dkato 0:f782d9c66c49 140
dkato 0:f782d9c66c49 141 /**
dkato 0:f782d9c66c49 142 * \brief Set your own fprintf function pointer
dkato 0:f782d9c66c49 143 *
dkato 0:f782d9c66c49 144 * \param fprintf_func the fprintf function implementation
dkato 0:f782d9c66c49 145 *
dkato 0:f782d9c66c49 146 * \return 0
dkato 0:f782d9c66c49 147 */
dkato 0:f782d9c66c49 148 int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
dkato 0:f782d9c66c49 149 ... ) );
dkato 0:f782d9c66c49 150 #else
dkato 0:f782d9c66c49 151 #if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
dkato 0:f782d9c66c49 152 #define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
dkato 0:f782d9c66c49 153 #else
dkato 0:f782d9c66c49 154 #define mbedtls_fprintf fprintf
dkato 0:f782d9c66c49 155 #endif /* MBEDTLS_PLATFORM_FPRINTF_MACRO */
dkato 0:f782d9c66c49 156 #endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
dkato 0:f782d9c66c49 157
dkato 0:f782d9c66c49 158 /*
dkato 0:f782d9c66c49 159 * The function pointers for printf
dkato 0:f782d9c66c49 160 */
dkato 0:f782d9c66c49 161 #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
dkato 0:f782d9c66c49 162 extern int (*mbedtls_printf)( const char *format, ... );
dkato 0:f782d9c66c49 163
dkato 0:f782d9c66c49 164 /**
dkato 0:f782d9c66c49 165 * \brief Set your own printf function pointer
dkato 0:f782d9c66c49 166 *
dkato 0:f782d9c66c49 167 * \param printf_func the printf function implementation
dkato 0:f782d9c66c49 168 *
dkato 0:f782d9c66c49 169 * \return 0
dkato 0:f782d9c66c49 170 */
dkato 0:f782d9c66c49 171 int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
dkato 0:f782d9c66c49 172 #else /* !MBEDTLS_PLATFORM_PRINTF_ALT */
dkato 0:f782d9c66c49 173 #if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
dkato 0:f782d9c66c49 174 #define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
dkato 0:f782d9c66c49 175 #else
dkato 0:f782d9c66c49 176 #define mbedtls_printf printf
dkato 0:f782d9c66c49 177 #endif /* MBEDTLS_PLATFORM_PRINTF_MACRO */
dkato 0:f782d9c66c49 178 #endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
dkato 0:f782d9c66c49 179
dkato 0:f782d9c66c49 180 /*
dkato 0:f782d9c66c49 181 * The function pointers for snprintf
dkato 0:f782d9c66c49 182 *
dkato 0:f782d9c66c49 183 * The snprintf implementation should conform to C99:
dkato 0:f782d9c66c49 184 * - it *must* always correctly zero-terminate the buffer
dkato 0:f782d9c66c49 185 * (except when n == 0, then it must leave the buffer untouched)
dkato 0:f782d9c66c49 186 * - however it is acceptable to return -1 instead of the required length when
dkato 0:f782d9c66c49 187 * the destination buffer is too short.
dkato 0:f782d9c66c49 188 */
dkato 0:f782d9c66c49 189 #if defined(_WIN32)
dkato 0:f782d9c66c49 190 /* For Windows (inc. MSYS2), we provide our own fixed implementation */
dkato 0:f782d9c66c49 191 int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
dkato 0:f782d9c66c49 192 #endif
dkato 0:f782d9c66c49 193
dkato 0:f782d9c66c49 194 #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
dkato 0:f782d9c66c49 195 extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
dkato 0:f782d9c66c49 196
dkato 0:f782d9c66c49 197 /**
dkato 0:f782d9c66c49 198 * \brief Set your own snprintf function pointer
dkato 0:f782d9c66c49 199 *
dkato 0:f782d9c66c49 200 * \param snprintf_func the snprintf function implementation
dkato 0:f782d9c66c49 201 *
dkato 0:f782d9c66c49 202 * \return 0
dkato 0:f782d9c66c49 203 */
dkato 0:f782d9c66c49 204 int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
dkato 0:f782d9c66c49 205 const char * format, ... ) );
dkato 0:f782d9c66c49 206 #else /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
dkato 0:f782d9c66c49 207 #if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
dkato 0:f782d9c66c49 208 #define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
dkato 0:f782d9c66c49 209 #else
dkato 0:f782d9c66c49 210 #define mbedtls_snprintf snprintf
dkato 0:f782d9c66c49 211 #endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */
dkato 0:f782d9c66c49 212 #endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
dkato 0:f782d9c66c49 213
dkato 0:f782d9c66c49 214 /*
dkato 0:f782d9c66c49 215 * The function pointers for exit
dkato 0:f782d9c66c49 216 */
dkato 0:f782d9c66c49 217 #if defined(MBEDTLS_PLATFORM_EXIT_ALT)
dkato 0:f782d9c66c49 218 extern void (*mbedtls_exit)( int status );
dkato 0:f782d9c66c49 219
dkato 0:f782d9c66c49 220 /**
dkato 0:f782d9c66c49 221 * \brief Set your own exit function pointer
dkato 0:f782d9c66c49 222 *
dkato 0:f782d9c66c49 223 * \param exit_func the exit function implementation
dkato 0:f782d9c66c49 224 *
dkato 0:f782d9c66c49 225 * \return 0
dkato 0:f782d9c66c49 226 */
dkato 0:f782d9c66c49 227 int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
dkato 0:f782d9c66c49 228 #else
dkato 0:f782d9c66c49 229 #if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
dkato 0:f782d9c66c49 230 #define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
dkato 0:f782d9c66c49 231 #else
dkato 0:f782d9c66c49 232 #define mbedtls_exit exit
dkato 0:f782d9c66c49 233 #endif /* MBEDTLS_PLATFORM_EXIT_MACRO */
dkato 0:f782d9c66c49 234 #endif /* MBEDTLS_PLATFORM_EXIT_ALT */
dkato 0:f782d9c66c49 235
dkato 0:f782d9c66c49 236 /*
dkato 0:f782d9c66c49 237 * The default exit values
dkato 0:f782d9c66c49 238 */
dkato 0:f782d9c66c49 239 #if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
dkato 0:f782d9c66c49 240 #define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
dkato 0:f782d9c66c49 241 #else
dkato 0:f782d9c66c49 242 #define MBEDTLS_EXIT_SUCCESS 0
dkato 0:f782d9c66c49 243 #endif
dkato 0:f782d9c66c49 244 #if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE)
dkato 0:f782d9c66c49 245 #define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE
dkato 0:f782d9c66c49 246 #else
dkato 0:f782d9c66c49 247 #define MBEDTLS_EXIT_FAILURE 1
dkato 0:f782d9c66c49 248 #endif
dkato 0:f782d9c66c49 249
dkato 0:f782d9c66c49 250 /*
dkato 0:f782d9c66c49 251 * The function pointers for reading from and writing a seed file to
dkato 0:f782d9c66c49 252 * Non-Volatile storage (NV) in a platform-independent way
dkato 0:f782d9c66c49 253 *
dkato 0:f782d9c66c49 254 * Only enabled when the NV seed entropy source is enabled
dkato 0:f782d9c66c49 255 */
dkato 0:f782d9c66c49 256 #if defined(MBEDTLS_ENTROPY_NV_SEED)
dkato 0:f782d9c66c49 257 #if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO)
dkato 0:f782d9c66c49 258 /* Internal standard platform definitions */
dkato 0:f782d9c66c49 259 int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len );
dkato 0:f782d9c66c49 260 int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len );
dkato 0:f782d9c66c49 261 #endif
dkato 0:f782d9c66c49 262
dkato 0:f782d9c66c49 263 #if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
dkato 0:f782d9c66c49 264 extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len );
dkato 0:f782d9c66c49 265 extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len );
dkato 0:f782d9c66c49 266
dkato 0:f782d9c66c49 267 /**
dkato 0:f782d9c66c49 268 * \brief Set your own seed file writing/reading functions
dkato 0:f782d9c66c49 269 *
dkato 0:f782d9c66c49 270 * \param nv_seed_read_func the seed reading function implementation
dkato 0:f782d9c66c49 271 * \param nv_seed_write_func the seed writing function implementation
dkato 0:f782d9c66c49 272 *
dkato 0:f782d9c66c49 273 * \return 0
dkato 0:f782d9c66c49 274 */
dkato 0:f782d9c66c49 275 int mbedtls_platform_set_nv_seed(
dkato 0:f782d9c66c49 276 int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ),
dkato 0:f782d9c66c49 277 int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len )
dkato 0:f782d9c66c49 278 );
dkato 0:f782d9c66c49 279 #else
dkato 0:f782d9c66c49 280 #if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \
dkato 0:f782d9c66c49 281 defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO)
dkato 0:f782d9c66c49 282 #define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
dkato 0:f782d9c66c49 283 #define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
dkato 0:f782d9c66c49 284 #else
dkato 0:f782d9c66c49 285 #define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read
dkato 0:f782d9c66c49 286 #define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write
dkato 0:f782d9c66c49 287 #endif
dkato 0:f782d9c66c49 288 #endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
dkato 0:f782d9c66c49 289 #endif /* MBEDTLS_ENTROPY_NV_SEED */
dkato 0:f782d9c66c49 290
dkato 0:f782d9c66c49 291 #ifdef __cplusplus
dkato 0:f782d9c66c49 292 }
dkato 0:f782d9c66c49 293 #endif
dkato 0:f782d9c66c49 294
dkato 0:f782d9c66c49 295 #endif /* platform.h */