Xuyi Wang / wolfSSL

Dependents:   OS

Committer:
wolfSSL
Date:
Tue Aug 22 10:47:28 2017 +0000
Revision:
12:1a06964c2adb
Parent:
10:6c2db0c97d5a
Child:
14:167253f4e170
wolfSSL 3.12.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 9:52ec7c02b1e1 1 /* settings.h
wolfSSL 9:52ec7c02b1e1 2 *
wolfSSL 9:52ec7c02b1e1 3 * Copyright (C) 2006-2016 wolfSSL Inc.
wolfSSL 9:52ec7c02b1e1 4 *
wolfSSL 9:52ec7c02b1e1 5 * This file is part of wolfSSL.
wolfSSL 9:52ec7c02b1e1 6 *
wolfSSL 9:52ec7c02b1e1 7 * wolfSSL is free software; you can redistribute it and/or modify
wolfSSL 9:52ec7c02b1e1 8 * it under the terms of the GNU General Public License as published by
wolfSSL 9:52ec7c02b1e1 9 * the Free Software Foundation; either version 2 of the License, or
wolfSSL 9:52ec7c02b1e1 10 * (at your option) any later version.
wolfSSL 9:52ec7c02b1e1 11 *
wolfSSL 9:52ec7c02b1e1 12 * wolfSSL is distributed in the hope that it will be useful,
wolfSSL 9:52ec7c02b1e1 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
wolfSSL 9:52ec7c02b1e1 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
wolfSSL 9:52ec7c02b1e1 15 * GNU General Public License for more details.
wolfSSL 9:52ec7c02b1e1 16 *
wolfSSL 9:52ec7c02b1e1 17 * You should have received a copy of the GNU General Public License
wolfSSL 9:52ec7c02b1e1 18 * along with this program; if not, write to the Free Software
wolfSSL 9:52ec7c02b1e1 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
wolfSSL 9:52ec7c02b1e1 20 */
wolfSSL 9:52ec7c02b1e1 21
wolfSSL 9:52ec7c02b1e1 22
wolfSSL 9:52ec7c02b1e1 23 /* Place OS specific preprocessor flags, defines, includes here, will be
wolfSSL 9:52ec7c02b1e1 24 included into every file because types.h includes it */
wolfSSL 9:52ec7c02b1e1 25
wolfSSL 9:52ec7c02b1e1 26
wolfSSL 9:52ec7c02b1e1 27 #ifndef WOLF_CRYPT_SETTINGS_H
wolfSSL 9:52ec7c02b1e1 28 #define WOLF_CRYPT_SETTINGS_H
wolfSSL 9:52ec7c02b1e1 29
wolfSSL 9:52ec7c02b1e1 30 #ifdef __cplusplus
wolfSSL 9:52ec7c02b1e1 31 extern "C" {
wolfSSL 9:52ec7c02b1e1 32 #endif
wolfSSL 9:52ec7c02b1e1 33
wolfSSL 9:52ec7c02b1e1 34 /* Uncomment next line if using IPHONE */
wolfSSL 9:52ec7c02b1e1 35 /* #define IPHONE */
wolfSSL 9:52ec7c02b1e1 36
wolfSSL 9:52ec7c02b1e1 37 /* Uncomment next line if using ThreadX */
wolfSSL 9:52ec7c02b1e1 38 /* #define THREADX */
wolfSSL 9:52ec7c02b1e1 39
wolfSSL 9:52ec7c02b1e1 40 /* Uncomment next line if using Micrium ucOS */
wolfSSL 9:52ec7c02b1e1 41 /* #define MICRIUM */
wolfSSL 9:52ec7c02b1e1 42
wolfSSL 9:52ec7c02b1e1 43 /* Uncomment next line if using Mbed */
wolfSSL 9:52ec7c02b1e1 44 /* #define MBED */
wolfSSL 9:52ec7c02b1e1 45
wolfSSL 9:52ec7c02b1e1 46 /* Uncomment next line if using Microchip PIC32 ethernet starter kit */
wolfSSL 9:52ec7c02b1e1 47 /* #define MICROCHIP_PIC32 */
wolfSSL 9:52ec7c02b1e1 48
wolfSSL 9:52ec7c02b1e1 49 /* Uncomment next line if using Microchip TCP/IP stack, version 5 */
wolfSSL 9:52ec7c02b1e1 50 /* #define MICROCHIP_TCPIP_V5 */
wolfSSL 9:52ec7c02b1e1 51
wolfSSL 9:52ec7c02b1e1 52 /* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */
wolfSSL 9:52ec7c02b1e1 53 /* #define MICROCHIP_TCPIP */
wolfSSL 9:52ec7c02b1e1 54
wolfSSL 9:52ec7c02b1e1 55 /* Uncomment next line if using PIC32MZ Crypto Engine */
wolfSSL 9:52ec7c02b1e1 56 /* #define WOLFSSL_MICROCHIP_PIC32MZ */
wolfSSL 9:52ec7c02b1e1 57
wolfSSL 9:52ec7c02b1e1 58 /* Uncomment next line if using FreeRTOS */
wolfSSL 9:52ec7c02b1e1 59 /* #define FREERTOS */
wolfSSL 9:52ec7c02b1e1 60
wolfSSL 9:52ec7c02b1e1 61 /* Uncomment next line if using FreeRTOS+ TCP */
wolfSSL 9:52ec7c02b1e1 62 /* #define FREERTOS_TCP */
wolfSSL 9:52ec7c02b1e1 63
wolfSSL 9:52ec7c02b1e1 64 /* Uncomment next line if using FreeRTOS Windows Simulator */
wolfSSL 9:52ec7c02b1e1 65 /* #define FREERTOS_WINSIM */
wolfSSL 9:52ec7c02b1e1 66
wolfSSL 9:52ec7c02b1e1 67 /* Uncomment next line if using RTIP */
wolfSSL 9:52ec7c02b1e1 68 /* #define EBSNET */
wolfSSL 9:52ec7c02b1e1 69
wolfSSL 9:52ec7c02b1e1 70 /* Uncomment next line if using lwip */
wolfSSL 9:52ec7c02b1e1 71 /* #define WOLFSSL_LWIP */
wolfSSL 9:52ec7c02b1e1 72
wolfSSL 9:52ec7c02b1e1 73 /* Uncomment next line if building wolfSSL for a game console */
wolfSSL 9:52ec7c02b1e1 74 /* #define WOLFSSL_GAME_BUILD */
wolfSSL 9:52ec7c02b1e1 75
wolfSSL 9:52ec7c02b1e1 76 /* Uncomment next line if building wolfSSL for LSR */
wolfSSL 9:52ec7c02b1e1 77 /* #define WOLFSSL_LSR */
wolfSSL 9:52ec7c02b1e1 78
wolfSSL 9:52ec7c02b1e1 79 /* Uncomment next line if building for Freescale Classic MQX/RTCS/MFS */
wolfSSL 9:52ec7c02b1e1 80 /* #define FREESCALE_MQX */
wolfSSL 9:52ec7c02b1e1 81
wolfSSL 9:52ec7c02b1e1 82 /* Uncomment next line if building for Freescale KSDK MQX/RTCS/MFS */
wolfSSL 9:52ec7c02b1e1 83 /* #define FREESCALE_KSDK_MQX */
wolfSSL 9:52ec7c02b1e1 84
wolfSSL 9:52ec7c02b1e1 85 /* Uncomment next line if building for Freescale KSDK Bare Metal */
wolfSSL 9:52ec7c02b1e1 86 /* #define FREESCALE_KSDK_BM */
wolfSSL 9:52ec7c02b1e1 87
wolfSSL 9:52ec7c02b1e1 88 /* Uncomment next line if building for Freescale KSDK FreeRTOS (old name FREESCALE_FREE_RTOS) */
wolfSSL 9:52ec7c02b1e1 89 /* #define FREESCALE_KSDK_FREERTOS */
wolfSSL 9:52ec7c02b1e1 90
wolfSSL 9:52ec7c02b1e1 91 /* Uncomment next line if using STM32F2 */
wolfSSL 9:52ec7c02b1e1 92 /* #define WOLFSSL_STM32F2 */
wolfSSL 9:52ec7c02b1e1 93
wolfSSL 9:52ec7c02b1e1 94 /* Uncomment next line if using QL SEP settings */
wolfSSL 9:52ec7c02b1e1 95 /* #define WOLFSSL_QL */
wolfSSL 9:52ec7c02b1e1 96
wolfSSL 9:52ec7c02b1e1 97 /* Uncomment next line if building for EROAD */
wolfSSL 9:52ec7c02b1e1 98 /* #define WOLFSSL_EROAD */
wolfSSL 9:52ec7c02b1e1 99
wolfSSL 9:52ec7c02b1e1 100 /* Uncomment next line if building for IAR EWARM */
wolfSSL 9:52ec7c02b1e1 101 /* #define WOLFSSL_IAR_ARM */
wolfSSL 9:52ec7c02b1e1 102
wolfSSL 9:52ec7c02b1e1 103 /* Uncomment next line if building for Rowley CrossWorks ARM */
wolfSSL 9:52ec7c02b1e1 104 /* #define WOLFSSL_ROWLEY_ARM */
wolfSSL 9:52ec7c02b1e1 105
wolfSSL 9:52ec7c02b1e1 106 /* Uncomment next line if using TI-RTOS settings */
wolfSSL 9:52ec7c02b1e1 107 /* #define WOLFSSL_TIRTOS */
wolfSSL 9:52ec7c02b1e1 108
wolfSSL 9:52ec7c02b1e1 109 /* Uncomment next line if building with PicoTCP */
wolfSSL 9:52ec7c02b1e1 110 /* #define WOLFSSL_PICOTCP */
wolfSSL 9:52ec7c02b1e1 111
wolfSSL 9:52ec7c02b1e1 112 /* Uncomment next line if building for PicoTCP demo bundle */
wolfSSL 9:52ec7c02b1e1 113 /* #define WOLFSSL_PICOTCP_DEMO */
wolfSSL 9:52ec7c02b1e1 114
wolfSSL 9:52ec7c02b1e1 115 /* Uncomment next line if building for uITRON4 */
wolfSSL 9:52ec7c02b1e1 116 /* #define WOLFSSL_uITRON4 */
wolfSSL 9:52ec7c02b1e1 117
wolfSSL 9:52ec7c02b1e1 118 /* Uncomment next line if building for uT-Kernel */
wolfSSL 9:52ec7c02b1e1 119 /* #define WOLFSSL_uTKERNEL2 */
wolfSSL 9:52ec7c02b1e1 120
wolfSSL 9:52ec7c02b1e1 121 /* Uncomment next line if using Max Strength build */
wolfSSL 9:52ec7c02b1e1 122 /* #define WOLFSSL_MAX_STRENGTH */
wolfSSL 9:52ec7c02b1e1 123
wolfSSL 9:52ec7c02b1e1 124 /* Uncomment next line if building for VxWorks */
wolfSSL 9:52ec7c02b1e1 125 /* #define WOLFSSL_VXWORKS */
wolfSSL 9:52ec7c02b1e1 126
wolfSSL 9:52ec7c02b1e1 127 /* Uncomment next line if building for Nordic nRF5x platofrm */
wolfSSL 9:52ec7c02b1e1 128 /* #define WOLFSSL_NRF5x */
wolfSSL 9:52ec7c02b1e1 129
wolfSSL 9:52ec7c02b1e1 130 /* Uncomment next line to enable deprecated less secure static DH suites */
wolfSSL 9:52ec7c02b1e1 131 /* #define WOLFSSL_STATIC_DH */
wolfSSL 9:52ec7c02b1e1 132
wolfSSL 9:52ec7c02b1e1 133 /* Uncomment next line to enable deprecated less secure static RSA suites */
wolfSSL 9:52ec7c02b1e1 134 /* #define WOLFSSL_STATIC_RSA */
wolfSSL 9:52ec7c02b1e1 135
wolfSSL 9:52ec7c02b1e1 136 /* Uncomment next line if building for ARDUINO */
wolfSSL 9:52ec7c02b1e1 137 /* Uncomment both lines if building for ARDUINO on INTEL_GALILEO */
wolfSSL 9:52ec7c02b1e1 138 /* #define WOLFSSL_ARDUINO */
wolfSSL 9:52ec7c02b1e1 139 /* #define INTEL_GALILEO */
wolfSSL 9:52ec7c02b1e1 140
wolfSSL 9:52ec7c02b1e1 141 /* Uncomment next line to enable asynchronous crypto WC_PENDING_E */
wolfSSL 9:52ec7c02b1e1 142 /* #define WOLFSSL_ASYNC_CRYPT */
wolfSSL 9:52ec7c02b1e1 143
wolfSSL 9:52ec7c02b1e1 144 /* Uncomment next line if building for uTasker */
wolfSSL 9:52ec7c02b1e1 145 /* #define WOLFSSL_UTASKER */
wolfSSL 9:52ec7c02b1e1 146
wolfSSL 9:52ec7c02b1e1 147 /* Uncomment next line if building for embOS */
wolfSSL 9:52ec7c02b1e1 148 /* #define WOLFSSL_EMBOS */
wolfSSL 9:52ec7c02b1e1 149
wolfSSL 9:52ec7c02b1e1 150 /* Uncomment next line if building for RIOT-OS */
wolfSSL 9:52ec7c02b1e1 151 /* #define WOLFSSL_RIOT_OS */
wolfSSL 9:52ec7c02b1e1 152
wolfSSL 12:1a06964c2adb 153 /* Uncomment next line if building for using XILINX hardened crypto */
wolfSSL 12:1a06964c2adb 154 /* #define WOLFSSL_XILINX_CRYPT */
wolfSSL 12:1a06964c2adb 155
wolfSSL 12:1a06964c2adb 156 /* Uncomment next line if building for using XILINX */
wolfSSL 12:1a06964c2adb 157 /* #define WOLFSSL_XILINX */
wolfSSL 12:1a06964c2adb 158
wolfSSL 9:52ec7c02b1e1 159 #include <wolfssl/wolfcrypt/visibility.h>
wolfSSL 9:52ec7c02b1e1 160 #define WOLFSSL_USER_SETTINGS
wolfSSL 9:52ec7c02b1e1 161 #ifdef WOLFSSL_USER_SETTINGS
wolfSSL 12:1a06964c2adb 162 #include "user_settings.h"
wolfSSL 9:52ec7c02b1e1 163 #endif
wolfSSL 9:52ec7c02b1e1 164
wolfSSL 9:52ec7c02b1e1 165
wolfSSL 9:52ec7c02b1e1 166 /* make sure old RNG name is used with CTaoCrypt FIPS */
wolfSSL 9:52ec7c02b1e1 167 #ifdef HAVE_FIPS
wolfSSL 9:52ec7c02b1e1 168 #define WC_RNG RNG
wolfSSL 9:52ec7c02b1e1 169 /* blinding adds API not available yet in FIPS mode */
wolfSSL 9:52ec7c02b1e1 170 #undef WC_RSA_BLINDING
wolfSSL 9:52ec7c02b1e1 171 #endif
wolfSSL 9:52ec7c02b1e1 172
wolfSSL 9:52ec7c02b1e1 173
wolfSSL 9:52ec7c02b1e1 174 #ifdef IPHONE
wolfSSL 9:52ec7c02b1e1 175 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 176 #endif
wolfSSL 9:52ec7c02b1e1 177
wolfSSL 9:52ec7c02b1e1 178 #ifdef THREADX
wolfSSL 9:52ec7c02b1e1 179 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 180 #endif
wolfSSL 9:52ec7c02b1e1 181
wolfSSL 9:52ec7c02b1e1 182 #ifdef HAVE_NETX
wolfSSL 12:1a06964c2adb 183 #ifdef NEED_THREADX_TYPES
wolfSSL 12:1a06964c2adb 184 #include <types.h>
wolfSSL 12:1a06964c2adb 185 #endif
wolfSSL 12:1a06964c2adb 186 #include <nx_api.h>
wolfSSL 9:52ec7c02b1e1 187 #endif
wolfSSL 9:52ec7c02b1e1 188
wolfSSL 9:52ec7c02b1e1 189 #if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */
wolfSSL 9:52ec7c02b1e1 190 #define WOLFSSL_LWIP
wolfSSL 9:52ec7c02b1e1 191 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 192 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 193 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 194 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 195 #endif
wolfSSL 9:52ec7c02b1e1 196
wolfSSL 9:52ec7c02b1e1 197 #if defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_ROWLEY_ARM)
wolfSSL 9:52ec7c02b1e1 198 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 199 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 200 #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096)
wolfSSL 9:52ec7c02b1e1 201 #define USE_CERT_BUFFERS_1024
wolfSSL 9:52ec7c02b1e1 202 #endif
wolfSSL 9:52ec7c02b1e1 203 #define BENCH_EMBEDDED
wolfSSL 9:52ec7c02b1e1 204 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 205 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 206 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 207 #define BENCH_EMBEDDED
wolfSSL 9:52ec7c02b1e1 208 #endif
wolfSSL 9:52ec7c02b1e1 209
wolfSSL 9:52ec7c02b1e1 210 #ifdef MICROCHIP_PIC32
wolfSSL 9:52ec7c02b1e1 211 /* #define WOLFSSL_MICROCHIP_PIC32MZ */
wolfSSL 9:52ec7c02b1e1 212 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 213 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 214 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 215 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 216 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 217 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 218 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 219 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 220 #define WOLFSSL_HAVE_MIN
wolfSSL 12:1a06964c2adb 221 #define WOLFSSL_HAVE_MAX
wolfSSL 12:1a06964c2adb 222 #define NO_BIG_INT
wolfSSL 9:52ec7c02b1e1 223 #endif
wolfSSL 9:52ec7c02b1e1 224
wolfSSL 9:52ec7c02b1e1 225 #ifdef WOLFSSL_MICROCHIP_PIC32MZ
wolfSSL 9:52ec7c02b1e1 226 #define WOLFSSL_PIC32MZ_CRYPT
wolfSSL 9:52ec7c02b1e1 227 #define WOLFSSL_PIC32MZ_RNG
wolfSSL 12:1a06964c2adb 228 #define WOLFSSL_PIC32MZ_HASH
wolfSSL 9:52ec7c02b1e1 229 #endif
wolfSSL 9:52ec7c02b1e1 230
wolfSSL 9:52ec7c02b1e1 231 #ifdef MICROCHIP_TCPIP_V5
wolfSSL 9:52ec7c02b1e1 232 /* include timer functions */
wolfSSL 9:52ec7c02b1e1 233 #include "TCPIP Stack/TCPIP.h"
wolfSSL 9:52ec7c02b1e1 234 #endif
wolfSSL 9:52ec7c02b1e1 235
wolfSSL 9:52ec7c02b1e1 236 #ifdef MICROCHIP_TCPIP
wolfSSL 9:52ec7c02b1e1 237 /* include timer, NTP functions */
wolfSSL 9:52ec7c02b1e1 238 #ifdef MICROCHIP_MPLAB_HARMONY
wolfSSL 9:52ec7c02b1e1 239 #include "tcpip/tcpip.h"
wolfSSL 9:52ec7c02b1e1 240 #else
wolfSSL 9:52ec7c02b1e1 241 #include "system/system_services.h"
wolfSSL 9:52ec7c02b1e1 242 #include "tcpip/sntp.h"
wolfSSL 9:52ec7c02b1e1 243 #endif
wolfSSL 9:52ec7c02b1e1 244 #endif
wolfSSL 9:52ec7c02b1e1 245
wolfSSL 9:52ec7c02b1e1 246 #ifdef MBED
wolfSSL 9:52ec7c02b1e1 247 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 248 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 249 #define NO_CERT
wolfSSL 9:52ec7c02b1e1 250 #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096)
wolfSSL 9:52ec7c02b1e1 251 #define USE_CERT_BUFFERS_1024
wolfSSL 9:52ec7c02b1e1 252 #endif
wolfSSL 9:52ec7c02b1e1 253 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 254 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 255 #define NO_SHA512
wolfSSL 9:52ec7c02b1e1 256 #define NO_DH
wolfSSL 9:52ec7c02b1e1 257 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 258 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 259 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 260 #define NO_HC128
wolfSSL 9:52ec7c02b1e1 261 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 262 #define NO_SESSION_CACHE
wolfSSL 9:52ec7c02b1e1 263 #define WOLFSSL_CMSIS_RTOS
wolfSSL 9:52ec7c02b1e1 264 #endif
wolfSSL 9:52ec7c02b1e1 265
wolfSSL 9:52ec7c02b1e1 266
wolfSSL 9:52ec7c02b1e1 267 #ifdef WOLFSSL_EROAD
wolfSSL 9:52ec7c02b1e1 268 #define FREESCALE_MQX
wolfSSL 9:52ec7c02b1e1 269 #define FREESCALE_MMCAU
wolfSSL 9:52ec7c02b1e1 270 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 271 #define NO_STDIO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 272 #define WOLFSSL_LEANPSK
wolfSSL 9:52ec7c02b1e1 273 #define HAVE_NULL_CIPHER
wolfSSL 9:52ec7c02b1e1 274 #define NO_OLD_TLS
wolfSSL 9:52ec7c02b1e1 275 #define NO_ASN
wolfSSL 9:52ec7c02b1e1 276 #define NO_BIG_INT
wolfSSL 9:52ec7c02b1e1 277 #define NO_RSA
wolfSSL 9:52ec7c02b1e1 278 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 279 #define NO_DH
wolfSSL 9:52ec7c02b1e1 280 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 281 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 282 #define NO_CERTS
wolfSSL 9:52ec7c02b1e1 283 #define NO_PWDBASED
wolfSSL 9:52ec7c02b1e1 284 #define NO_DES3
wolfSSL 9:52ec7c02b1e1 285 #define NO_MD4
wolfSSL 9:52ec7c02b1e1 286 #define NO_RC4
wolfSSL 9:52ec7c02b1e1 287 #define NO_MD5
wolfSSL 9:52ec7c02b1e1 288 #define NO_SESSION_CACHE
wolfSSL 9:52ec7c02b1e1 289 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 290 #endif
wolfSSL 9:52ec7c02b1e1 291
wolfSSL 9:52ec7c02b1e1 292 #ifdef WOLFSSL_PICOTCP
wolfSSL 9:52ec7c02b1e1 293 #ifndef errno
wolfSSL 9:52ec7c02b1e1 294 #define errno pico_err
wolfSSL 9:52ec7c02b1e1 295 #endif
wolfSSL 9:52ec7c02b1e1 296 #include "pico_defines.h"
wolfSSL 9:52ec7c02b1e1 297 #include "pico_stack.h"
wolfSSL 9:52ec7c02b1e1 298 #include "pico_constants.h"
wolfSSL 9:52ec7c02b1e1 299 #include "pico_protocol.h"
wolfSSL 9:52ec7c02b1e1 300 #define CUSTOM_RAND_GENERATE pico_rand
wolfSSL 9:52ec7c02b1e1 301 #endif
wolfSSL 9:52ec7c02b1e1 302
wolfSSL 9:52ec7c02b1e1 303 #ifdef WOLFSSL_PICOTCP_DEMO
wolfSSL 9:52ec7c02b1e1 304 #define WOLFSSL_STM32
wolfSSL 9:52ec7c02b1e1 305 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 306 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 307 #define XMALLOC(s, h, type) PICO_ZALLOC((s))
wolfSSL 9:52ec7c02b1e1 308 #define XFREE(p, h, type) PICO_FREE((p))
wolfSSL 9:52ec7c02b1e1 309 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 310 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 311 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 312 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 313 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 314 #endif
wolfSSL 9:52ec7c02b1e1 315
wolfSSL 9:52ec7c02b1e1 316 #ifdef FREERTOS_WINSIM
wolfSSL 9:52ec7c02b1e1 317 #define FREERTOS
wolfSSL 9:52ec7c02b1e1 318 #define USE_WINDOWS_API
wolfSSL 9:52ec7c02b1e1 319 #endif
wolfSSL 9:52ec7c02b1e1 320
wolfSSL 9:52ec7c02b1e1 321
wolfSSL 9:52ec7c02b1e1 322 #ifdef WOLFSSL_VXWORKS
wolfSSL 9:52ec7c02b1e1 323 /* VxWorks simulator incorrectly detects building for i386 */
wolfSSL 9:52ec7c02b1e1 324 #ifdef VXWORKS_SIM
wolfSSL 9:52ec7c02b1e1 325 #define TFM_NO_ASM
wolfSSL 9:52ec7c02b1e1 326 #endif
wolfSSL 9:52ec7c02b1e1 327 #define WOLFSSL_PTHREADS
wolfSSL 9:52ec7c02b1e1 328 #define WOLFSSL_HAVE_MIN
wolfSSL 12:1a06964c2adb 329 #define WOLFSSL_HAVE_MAX
wolfSSL 9:52ec7c02b1e1 330 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 331 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 332 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 333 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 334 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 335 #endif
wolfSSL 9:52ec7c02b1e1 336
wolfSSL 9:52ec7c02b1e1 337
wolfSSL 9:52ec7c02b1e1 338 #ifdef WOLFSSL_ARDUINO
wolfSSL 9:52ec7c02b1e1 339 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 340 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 341 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 342 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 343 #ifndef INTEL_GALILEO /* Galileo has time.h compatibility */
wolfSSL 9:52ec7c02b1e1 344 #define TIME_OVERRIDES /* must define XTIME and XGMTIME externally */
wolfSSL 9:52ec7c02b1e1 345 #endif
wolfSSL 9:52ec7c02b1e1 346 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 347 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 348 #define NO_DH
wolfSSL 9:52ec7c02b1e1 349 #define NO_SESSION_CACHE
wolfSSL 9:52ec7c02b1e1 350 #define USE_SLOW_SHA
wolfSSL 9:52ec7c02b1e1 351 #define NO_WOLFSSL_SERVER
wolfSSL 9:52ec7c02b1e1 352 #define NO_ERROR_STRINGS
wolfSSL 9:52ec7c02b1e1 353 #endif
wolfSSL 9:52ec7c02b1e1 354
wolfSSL 9:52ec7c02b1e1 355
wolfSSL 9:52ec7c02b1e1 356 #ifdef WOLFSSL_UTASKER
wolfSSL 9:52ec7c02b1e1 357 /* uTasker configuration - used for fnRandom() */
wolfSSL 9:52ec7c02b1e1 358 #include "config.h"
wolfSSL 9:52ec7c02b1e1 359
wolfSSL 9:52ec7c02b1e1 360 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 361 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 362 #define WOLFSSL_HAVE_MIN
wolfSSL 9:52ec7c02b1e1 363 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 364
wolfSSL 9:52ec7c02b1e1 365 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 366 #define ALT_ECC_SIZE
wolfSSL 9:52ec7c02b1e1 367 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 368 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 369 #define ECC_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 370
wolfSSL 9:52ec7c02b1e1 371 /* used in wolfCrypt test */
wolfSSL 9:52ec7c02b1e1 372 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 373 #define USE_CERT_BUFFERS_2048
wolfSSL 9:52ec7c02b1e1 374
wolfSSL 9:52ec7c02b1e1 375 /* uTasker port uses RAW sockets, use I/O callbacks
wolfSSL 10:6c2db0c97d5a 376 * See wolfSSL uTasker example for sample callbacks */
wolfSSL 9:52ec7c02b1e1 377 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 378
wolfSSL 9:52ec7c02b1e1 379 /* uTasker filesystem not ported */
wolfSSL 9:52ec7c02b1e1 380 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 381
wolfSSL 9:52ec7c02b1e1 382 /* uTasker RNG is abstracted, calls HW RNG when available */
wolfSSL 9:52ec7c02b1e1 383 #define CUSTOM_RAND_GENERATE fnRandom
wolfSSL 9:52ec7c02b1e1 384 #define CUSTOM_RAND_TYPE unsigned short
wolfSSL 9:52ec7c02b1e1 385
wolfSSL 9:52ec7c02b1e1 386 /* user needs to define XTIME to function that provides
wolfSSL 9:52ec7c02b1e1 387 * seconds since Unix epoch */
wolfSSL 9:52ec7c02b1e1 388 #ifndef XTIME
wolfSSL 9:52ec7c02b1e1 389 #error XTIME must be defined in wolfSSL settings.h
wolfSSL 9:52ec7c02b1e1 390 /* #define XTIME fnSecondsSinceEpoch */
wolfSSL 9:52ec7c02b1e1 391 #endif
wolfSSL 9:52ec7c02b1e1 392
wolfSSL 9:52ec7c02b1e1 393 /* use uTasker std library replacements where available */
wolfSSL 9:52ec7c02b1e1 394 #define STRING_USER
wolfSSL 9:52ec7c02b1e1 395 #define XMEMCPY(d,s,l) uMemcpy((d),(s),(l))
wolfSSL 9:52ec7c02b1e1 396 #define XMEMSET(b,c,l) uMemset((b),(c),(l))
wolfSSL 9:52ec7c02b1e1 397 #define XMEMCMP(s1,s2,n) uMemcmp((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 398 #define XMEMMOVE(d,s,l) memmove((d),(s),(l))
wolfSSL 9:52ec7c02b1e1 399
wolfSSL 9:52ec7c02b1e1 400 #define XSTRLEN(s1) uStrlen((s1))
wolfSSL 9:52ec7c02b1e1 401 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 402 #define XSTRSTR(s1,s2) strstr((s1),(s2))
wolfSSL 9:52ec7c02b1e1 403 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 404 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 405 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 406 #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
wolfSSL 9:52ec7c02b1e1 407 #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_ALPN)
wolfSSL 9:52ec7c02b1e1 408 #define XSTRTOK strtok_r
wolfSSL 9:52ec7c02b1e1 409 #endif
wolfSSL 9:52ec7c02b1e1 410 #endif
wolfSSL 9:52ec7c02b1e1 411
wolfSSL 9:52ec7c02b1e1 412 #ifdef WOLFSSL_EMBOS
wolfSSL 9:52ec7c02b1e1 413 #define NO_FILESYSTEM /* Not ported at this time */
wolfSSL 9:52ec7c02b1e1 414 #define USE_CERT_BUFFERS_2048 /* use when NO_FILESYSTEM */
wolfSSL 9:52ec7c02b1e1 415 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 416 #define NO_RC4
wolfSSL 9:52ec7c02b1e1 417 #define SINGLE_THREADED /* Not ported at this time */
wolfSSL 9:52ec7c02b1e1 418 #endif
wolfSSL 9:52ec7c02b1e1 419
wolfSSL 9:52ec7c02b1e1 420 #ifdef WOLFSSL_RIOT_OS
wolfSSL 9:52ec7c02b1e1 421 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 422 #define TFM_NO_ASM
wolfSSL 9:52ec7c02b1e1 423 #define USE_FAST_MATH
wolfSSL 12:1a06964c2adb 424 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 425 #define USE_CERT_BUFFERS_2048
wolfSSL 9:52ec7c02b1e1 426 #endif
wolfSSL 9:52ec7c02b1e1 427
wolfSSL 9:52ec7c02b1e1 428 #ifdef WOLFSSL_NRF5x
wolfSSL 10:6c2db0c97d5a 429 #define SIZEOF_LONG 4
wolfSSL 10:6c2db0c97d5a 430 #define SIZEOF_LONG_LONG 8
wolfSSL 10:6c2db0c97d5a 431 #define NO_ASN_TIME
wolfSSL 10:6c2db0c97d5a 432 #define NO_DEV_RANDOM
wolfSSL 10:6c2db0c97d5a 433 #define NO_FILESYSTEM
wolfSSL 10:6c2db0c97d5a 434 #define NO_MAIN_DRIVER
wolfSSL 10:6c2db0c97d5a 435 #define NO_WRITEV
wolfSSL 10:6c2db0c97d5a 436 #define SINGLE_THREADED
wolfSSL 10:6c2db0c97d5a 437 #define USE_FAST_MATH
wolfSSL 10:6c2db0c97d5a 438 #define TFM_TIMING_RESISTANT
wolfSSL 10:6c2db0c97d5a 439 #define USE_WOLFSSL_MEMORY
wolfSSL 10:6c2db0c97d5a 440 #define WOLFSSL_NRF51
wolfSSL 10:6c2db0c97d5a 441 #define WOLFSSL_USER_IO
wolfSSL 10:6c2db0c97d5a 442 #define NO_SESSION_CACHE
wolfSSL 9:52ec7c02b1e1 443 #endif
wolfSSL 9:52ec7c02b1e1 444
wolfSSL 9:52ec7c02b1e1 445 /* Micrium will use Visual Studio for compilation but not the Win32 API */
wolfSSL 9:52ec7c02b1e1 446 #if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \
wolfSSL 10:6c2db0c97d5a 447 !defined(FREERTOS_TCP) && !defined(EBSNET) && !defined(WOLFSSL_EROAD) && \
wolfSSL 10:6c2db0c97d5a 448 !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS)
wolfSSL 9:52ec7c02b1e1 449 #define USE_WINDOWS_API
wolfSSL 9:52ec7c02b1e1 450 #endif
wolfSSL 9:52ec7c02b1e1 451
wolfSSL 9:52ec7c02b1e1 452 #if defined(WOLFSSL_uITRON4)
wolfSSL 9:52ec7c02b1e1 453
wolfSSL 9:52ec7c02b1e1 454 #define XMALLOC_USER
wolfSSL 9:52ec7c02b1e1 455 #include <stddef.h>
wolfSSL 9:52ec7c02b1e1 456 #define ITRON_POOL_SIZE 1024*20
wolfSSL 9:52ec7c02b1e1 457 extern int uITRON4_minit(size_t poolsz) ;
wolfSSL 9:52ec7c02b1e1 458 extern void *uITRON4_malloc(size_t sz) ;
wolfSSL 9:52ec7c02b1e1 459 extern void *uITRON4_realloc(void *p, size_t sz) ;
wolfSSL 9:52ec7c02b1e1 460 extern void uITRON4_free(void *p) ;
wolfSSL 9:52ec7c02b1e1 461
wolfSSL 9:52ec7c02b1e1 462 #define XMALLOC(sz, heap, type) uITRON4_malloc(sz)
wolfSSL 9:52ec7c02b1e1 463 #define XREALLOC(p, sz, heap, type) uITRON4_realloc(p, sz)
wolfSSL 9:52ec7c02b1e1 464 #define XFREE(p, heap, type) uITRON4_free(p)
wolfSSL 9:52ec7c02b1e1 465 #endif
wolfSSL 9:52ec7c02b1e1 466
wolfSSL 9:52ec7c02b1e1 467 #if defined(WOLFSSL_uTKERNEL2)
wolfSSL 10:6c2db0c97d5a 468 #ifndef NO_TKERNEL_MEM_POOL
wolfSSL 10:6c2db0c97d5a 469 #define XMALLOC_OVERRIDE
wolfSSL 10:6c2db0c97d5a 470 int uTKernel_init_mpool(unsigned int sz); /* initializing malloc pool */
wolfSSL 10:6c2db0c97d5a 471 void* uTKernel_malloc(unsigned int sz);
wolfSSL 10:6c2db0c97d5a 472 void* uTKernel_realloc(void *p, unsigned int sz);
wolfSSL 10:6c2db0c97d5a 473 void uTKernel_free(void *p);
wolfSSL 10:6c2db0c97d5a 474 #define XMALLOC(s, h, type) uTKernel_malloc((s))
wolfSSL 10:6c2db0c97d5a 475 #define XREALLOC(p, n, h, t) uTKernel_realloc((p), (n))
wolfSSL 10:6c2db0c97d5a 476 #define XFREE(p, h, type) uTKernel_free((p))
wolfSSL 10:6c2db0c97d5a 477 #endif
wolfSSL 10:6c2db0c97d5a 478
wolfSSL 10:6c2db0c97d5a 479 #ifndef NO_STDIO_FGETS_REMAP
wolfSSL 10:6c2db0c97d5a 480 #include <stdio.h>
wolfSSL 10:6c2db0c97d5a 481 #include "tm/tmonitor.h"
wolfSSL 9:52ec7c02b1e1 482
wolfSSL 10:6c2db0c97d5a 483 /* static char* gets(char *buff); */
wolfSSL 10:6c2db0c97d5a 484 static char* fgets(char *buff, int sz, FILE *fp) {
wolfSSL 10:6c2db0c97d5a 485 char * p = buff;
wolfSSL 10:6c2db0c97d5a 486 *p = '\0';
wolfSSL 10:6c2db0c97d5a 487 while (1) {
wolfSSL 10:6c2db0c97d5a 488 *p = tm_getchar(-1);
wolfSSL 10:6c2db0c97d5a 489 tm_putchar(*p);
wolfSSL 10:6c2db0c97d5a 490 if (*p == '\r') {
wolfSSL 10:6c2db0c97d5a 491 tm_putchar('\n');
wolfSSL 10:6c2db0c97d5a 492 *p = '\0';
wolfSSL 10:6c2db0c97d5a 493 break;
wolfSSL 10:6c2db0c97d5a 494 }
wolfSSL 10:6c2db0c97d5a 495 p++;
wolfSSL 9:52ec7c02b1e1 496 }
wolfSSL 10:6c2db0c97d5a 497 return buff;
wolfSSL 9:52ec7c02b1e1 498 }
wolfSSL 10:6c2db0c97d5a 499 #endif /* !NO_STDIO_FGETS_REMAP */
wolfSSL 9:52ec7c02b1e1 500 #endif
wolfSSL 9:52ec7c02b1e1 501
wolfSSL 9:52ec7c02b1e1 502
wolfSSL 9:52ec7c02b1e1 503 #if defined(WOLFSSL_LEANPSK) && !defined(XMALLOC_USER)
wolfSSL 9:52ec7c02b1e1 504 #include <stdlib.h>
wolfSSL 9:52ec7c02b1e1 505 #define XMALLOC(s, h, type) malloc((s))
wolfSSL 9:52ec7c02b1e1 506 #define XFREE(p, h, type) free((p))
wolfSSL 9:52ec7c02b1e1 507 #define XREALLOC(p, n, h, t) realloc((p), (n))
wolfSSL 9:52ec7c02b1e1 508 #endif
wolfSSL 9:52ec7c02b1e1 509
wolfSSL 9:52ec7c02b1e1 510 #if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL)
wolfSSL 9:52ec7c02b1e1 511 #undef XMALLOC
wolfSSL 9:52ec7c02b1e1 512 #define XMALLOC yaXMALLOC
wolfSSL 9:52ec7c02b1e1 513 #undef XFREE
wolfSSL 9:52ec7c02b1e1 514 #define XFREE yaXFREE
wolfSSL 9:52ec7c02b1e1 515 #undef XREALLOC
wolfSSL 9:52ec7c02b1e1 516 #define XREALLOC yaXREALLOC
wolfSSL 9:52ec7c02b1e1 517 #endif
wolfSSL 9:52ec7c02b1e1 518
wolfSSL 9:52ec7c02b1e1 519
wolfSSL 9:52ec7c02b1e1 520 #ifdef FREERTOS
wolfSSL 9:52ec7c02b1e1 521 #include "FreeRTOS.h"
wolfSSL 9:52ec7c02b1e1 522
wolfSSL 9:52ec7c02b1e1 523 /* FreeRTOS pvPortRealloc() only in AVR32_UC3 port */
wolfSSL 9:52ec7c02b1e1 524 #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY)
wolfSSL 9:52ec7c02b1e1 525 #define XMALLOC(s, h, type) pvPortMalloc((s))
wolfSSL 9:52ec7c02b1e1 526 #define XFREE(p, h, type) vPortFree((p))
wolfSSL 9:52ec7c02b1e1 527 #endif
wolfSSL 9:52ec7c02b1e1 528
wolfSSL 9:52ec7c02b1e1 529 #ifndef NO_WRITEV
wolfSSL 9:52ec7c02b1e1 530 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 531 #endif
wolfSSL 9:52ec7c02b1e1 532 #ifndef HAVE_SHA512
wolfSSL 9:52ec7c02b1e1 533 #ifndef NO_SHA512
wolfSSL 9:52ec7c02b1e1 534 #define NO_SHA512
wolfSSL 9:52ec7c02b1e1 535 #endif
wolfSSL 9:52ec7c02b1e1 536 #endif
wolfSSL 9:52ec7c02b1e1 537 #ifndef HAVE_DH
wolfSSL 9:52ec7c02b1e1 538 #ifndef NO_DH
wolfSSL 9:52ec7c02b1e1 539 #define NO_DH
wolfSSL 9:52ec7c02b1e1 540 #endif
wolfSSL 9:52ec7c02b1e1 541 #endif
wolfSSL 9:52ec7c02b1e1 542 #ifndef NO_DSA
wolfSSL 9:52ec7c02b1e1 543 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 544 #endif
wolfSSL 9:52ec7c02b1e1 545 #ifndef NO_HC128
wolfSSL 9:52ec7c02b1e1 546 #define NO_HC128
wolfSSL 9:52ec7c02b1e1 547 #endif
wolfSSL 9:52ec7c02b1e1 548
wolfSSL 9:52ec7c02b1e1 549 #ifndef SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 550 #include "semphr.h"
wolfSSL 9:52ec7c02b1e1 551 #endif
wolfSSL 9:52ec7c02b1e1 552 #endif
wolfSSL 9:52ec7c02b1e1 553
wolfSSL 9:52ec7c02b1e1 554 #ifdef FREERTOS_TCP
wolfSSL 9:52ec7c02b1e1 555
wolfSSL 9:52ec7c02b1e1 556 #if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER)
wolfSSL 9:52ec7c02b1e1 557 #define XMALLOC(s, h, type) pvPortMalloc((s))
wolfSSL 9:52ec7c02b1e1 558 #define XFREE(p, h, type) vPortFree((p))
wolfSSL 9:52ec7c02b1e1 559 #endif
wolfSSL 9:52ec7c02b1e1 560
wolfSSL 9:52ec7c02b1e1 561 #define WOLFSSL_GENSEED_FORTEST
wolfSSL 9:52ec7c02b1e1 562
wolfSSL 9:52ec7c02b1e1 563 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 564 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 565 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 566 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 567 #define NO_MAIN_DRIVER
wolfSSL 9:52ec7c02b1e1 568
wolfSSL 9:52ec7c02b1e1 569 #endif
wolfSSL 9:52ec7c02b1e1 570
wolfSSL 9:52ec7c02b1e1 571 #ifdef WOLFSSL_TIRTOS
wolfSSL 9:52ec7c02b1e1 572 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 573 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 574 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 575 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 576 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 577 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 578 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 579 #define USE_CERT_BUFFERS_2048
wolfSSL 9:52ec7c02b1e1 580 #define NO_ERROR_STRINGS
wolfSSL 9:52ec7c02b1e1 581 #define USER_TIME
wolfSSL 9:52ec7c02b1e1 582 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 583 #define HAVE_ALPN
wolfSSL 9:52ec7c02b1e1 584 #define HAVE_TLS_EXTENSIONS
wolfSSL 9:52ec7c02b1e1 585 #define HAVE_AESGCM
wolfSSL 9:52ec7c02b1e1 586 #define HAVE_SUPPORTED_CURVES
wolfSSL 9:52ec7c02b1e1 587 #define ALT_ECC_SIZE
wolfSSL 9:52ec7c02b1e1 588
wolfSSL 9:52ec7c02b1e1 589 #ifdef __IAR_SYSTEMS_ICC__
wolfSSL 9:52ec7c02b1e1 590 #pragma diag_suppress=Pa089
wolfSSL 9:52ec7c02b1e1 591 #elif !defined(__GNUC__)
wolfSSL 9:52ec7c02b1e1 592 /* Suppress the sslpro warning */
wolfSSL 9:52ec7c02b1e1 593 #pragma diag_suppress=11
wolfSSL 9:52ec7c02b1e1 594 #endif
wolfSSL 9:52ec7c02b1e1 595
wolfSSL 9:52ec7c02b1e1 596 #include <ti/sysbios/hal/Seconds.h>
wolfSSL 9:52ec7c02b1e1 597 #endif
wolfSSL 9:52ec7c02b1e1 598
wolfSSL 9:52ec7c02b1e1 599 #ifdef EBSNET
wolfSSL 9:52ec7c02b1e1 600 #include "rtip.h"
wolfSSL 9:52ec7c02b1e1 601
wolfSSL 9:52ec7c02b1e1 602 /* #define DEBUG_WOLFSSL */
wolfSSL 9:52ec7c02b1e1 603 #define NO_WOLFSSL_DIR /* tbd */
wolfSSL 9:52ec7c02b1e1 604
wolfSSL 9:52ec7c02b1e1 605 #if (POLLOS)
wolfSSL 9:52ec7c02b1e1 606 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 607 #endif
wolfSSL 9:52ec7c02b1e1 608
wolfSSL 9:52ec7c02b1e1 609 #if (RTPLATFORM)
wolfSSL 9:52ec7c02b1e1 610 #if (!RTP_LITTLE_ENDIAN)
wolfSSL 9:52ec7c02b1e1 611 #define BIG_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 612 #endif
wolfSSL 9:52ec7c02b1e1 613 #else
wolfSSL 9:52ec7c02b1e1 614 #if (!KS_LITTLE_ENDIAN)
wolfSSL 9:52ec7c02b1e1 615 #define BIG_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 616 #endif
wolfSSL 9:52ec7c02b1e1 617 #endif
wolfSSL 9:52ec7c02b1e1 618
wolfSSL 9:52ec7c02b1e1 619 #if (WINMSP3)
wolfSSL 9:52ec7c02b1e1 620 #undef SIZEOF_LONG
wolfSSL 9:52ec7c02b1e1 621 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 622 #else
wolfSSL 9:52ec7c02b1e1 623 #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG
wolfSSL 9:52ec7c02b1e1 624 #endif
wolfSSL 9:52ec7c02b1e1 625
wolfSSL 9:52ec7c02b1e1 626 #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC))
wolfSSL 9:52ec7c02b1e1 627 #define XFREE(p, h, type) (rtp_free(p))
wolfSSL 9:52ec7c02b1e1 628 #define XREALLOC(p, n, h, t) realloc((p), (n))
wolfSSL 9:52ec7c02b1e1 629
wolfSSL 9:52ec7c02b1e1 630 #endif /* EBSNET */
wolfSSL 9:52ec7c02b1e1 631
wolfSSL 9:52ec7c02b1e1 632 #ifdef WOLFSSL_GAME_BUILD
wolfSSL 9:52ec7c02b1e1 633 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 634 #if defined(__PPU) || defined(__XENON)
wolfSSL 9:52ec7c02b1e1 635 #define BIG_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 636 #endif
wolfSSL 9:52ec7c02b1e1 637 #endif
wolfSSL 9:52ec7c02b1e1 638
wolfSSL 9:52ec7c02b1e1 639 #ifdef WOLFSSL_LSR
wolfSSL 9:52ec7c02b1e1 640 #define HAVE_WEBSERVER
wolfSSL 9:52ec7c02b1e1 641 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 642 #define WOLFSSL_LOW_MEMORY
wolfSSL 9:52ec7c02b1e1 643 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 644 #define NO_SHA512
wolfSSL 9:52ec7c02b1e1 645 #define NO_DH
wolfSSL 9:52ec7c02b1e1 646 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 647 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 648 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 649 #define NO_HC128
wolfSSL 9:52ec7c02b1e1 650 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 651 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 652 #define NO_RABBIT
wolfSSL 9:52ec7c02b1e1 653 #ifndef NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 654 #define LSR_FS
wolfSSL 9:52ec7c02b1e1 655 #include "inc/hw_types.h"
wolfSSL 9:52ec7c02b1e1 656 #include "fs.h"
wolfSSL 9:52ec7c02b1e1 657 #endif
wolfSSL 9:52ec7c02b1e1 658 #define WOLFSSL_LWIP
wolfSSL 9:52ec7c02b1e1 659 #include <errno.h> /* for tcp errno */
wolfSSL 9:52ec7c02b1e1 660 #define WOLFSSL_SAFERTOS
wolfSSL 9:52ec7c02b1e1 661 #if defined(__IAR_SYSTEMS_ICC__)
wolfSSL 9:52ec7c02b1e1 662 /* enum uses enum */
wolfSSL 9:52ec7c02b1e1 663 #pragma diag_suppress=Pa089
wolfSSL 9:52ec7c02b1e1 664 #endif
wolfSSL 9:52ec7c02b1e1 665 #endif
wolfSSL 9:52ec7c02b1e1 666
wolfSSL 9:52ec7c02b1e1 667 #ifdef WOLFSSL_SAFERTOS
wolfSSL 9:52ec7c02b1e1 668 #ifndef SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 669 #include "SafeRTOS/semphr.h"
wolfSSL 9:52ec7c02b1e1 670 #endif
wolfSSL 9:52ec7c02b1e1 671
wolfSSL 9:52ec7c02b1e1 672 #include "SafeRTOS/heap.h"
wolfSSL 9:52ec7c02b1e1 673 #define XMALLOC(s, h, type) pvPortMalloc((s))
wolfSSL 9:52ec7c02b1e1 674 #define XFREE(p, h, type) vPortFree((p))
wolfSSL 9:52ec7c02b1e1 675 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n))
wolfSSL 9:52ec7c02b1e1 676 #endif
wolfSSL 9:52ec7c02b1e1 677
wolfSSL 9:52ec7c02b1e1 678 #ifdef WOLFSSL_LOW_MEMORY
wolfSSL 9:52ec7c02b1e1 679 #undef RSA_LOW_MEM
wolfSSL 9:52ec7c02b1e1 680 #define RSA_LOW_MEM
wolfSSL 9:52ec7c02b1e1 681 #undef WOLFSSL_SMALL_STACK
wolfSSL 9:52ec7c02b1e1 682 #define WOLFSSL_SMALL_STACK
wolfSSL 9:52ec7c02b1e1 683 #undef TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 684 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 685 #endif
wolfSSL 9:52ec7c02b1e1 686
wolfSSL 9:52ec7c02b1e1 687 #ifdef FREESCALE_MQX
wolfSSL 9:52ec7c02b1e1 688 #define FREESCALE_COMMON
wolfSSL 9:52ec7c02b1e1 689 #include "mqx.h"
wolfSSL 9:52ec7c02b1e1 690 #ifndef NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 691 #include "mfs.h"
wolfSSL 9:52ec7c02b1e1 692 #if MQX_USE_IO_OLD
wolfSSL 9:52ec7c02b1e1 693 #include "fio.h"
wolfSSL 12:1a06964c2adb 694 #define NO_STDIO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 695 #else
wolfSSL 9:52ec7c02b1e1 696 #include "nio.h"
wolfSSL 9:52ec7c02b1e1 697 #endif
wolfSSL 9:52ec7c02b1e1 698 #endif
wolfSSL 9:52ec7c02b1e1 699 #ifndef SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 700 #include "mutex.h"
wolfSSL 9:52ec7c02b1e1 701 #endif
wolfSSL 9:52ec7c02b1e1 702
wolfSSL 12:1a06964c2adb 703 #define XMALLOC_OVERRIDE
wolfSSL 9:52ec7c02b1e1 704 #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
wolfSSL 9:52ec7c02b1e1 705 #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
wolfSSL 9:52ec7c02b1e1 706 /* Note: MQX has no realloc, using fastmath above */
wolfSSL 9:52ec7c02b1e1 707 #endif
wolfSSL 9:52ec7c02b1e1 708
wolfSSL 9:52ec7c02b1e1 709 #ifdef FREESCALE_KSDK_MQX
wolfSSL 9:52ec7c02b1e1 710 #define FREESCALE_COMMON
wolfSSL 9:52ec7c02b1e1 711 #include <mqx.h>
wolfSSL 9:52ec7c02b1e1 712 #ifndef NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 713 #if MQX_USE_IO_OLD
wolfSSL 9:52ec7c02b1e1 714 #include <fio.h>
wolfSSL 9:52ec7c02b1e1 715 #else
wolfSSL 9:52ec7c02b1e1 716 #include <stdio.h>
wolfSSL 9:52ec7c02b1e1 717 #include <nio.h>
wolfSSL 9:52ec7c02b1e1 718 #endif
wolfSSL 9:52ec7c02b1e1 719 #endif
wolfSSL 9:52ec7c02b1e1 720 #ifndef SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 721 #include <mutex.h>
wolfSSL 9:52ec7c02b1e1 722 #endif
wolfSSL 9:52ec7c02b1e1 723
wolfSSL 9:52ec7c02b1e1 724 #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
wolfSSL 9:52ec7c02b1e1 725 #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
wolfSSL 9:52ec7c02b1e1 726 #define XREALLOC(p, n, h, t) _mem_realloc((p), (n)) /* since MQX 4.1.2 */
wolfSSL 9:52ec7c02b1e1 727
wolfSSL 9:52ec7c02b1e1 728 #define MQX_FILE_PTR FILE *
wolfSSL 9:52ec7c02b1e1 729 #define IO_SEEK_SET SEEK_SET
wolfSSL 9:52ec7c02b1e1 730 #define IO_SEEK_END SEEK_END
wolfSSL 9:52ec7c02b1e1 731 #endif /* FREESCALE_KSDK_MQX */
wolfSSL 9:52ec7c02b1e1 732
wolfSSL 9:52ec7c02b1e1 733 #if defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS)
wolfSSL 9:52ec7c02b1e1 734 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 735 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 736 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 737 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 738 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 739 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 740 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 741 #define WOLFSSL_CRYPT_HW_MUTEX 1
wolfSSL 10:6c2db0c97d5a 742
wolfSSL 9:52ec7c02b1e1 743 #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY)
wolfSSL 9:52ec7c02b1e1 744 #define XMALLOC(s, h, type) pvPortMalloc((s))
wolfSSL 9:52ec7c02b1e1 745 #define XFREE(p, h, type) vPortFree((p))
wolfSSL 9:52ec7c02b1e1 746 #endif
wolfSSL 10:6c2db0c97d5a 747
wolfSSL 9:52ec7c02b1e1 748 //#define USER_TICKS
wolfSSL 9:52ec7c02b1e1 749 /* Allows use of DH with fixed points if uncommented and NO_DH is removed */
wolfSSL 9:52ec7c02b1e1 750 /* WOLFSSL_DH_CONST */
wolfSSL 9:52ec7c02b1e1 751 #define WOLFSSL_LWIP
wolfSSL 9:52ec7c02b1e1 752 #define FREERTOS_TCP
wolfSSL 9:52ec7c02b1e1 753
wolfSSL 9:52ec7c02b1e1 754 #define FREESCALE_FREE_RTOS
wolfSSL 9:52ec7c02b1e1 755 #define FREERTOS_SOCKET_ERROR ( -1 )
wolfSSL 9:52ec7c02b1e1 756 #define FREERTOS_EWOULDBLOCK ( -2 )
wolfSSL 9:52ec7c02b1e1 757 #define FREERTOS_EINVAL ( -4 )
wolfSSL 9:52ec7c02b1e1 758 #define FREERTOS_EADDRNOTAVAIL ( -5 )
wolfSSL 9:52ec7c02b1e1 759 #define FREERTOS_EADDRINUSE ( -6 )
wolfSSL 9:52ec7c02b1e1 760 #define FREERTOS_ENOBUFS ( -7 )
wolfSSL 9:52ec7c02b1e1 761 #define FREERTOS_ENOPROTOOPT ( -8 )
wolfSSL 9:52ec7c02b1e1 762 #endif /* FREESCALE_FREE_RTOS || FREESCALE_KSDK_FREERTOS */
wolfSSL 9:52ec7c02b1e1 763
wolfSSL 9:52ec7c02b1e1 764 #ifdef FREESCALE_KSDK_BM
wolfSSL 9:52ec7c02b1e1 765 #define FREESCALE_COMMON
wolfSSL 9:52ec7c02b1e1 766 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 767 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 768 #define NO_FILESYSTEM
wolfSSL 10:6c2db0c97d5a 769 #ifndef TIME_OVERRIDES
wolfSSL 10:6c2db0c97d5a 770 #define USER_TICKS
wolfSSL 10:6c2db0c97d5a 771 #endif
wolfSSL 9:52ec7c02b1e1 772 #endif /* FREESCALE_KSDK_BM */
wolfSSL 9:52ec7c02b1e1 773
wolfSSL 9:52ec7c02b1e1 774 #ifdef FREESCALE_COMMON
wolfSSL 9:52ec7c02b1e1 775 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 776
wolfSSL 9:52ec7c02b1e1 777 /* disable features */
wolfSSL 9:52ec7c02b1e1 778 #undef NO_WRITEV
wolfSSL 9:52ec7c02b1e1 779 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 780 #undef NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 781 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 782 #undef NO_RABBIT
wolfSSL 9:52ec7c02b1e1 783 #define NO_RABBIT
wolfSSL 9:52ec7c02b1e1 784 #undef NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 785 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 786 #undef NO_RC4
wolfSSL 9:52ec7c02b1e1 787 #define NO_RC4
wolfSSL 9:52ec7c02b1e1 788
wolfSSL 9:52ec7c02b1e1 789 /* enable features */
wolfSSL 9:52ec7c02b1e1 790 #undef USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 791 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 792
wolfSSL 9:52ec7c02b1e1 793 #define USE_CERT_BUFFERS_2048
wolfSSL 9:52ec7c02b1e1 794 #define BENCH_EMBEDDED
wolfSSL 9:52ec7c02b1e1 795
wolfSSL 9:52ec7c02b1e1 796 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 797 #define ECC_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 798
wolfSSL 9:52ec7c02b1e1 799 #undef HAVE_ECC
wolfSSL 9:52ec7c02b1e1 800 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 801 #ifndef NO_AES
wolfSSL 9:52ec7c02b1e1 802 #undef HAVE_AESCCM
wolfSSL 9:52ec7c02b1e1 803 #define HAVE_AESCCM
wolfSSL 9:52ec7c02b1e1 804 #undef HAVE_AESGCM
wolfSSL 9:52ec7c02b1e1 805 #define HAVE_AESGCM
wolfSSL 9:52ec7c02b1e1 806 #undef WOLFSSL_AES_COUNTER
wolfSSL 9:52ec7c02b1e1 807 #define WOLFSSL_AES_COUNTER
wolfSSL 9:52ec7c02b1e1 808 #undef WOLFSSL_AES_DIRECT
wolfSSL 9:52ec7c02b1e1 809 #define WOLFSSL_AES_DIRECT
wolfSSL 9:52ec7c02b1e1 810 #endif
wolfSSL 9:52ec7c02b1e1 811
wolfSSL 10:6c2db0c97d5a 812 #ifdef FREESCALE_KSDK_1_3
wolfSSL 10:6c2db0c97d5a 813 #include "fsl_device_registers.h"
wolfSSL 12:1a06964c2adb 814 #elif !defined(FREESCALE_MQX)
wolfSSL 12:1a06964c2adb 815 /* Classic MQX does not have fsl_common.h */
wolfSSL 10:6c2db0c97d5a 816 #include "fsl_common.h"
wolfSSL 10:6c2db0c97d5a 817 #endif
wolfSSL 9:52ec7c02b1e1 818
wolfSSL 9:52ec7c02b1e1 819 /* random seed */
wolfSSL 9:52ec7c02b1e1 820 #define NO_OLD_RNGNAME
wolfSSL 9:52ec7c02b1e1 821 #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0)
wolfSSL 9:52ec7c02b1e1 822 #define FREESCALE_KSDK_2_0_TRNG
wolfSSL 9:52ec7c02b1e1 823 #elif defined(FSL_FEATURE_SOC_RNG_COUNT) && (FSL_FEATURE_SOC_RNG_COUNT > 0)
wolfSSL 10:6c2db0c97d5a 824 #ifdef FREESCALE_KSDK_1_3
wolfSSL 10:6c2db0c97d5a 825 #include "fsl_rnga_driver.h"
wolfSSL 10:6c2db0c97d5a 826 #define FREESCALE_RNGA
wolfSSL 10:6c2db0c97d5a 827 #define RNGA_INSTANCE (0)
wolfSSL 10:6c2db0c97d5a 828 #else
wolfSSL 10:6c2db0c97d5a 829 #define FREESCALE_KSDK_2_0_RNGA
wolfSSL 10:6c2db0c97d5a 830 #endif
wolfSSL 9:52ec7c02b1e1 831 #elif !defined(FREESCALE_KSDK_BM) && !defined(FREESCALE_FREE_RTOS) && !defined(FREESCALE_KSDK_FREERTOS)
wolfSSL 9:52ec7c02b1e1 832 #define FREESCALE_RNGA
wolfSSL 9:52ec7c02b1e1 833 #define RNGA_INSTANCE (0)
wolfSSL 9:52ec7c02b1e1 834 /* defaulting to K70 RNGA, user should change if different */
wolfSSL 9:52ec7c02b1e1 835 /* #define FREESCALE_K53_RNGB */
wolfSSL 9:52ec7c02b1e1 836 #define FREESCALE_K70_RNGA
wolfSSL 9:52ec7c02b1e1 837 #endif
wolfSSL 9:52ec7c02b1e1 838
wolfSSL 9:52ec7c02b1e1 839 /* HW crypto */
wolfSSL 9:52ec7c02b1e1 840 /* automatic enable based on Kinetis feature */
wolfSSL 9:52ec7c02b1e1 841 /* if case manual selection is required, for example for benchmarking purposes,
wolfSSL 9:52ec7c02b1e1 842 * just define FREESCALE_USE_MMCAU or FREESCALE_USE_LTC or none of these two macros (for software only)
wolfSSL 9:52ec7c02b1e1 843 * both can be enabled simultaneously as LTC has priority over MMCAU in source code.
wolfSSL 9:52ec7c02b1e1 844 */
wolfSSL 9:52ec7c02b1e1 845 /* #define FSL_HW_CRYPTO_MANUAL_SELECTION */
wolfSSL 9:52ec7c02b1e1 846 #ifndef FSL_HW_CRYPTO_MANUAL_SELECTION
wolfSSL 9:52ec7c02b1e1 847 #if defined(FSL_FEATURE_SOC_MMCAU_COUNT) && FSL_FEATURE_SOC_MMCAU_COUNT
wolfSSL 9:52ec7c02b1e1 848 #define FREESCALE_USE_MMCAU
wolfSSL 9:52ec7c02b1e1 849 #endif
wolfSSL 9:52ec7c02b1e1 850
wolfSSL 9:52ec7c02b1e1 851 #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT
wolfSSL 9:52ec7c02b1e1 852 #define FREESCALE_USE_LTC
wolfSSL 9:52ec7c02b1e1 853 #endif
wolfSSL 9:52ec7c02b1e1 854 #else
wolfSSL 9:52ec7c02b1e1 855 /* #define FREESCALE_USE_MMCAU */
wolfSSL 9:52ec7c02b1e1 856 /* #define FREESCALE_USE_LTC */
wolfSSL 9:52ec7c02b1e1 857 #endif
wolfSSL 9:52ec7c02b1e1 858 #endif /* FREESCALE_COMMON */
wolfSSL 9:52ec7c02b1e1 859
wolfSSL 12:1a06964c2adb 860 /* Classic pre-KSDK mmCAU library */
wolfSSL 12:1a06964c2adb 861 #ifdef FREESCALE_USE_MMCAU_CLASSIC
wolfSSL 12:1a06964c2adb 862 #define FREESCALE_USE_MMCAU
wolfSSL 12:1a06964c2adb 863 #define FREESCALE_MMCAU_CLASSIC
wolfSSL 12:1a06964c2adb 864 #define FREESCALE_MMCAU_CLASSIC_SHA
wolfSSL 12:1a06964c2adb 865 #endif
wolfSSL 12:1a06964c2adb 866
wolfSSL 12:1a06964c2adb 867 /* KSDK mmCAU library */
wolfSSL 9:52ec7c02b1e1 868 #ifdef FREESCALE_USE_MMCAU
wolfSSL 9:52ec7c02b1e1 869 /* AES and DES */
wolfSSL 9:52ec7c02b1e1 870 #define FREESCALE_MMCAU
wolfSSL 9:52ec7c02b1e1 871 /* MD5, SHA-1 and SHA-256 */
wolfSSL 9:52ec7c02b1e1 872 #define FREESCALE_MMCAU_SHA
wolfSSL 9:52ec7c02b1e1 873 #endif /* FREESCALE_USE_MMCAU */
wolfSSL 9:52ec7c02b1e1 874
wolfSSL 9:52ec7c02b1e1 875 #ifdef FREESCALE_USE_LTC
wolfSSL 9:52ec7c02b1e1 876 #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT
wolfSSL 9:52ec7c02b1e1 877 #define FREESCALE_LTC
wolfSSL 9:52ec7c02b1e1 878 #define LTC_BASE LTC0
wolfSSL 9:52ec7c02b1e1 879
wolfSSL 9:52ec7c02b1e1 880 #if defined(FSL_FEATURE_LTC_HAS_DES) && FSL_FEATURE_LTC_HAS_DES
wolfSSL 9:52ec7c02b1e1 881 #define FREESCALE_LTC_DES
wolfSSL 9:52ec7c02b1e1 882 #endif
wolfSSL 9:52ec7c02b1e1 883
wolfSSL 9:52ec7c02b1e1 884 #if defined(FSL_FEATURE_LTC_HAS_GCM) && FSL_FEATURE_LTC_HAS_GCM
wolfSSL 9:52ec7c02b1e1 885 #define FREESCALE_LTC_AES_GCM
wolfSSL 9:52ec7c02b1e1 886 #endif
wolfSSL 10:6c2db0c97d5a 887
wolfSSL 9:52ec7c02b1e1 888 #if defined(FSL_FEATURE_LTC_HAS_SHA) && FSL_FEATURE_LTC_HAS_SHA
wolfSSL 9:52ec7c02b1e1 889 #define FREESCALE_LTC_SHA
wolfSSL 9:52ec7c02b1e1 890 #endif
wolfSSL 9:52ec7c02b1e1 891
wolfSSL 9:52ec7c02b1e1 892 #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA
wolfSSL 9:52ec7c02b1e1 893 #define FREESCALE_LTC_ECC
wolfSSL 9:52ec7c02b1e1 894 #define FREESCALE_LTC_TFM
wolfSSL 9:52ec7c02b1e1 895
wolfSSL 9:52ec7c02b1e1 896 /* the LTC PKHA hardware limit is 2048 bits (256 bytes) for integer arithmetic.
wolfSSL 9:52ec7c02b1e1 897 the LTC_MAX_INT_BYTES defines the size of local variables that hold big integers. */
wolfSSL 9:52ec7c02b1e1 898 #ifndef LTC_MAX_INT_BYTES
wolfSSL 9:52ec7c02b1e1 899 #define LTC_MAX_INT_BYTES (256)
wolfSSL 9:52ec7c02b1e1 900 #endif
wolfSSL 9:52ec7c02b1e1 901
wolfSSL 10:6c2db0c97d5a 902 /* This FREESCALE_LTC_TFM_RSA_4096_ENABLE macro can be defined.
wolfSSL 9:52ec7c02b1e1 903 * In such a case both software and hardware algorithm
wolfSSL 9:52ec7c02b1e1 904 * for TFM is linked in. The decision for which algorithm is used is determined at runtime
wolfSSL 9:52ec7c02b1e1 905 * from size of inputs. If inputs and result can fit into LTC (see LTC_MAX_INT_BYTES)
wolfSSL 9:52ec7c02b1e1 906 * then we call hardware algorithm, otherwise we call software algorithm.
wolfSSL 10:6c2db0c97d5a 907 *
wolfSSL 9:52ec7c02b1e1 908 * Chinese reminder theorem is used to break RSA 4096 exponentiations (both public and private key)
wolfSSL 9:52ec7c02b1e1 909 * into several computations with 2048-bit modulus and exponents.
wolfSSL 9:52ec7c02b1e1 910 */
wolfSSL 9:52ec7c02b1e1 911 /* #define FREESCALE_LTC_TFM_RSA_4096_ENABLE */
wolfSSL 9:52ec7c02b1e1 912
wolfSSL 9:52ec7c02b1e1 913 /* ECC-384, ECC-256, ECC-224 and ECC-192 have been enabled with LTC PKHA acceleration */
wolfSSL 9:52ec7c02b1e1 914 #ifdef HAVE_ECC
wolfSSL 9:52ec7c02b1e1 915 #undef ECC_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 916 #define ECC_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 917
wolfSSL 9:52ec7c02b1e1 918 /* the LTC PKHA hardware limit is 512 bits (64 bytes) for ECC.
wolfSSL 10:6c2db0c97d5a 919 the LTC_MAX_ECC_BITS defines the size of local variables that hold ECC parameters
wolfSSL 9:52ec7c02b1e1 920 and point coordinates */
wolfSSL 9:52ec7c02b1e1 921 #ifndef LTC_MAX_ECC_BITS
wolfSSL 9:52ec7c02b1e1 922 #define LTC_MAX_ECC_BITS (384)
wolfSSL 9:52ec7c02b1e1 923 #endif
wolfSSL 9:52ec7c02b1e1 924
wolfSSL 9:52ec7c02b1e1 925 /* Enable curves up to 384 bits */
wolfSSL 9:52ec7c02b1e1 926 #if !defined(ECC_USER_CURVES) && !defined(HAVE_ALL_CURVES)
wolfSSL 9:52ec7c02b1e1 927 #define ECC_USER_CURVES
wolfSSL 9:52ec7c02b1e1 928 #define HAVE_ECC192
wolfSSL 9:52ec7c02b1e1 929 #define HAVE_ECC224
wolfSSL 9:52ec7c02b1e1 930 #undef NO_ECC256
wolfSSL 9:52ec7c02b1e1 931 #define HAVE_ECC384
wolfSSL 9:52ec7c02b1e1 932 #endif
wolfSSL 9:52ec7c02b1e1 933
wolfSSL 9:52ec7c02b1e1 934 /* enable features */
wolfSSL 9:52ec7c02b1e1 935 #undef HAVE_CURVE25519
wolfSSL 9:52ec7c02b1e1 936 #define HAVE_CURVE25519
wolfSSL 9:52ec7c02b1e1 937 #undef HAVE_ED25519
wolfSSL 9:52ec7c02b1e1 938 #define HAVE_ED25519
wolfSSL 9:52ec7c02b1e1 939 #undef WOLFSSL_SHA512
wolfSSL 9:52ec7c02b1e1 940 #define WOLFSSL_SHA512
wolfSSL 9:52ec7c02b1e1 941 #endif
wolfSSL 9:52ec7c02b1e1 942 #endif
wolfSSL 9:52ec7c02b1e1 943 #endif
wolfSSL 9:52ec7c02b1e1 944 #endif /* FREESCALE_USE_LTC */
wolfSSL 9:52ec7c02b1e1 945
wolfSSL 9:52ec7c02b1e1 946 #ifdef FREESCALE_LTC_TFM_RSA_4096_ENABLE
wolfSSL 9:52ec7c02b1e1 947 #undef USE_CERT_BUFFERS_4096
wolfSSL 9:52ec7c02b1e1 948 #define USE_CERT_BUFFERS_4096
wolfSSL 9:52ec7c02b1e1 949 #undef FP_MAX_BITS
wolfSSL 9:52ec7c02b1e1 950 #define FP_MAX_BITS (8192)
wolfSSL 9:52ec7c02b1e1 951
wolfSSL 9:52ec7c02b1e1 952 #undef NO_DH
wolfSSL 9:52ec7c02b1e1 953 #define NO_DH
wolfSSL 9:52ec7c02b1e1 954 #undef NO_DSA
wolfSSL 9:52ec7c02b1e1 955 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 956 #endif /* FREESCALE_LTC_TFM_RSA_4096_ENABLE */
wolfSSL 9:52ec7c02b1e1 957
wolfSSL 9:52ec7c02b1e1 958 /* if LTC has AES engine but doesn't have GCM, use software with LTC AES ECB mode */
wolfSSL 9:52ec7c02b1e1 959 #if defined(FREESCALE_USE_LTC) && !defined(FREESCALE_LTC_AES_GCM)
wolfSSL 9:52ec7c02b1e1 960 #define GCM_TABLE
wolfSSL 9:52ec7c02b1e1 961 #endif
wolfSSL 9:52ec7c02b1e1 962
wolfSSL 9:52ec7c02b1e1 963 #ifdef WOLFSSL_STM32F2
wolfSSL 9:52ec7c02b1e1 964 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 965 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 966 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 967 #undef NO_RABBIT
wolfSSL 9:52ec7c02b1e1 968 #define NO_RABBIT
wolfSSL 9:52ec7c02b1e1 969 #undef NO_64BIT
wolfSSL 9:52ec7c02b1e1 970 #define NO_64BIT
wolfSSL 9:52ec7c02b1e1 971 #define STM32F2_RNG
wolfSSL 9:52ec7c02b1e1 972 #define STM32F2_CRYPTO
wolfSSL 9:52ec7c02b1e1 973 #if !defined(__GNUC__) && !defined(__ICCARM__)
wolfSSL 9:52ec7c02b1e1 974 #define KEIL_INTRINSICS
wolfSSL 9:52ec7c02b1e1 975 #endif
wolfSSL 9:52ec7c02b1e1 976 #define NO_OLD_RNGNAME
wolfSSL 9:52ec7c02b1e1 977 #ifdef WOLFSSL_STM32_CUBEMX
wolfSSL 9:52ec7c02b1e1 978 #include "stm32f2xx_hal.h"
wolfSSL 10:6c2db0c97d5a 979 #ifndef STM32_HAL_TIMEOUT
wolfSSL 10:6c2db0c97d5a 980 #define STM32_HAL_TIMEOUT 0xFF
wolfSSL 10:6c2db0c97d5a 981 #endif
wolfSSL 9:52ec7c02b1e1 982 #else
wolfSSL 9:52ec7c02b1e1 983 #include "stm32f2xx.h"
wolfSSL 9:52ec7c02b1e1 984 #include "stm32f2xx_cryp.h"
wolfSSL 9:52ec7c02b1e1 985 #include "stm32f2xx_hash.h"
wolfSSL 9:52ec7c02b1e1 986 #endif /* WOLFSSL_STM32_CUBEMX */
wolfSSL 9:52ec7c02b1e1 987 #endif
wolfSSL 9:52ec7c02b1e1 988
wolfSSL 9:52ec7c02b1e1 989 #ifdef WOLFSSL_STM32F4
wolfSSL 9:52ec7c02b1e1 990 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 991 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 992 #define NO_WOLFSSL_DIR
wolfSSL 9:52ec7c02b1e1 993 #undef NO_RABBIT
wolfSSL 9:52ec7c02b1e1 994 #define NO_RABBIT
wolfSSL 9:52ec7c02b1e1 995 #undef NO_64BIT
wolfSSL 9:52ec7c02b1e1 996 #define NO_64BIT
wolfSSL 9:52ec7c02b1e1 997 #define STM32F4_RNG
wolfSSL 9:52ec7c02b1e1 998 #define STM32F4_CRYPTO
wolfSSL 9:52ec7c02b1e1 999 #define NO_OLD_RNGNAME
wolfSSL 9:52ec7c02b1e1 1000 #if !defined(__GNUC__) && !defined(__ICCARM__)
wolfSSL 9:52ec7c02b1e1 1001 #define KEIL_INTRINSICS
wolfSSL 9:52ec7c02b1e1 1002 #endif
wolfSSL 9:52ec7c02b1e1 1003 #ifdef WOLFSSL_STM32_CUBEMX
wolfSSL 9:52ec7c02b1e1 1004 #include "stm32f4xx_hal.h"
wolfSSL 10:6c2db0c97d5a 1005 #ifndef STM32_HAL_TIMEOUT
wolfSSL 10:6c2db0c97d5a 1006 #define STM32_HAL_TIMEOUT 0xFF
wolfSSL 10:6c2db0c97d5a 1007 #endif
wolfSSL 9:52ec7c02b1e1 1008 #else
wolfSSL 9:52ec7c02b1e1 1009 #include "stm32f4xx.h"
wolfSSL 9:52ec7c02b1e1 1010 #include "stm32f4xx_cryp.h"
wolfSSL 9:52ec7c02b1e1 1011 #include "stm32f4xx_hash.h"
wolfSSL 9:52ec7c02b1e1 1012 #endif /* WOLFSSL_STM32_CUBEMX */
wolfSSL 9:52ec7c02b1e1 1013 #endif
wolfSSL 9:52ec7c02b1e1 1014
wolfSSL 9:52ec7c02b1e1 1015 #ifdef MICRIUM
wolfSSL 9:52ec7c02b1e1 1016
wolfSSL 9:52ec7c02b1e1 1017 #include "stdlib.h"
wolfSSL 9:52ec7c02b1e1 1018 #include "net_cfg.h"
wolfSSL 9:52ec7c02b1e1 1019 #include "ssl_cfg.h"
wolfSSL 9:52ec7c02b1e1 1020 #include "net_secure_os.h"
wolfSSL 9:52ec7c02b1e1 1021
wolfSSL 9:52ec7c02b1e1 1022 #define WOLFSSL_TYPES
wolfSSL 9:52ec7c02b1e1 1023
wolfSSL 9:52ec7c02b1e1 1024 typedef CPU_INT08U byte;
wolfSSL 9:52ec7c02b1e1 1025 typedef CPU_INT16U word16;
wolfSSL 9:52ec7c02b1e1 1026 typedef CPU_INT32U word32;
wolfSSL 9:52ec7c02b1e1 1027
wolfSSL 9:52ec7c02b1e1 1028 #if (NET_SECURE_MGR_CFG_WORD_SIZE == CPU_WORD_SIZE_32)
wolfSSL 9:52ec7c02b1e1 1029 #define SIZEOF_LONG 4
wolfSSL 9:52ec7c02b1e1 1030 #undef SIZEOF_LONG_LONG
wolfSSL 9:52ec7c02b1e1 1031 #else
wolfSSL 9:52ec7c02b1e1 1032 #undef SIZEOF_LONG
wolfSSL 9:52ec7c02b1e1 1033 #define SIZEOF_LONG_LONG 8
wolfSSL 9:52ec7c02b1e1 1034 #endif
wolfSSL 9:52ec7c02b1e1 1035
wolfSSL 9:52ec7c02b1e1 1036 #define STRING_USER
wolfSSL 9:52ec7c02b1e1 1037
wolfSSL 9:52ec7c02b1e1 1038 #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr)))
wolfSSL 9:52ec7c02b1e1 1039 #define XSTRNCPY(pstr_dest, pstr_src, len_max) \
wolfSSL 9:52ec7c02b1e1 1040 ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \
wolfSSL 9:52ec7c02b1e1 1041 (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max)))
wolfSSL 9:52ec7c02b1e1 1042 #define XSTRNCMP(pstr_1, pstr_2, len_max) \
wolfSSL 9:52ec7c02b1e1 1043 ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \
wolfSSL 9:52ec7c02b1e1 1044 (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max)))
wolfSSL 9:52ec7c02b1e1 1045 #define XSTRSTR(pstr, pstr_srch) \
wolfSSL 9:52ec7c02b1e1 1046 ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \
wolfSSL 9:52ec7c02b1e1 1047 (CPU_CHAR *)(pstr_srch)))
wolfSSL 9:52ec7c02b1e1 1048 #define XMEMSET(pmem, data_val, size) \
wolfSSL 9:52ec7c02b1e1 1049 ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \
wolfSSL 9:52ec7c02b1e1 1050 (CPU_SIZE_T)(size)))
wolfSSL 9:52ec7c02b1e1 1051 #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \
wolfSSL 9:52ec7c02b1e1 1052 (void *)(psrc), (CPU_SIZE_T)(size)))
wolfSSL 9:52ec7c02b1e1 1053 #define XMEMCMP(pmem_1, pmem_2, size) \
wolfSSL 9:52ec7c02b1e1 1054 (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \
wolfSSL 9:52ec7c02b1e1 1055 (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES)
wolfSSL 9:52ec7c02b1e1 1056 #define XMEMMOVE XMEMCPY
wolfSSL 9:52ec7c02b1e1 1057
wolfSSL 9:52ec7c02b1e1 1058 #if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1059 #define MICRIUM_MALLOC
wolfSSL 9:52ec7c02b1e1 1060 #define XMALLOC(s, h, type) ((void *)NetSecure_BlkGet((CPU_INT08U)(type), \
wolfSSL 9:52ec7c02b1e1 1061 (CPU_SIZE_T)(s), (void *)0))
wolfSSL 9:52ec7c02b1e1 1062 #define XFREE(p, h, type) (NetSecure_BlkFree((CPU_INT08U)(type), \
wolfSSL 9:52ec7c02b1e1 1063 (p), (void *)0))
wolfSSL 9:52ec7c02b1e1 1064 #define XREALLOC(p, n, h, t) realloc((p), (n))
wolfSSL 9:52ec7c02b1e1 1065 #endif
wolfSSL 9:52ec7c02b1e1 1066
wolfSSL 9:52ec7c02b1e1 1067 #if (NET_SECURE_MGR_CFG_FS_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1068 #undef NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 1069 #else
wolfSSL 9:52ec7c02b1e1 1070 #define NO_FILESYSTEM
wolfSSL 9:52ec7c02b1e1 1071 #endif
wolfSSL 9:52ec7c02b1e1 1072
wolfSSL 9:52ec7c02b1e1 1073 #if (SSL_CFG_TRACE_LEVEL == WOLFSSL_TRACE_LEVEL_DBG)
wolfSSL 9:52ec7c02b1e1 1074 #define DEBUG_WOLFSSL
wolfSSL 9:52ec7c02b1e1 1075 #else
wolfSSL 9:52ec7c02b1e1 1076 #undef DEBUG_WOLFSSL
wolfSSL 9:52ec7c02b1e1 1077 #endif
wolfSSL 9:52ec7c02b1e1 1078
wolfSSL 9:52ec7c02b1e1 1079 #if (SSL_CFG_OPENSSL_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1080 #define OPENSSL_EXTRA
wolfSSL 9:52ec7c02b1e1 1081 #else
wolfSSL 9:52ec7c02b1e1 1082 #undef OPENSSL_EXTRA
wolfSSL 9:52ec7c02b1e1 1083 #endif
wolfSSL 9:52ec7c02b1e1 1084
wolfSSL 9:52ec7c02b1e1 1085 #if (SSL_CFG_MULTI_THREAD_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1086 #undef SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 1087 #else
wolfSSL 9:52ec7c02b1e1 1088 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 1089 #endif
wolfSSL 9:52ec7c02b1e1 1090
wolfSSL 9:52ec7c02b1e1 1091 #if (SSL_CFG_DH_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1092 #undef NO_DH
wolfSSL 9:52ec7c02b1e1 1093 #else
wolfSSL 9:52ec7c02b1e1 1094 #define NO_DH
wolfSSL 9:52ec7c02b1e1 1095 #endif
wolfSSL 9:52ec7c02b1e1 1096
wolfSSL 9:52ec7c02b1e1 1097 #if (SSL_CFG_DSA_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1098 #undef NO_DSA
wolfSSL 9:52ec7c02b1e1 1099 #else
wolfSSL 9:52ec7c02b1e1 1100 #define NO_DSA
wolfSSL 9:52ec7c02b1e1 1101 #endif
wolfSSL 9:52ec7c02b1e1 1102
wolfSSL 9:52ec7c02b1e1 1103 #if (SSL_CFG_PSK_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1104 #undef NO_PSK
wolfSSL 9:52ec7c02b1e1 1105 #else
wolfSSL 9:52ec7c02b1e1 1106 #define NO_PSK
wolfSSL 9:52ec7c02b1e1 1107 #endif
wolfSSL 9:52ec7c02b1e1 1108
wolfSSL 9:52ec7c02b1e1 1109 #if (SSL_CFG_3DES_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1110 #undef NO_DES
wolfSSL 9:52ec7c02b1e1 1111 #else
wolfSSL 9:52ec7c02b1e1 1112 #define NO_DES
wolfSSL 9:52ec7c02b1e1 1113 #endif
wolfSSL 9:52ec7c02b1e1 1114
wolfSSL 9:52ec7c02b1e1 1115 #if (SSL_CFG_AES_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1116 #undef NO_AES
wolfSSL 9:52ec7c02b1e1 1117 #else
wolfSSL 9:52ec7c02b1e1 1118 #define NO_AES
wolfSSL 9:52ec7c02b1e1 1119 #endif
wolfSSL 9:52ec7c02b1e1 1120
wolfSSL 9:52ec7c02b1e1 1121 #if (SSL_CFG_RC4_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1122 #undef NO_RC4
wolfSSL 9:52ec7c02b1e1 1123 #else
wolfSSL 9:52ec7c02b1e1 1124 #define NO_RC4
wolfSSL 9:52ec7c02b1e1 1125 #endif
wolfSSL 9:52ec7c02b1e1 1126
wolfSSL 9:52ec7c02b1e1 1127 #if (SSL_CFG_RABBIT_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1128 #undef NO_RABBIT
wolfSSL 9:52ec7c02b1e1 1129 #else
wolfSSL 9:52ec7c02b1e1 1130 #define NO_RABBIT
wolfSSL 9:52ec7c02b1e1 1131 #endif
wolfSSL 9:52ec7c02b1e1 1132
wolfSSL 9:52ec7c02b1e1 1133 #if (SSL_CFG_HC128_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1134 #undef NO_HC128
wolfSSL 9:52ec7c02b1e1 1135 #else
wolfSSL 9:52ec7c02b1e1 1136 #define NO_HC128
wolfSSL 9:52ec7c02b1e1 1137 #endif
wolfSSL 9:52ec7c02b1e1 1138
wolfSSL 9:52ec7c02b1e1 1139 #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
wolfSSL 9:52ec7c02b1e1 1140 #define BIG_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 1141 #else
wolfSSL 9:52ec7c02b1e1 1142 #undef BIG_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 1143 #define LITTLE_ENDIAN_ORDER
wolfSSL 9:52ec7c02b1e1 1144 #endif
wolfSSL 9:52ec7c02b1e1 1145
wolfSSL 9:52ec7c02b1e1 1146 #if (SSL_CFG_MD4_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1147 #undef NO_MD4
wolfSSL 9:52ec7c02b1e1 1148 #else
wolfSSL 9:52ec7c02b1e1 1149 #define NO_MD4
wolfSSL 9:52ec7c02b1e1 1150 #endif
wolfSSL 9:52ec7c02b1e1 1151
wolfSSL 9:52ec7c02b1e1 1152 #if (SSL_CFG_WRITEV_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1153 #undef NO_WRITEV
wolfSSL 9:52ec7c02b1e1 1154 #else
wolfSSL 9:52ec7c02b1e1 1155 #define NO_WRITEV
wolfSSL 9:52ec7c02b1e1 1156 #endif
wolfSSL 9:52ec7c02b1e1 1157
wolfSSL 9:52ec7c02b1e1 1158 #if (SSL_CFG_USER_RNG_SEED_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1159 #define NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 1160 #else
wolfSSL 9:52ec7c02b1e1 1161 #undef NO_DEV_RANDOM
wolfSSL 9:52ec7c02b1e1 1162 #endif
wolfSSL 9:52ec7c02b1e1 1163
wolfSSL 9:52ec7c02b1e1 1164 #if (SSL_CFG_USER_IO_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1165 #define WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 1166 #else
wolfSSL 9:52ec7c02b1e1 1167 #undef WOLFSSL_USER_IO
wolfSSL 9:52ec7c02b1e1 1168 #endif
wolfSSL 9:52ec7c02b1e1 1169
wolfSSL 9:52ec7c02b1e1 1170 #if (SSL_CFG_DYNAMIC_BUFFERS_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1171 #undef LARGE_STATIC_BUFFERS
wolfSSL 9:52ec7c02b1e1 1172 #undef STATIC_CHUNKS_ONLY
wolfSSL 9:52ec7c02b1e1 1173 #else
wolfSSL 9:52ec7c02b1e1 1174 #define LARGE_STATIC_BUFFERS
wolfSSL 9:52ec7c02b1e1 1175 #define STATIC_CHUNKS_ONLY
wolfSSL 9:52ec7c02b1e1 1176 #endif
wolfSSL 9:52ec7c02b1e1 1177
wolfSSL 9:52ec7c02b1e1 1178 #if (SSL_CFG_DER_LOAD_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1179 #define WOLFSSL_DER_LOAD
wolfSSL 9:52ec7c02b1e1 1180 #else
wolfSSL 9:52ec7c02b1e1 1181 #undef WOLFSSL_DER_LOAD
wolfSSL 9:52ec7c02b1e1 1182 #endif
wolfSSL 9:52ec7c02b1e1 1183
wolfSSL 9:52ec7c02b1e1 1184 #if (SSL_CFG_DTLS_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1185 #define WOLFSSL_DTLS
wolfSSL 9:52ec7c02b1e1 1186 #else
wolfSSL 9:52ec7c02b1e1 1187 #undef WOLFSSL_DTLS
wolfSSL 9:52ec7c02b1e1 1188 #endif
wolfSSL 9:52ec7c02b1e1 1189
wolfSSL 9:52ec7c02b1e1 1190 #if (SSL_CFG_CALLBACKS_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1191 #define WOLFSSL_CALLBACKS
wolfSSL 9:52ec7c02b1e1 1192 #else
wolfSSL 9:52ec7c02b1e1 1193 #undef WOLFSSL_CALLBACKS
wolfSSL 9:52ec7c02b1e1 1194 #endif
wolfSSL 9:52ec7c02b1e1 1195
wolfSSL 9:52ec7c02b1e1 1196 #if (SSL_CFG_FAST_MATH_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1197 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 1198 #else
wolfSSL 9:52ec7c02b1e1 1199 #undef USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 1200 #endif
wolfSSL 9:52ec7c02b1e1 1201
wolfSSL 9:52ec7c02b1e1 1202 #if (SSL_CFG_TFM_TIMING_RESISTANT_EN == DEF_ENABLED)
wolfSSL 9:52ec7c02b1e1 1203 #define TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 1204 #else
wolfSSL 9:52ec7c02b1e1 1205 #undef TFM_TIMING_RESISTANT
wolfSSL 9:52ec7c02b1e1 1206 #endif
wolfSSL 9:52ec7c02b1e1 1207
wolfSSL 9:52ec7c02b1e1 1208 #endif /* MICRIUM */
wolfSSL 9:52ec7c02b1e1 1209
wolfSSL 9:52ec7c02b1e1 1210
wolfSSL 9:52ec7c02b1e1 1211 #ifdef WOLFSSL_QL
wolfSSL 9:52ec7c02b1e1 1212 #ifndef WOLFSSL_SEP
wolfSSL 9:52ec7c02b1e1 1213 #define WOLFSSL_SEP
wolfSSL 9:52ec7c02b1e1 1214 #endif
wolfSSL 9:52ec7c02b1e1 1215 #ifndef OPENSSL_EXTRA
wolfSSL 9:52ec7c02b1e1 1216 #define OPENSSL_EXTRA
wolfSSL 9:52ec7c02b1e1 1217 #endif
wolfSSL 9:52ec7c02b1e1 1218 #ifndef SESSION_CERTS
wolfSSL 9:52ec7c02b1e1 1219 #define SESSION_CERTS
wolfSSL 9:52ec7c02b1e1 1220 #endif
wolfSSL 9:52ec7c02b1e1 1221 #ifndef HAVE_AESCCM
wolfSSL 9:52ec7c02b1e1 1222 #define HAVE_AESCCM
wolfSSL 9:52ec7c02b1e1 1223 #endif
wolfSSL 9:52ec7c02b1e1 1224 #ifndef ATOMIC_USER
wolfSSL 9:52ec7c02b1e1 1225 #define ATOMIC_USER
wolfSSL 9:52ec7c02b1e1 1226 #endif
wolfSSL 9:52ec7c02b1e1 1227 #ifndef WOLFSSL_DER_LOAD
wolfSSL 9:52ec7c02b1e1 1228 #define WOLFSSL_DER_LOAD
wolfSSL 9:52ec7c02b1e1 1229 #endif
wolfSSL 9:52ec7c02b1e1 1230 #ifndef KEEP_PEER_CERT
wolfSSL 9:52ec7c02b1e1 1231 #define KEEP_PEER_CERT
wolfSSL 9:52ec7c02b1e1 1232 #endif
wolfSSL 9:52ec7c02b1e1 1233 #ifndef HAVE_ECC
wolfSSL 9:52ec7c02b1e1 1234 #define HAVE_ECC
wolfSSL 9:52ec7c02b1e1 1235 #endif
wolfSSL 9:52ec7c02b1e1 1236 #ifndef SESSION_INDEX
wolfSSL 9:52ec7c02b1e1 1237 #define SESSION_INDEX
wolfSSL 9:52ec7c02b1e1 1238 #endif
wolfSSL 9:52ec7c02b1e1 1239 #endif /* WOLFSSL_QL */
wolfSSL 9:52ec7c02b1e1 1240
wolfSSL 9:52ec7c02b1e1 1241
wolfSSL 12:1a06964c2adb 1242 #if defined(WOLFSSL_XILINX)
wolfSSL 12:1a06964c2adb 1243 #define USER_TIME /* XTIME in asn.c */
wolfSSL 12:1a06964c2adb 1244 #define NO_WOLFSSL_DIR
wolfSSL 12:1a06964c2adb 1245 #define NO_DEV_RANDOM
wolfSSL 12:1a06964c2adb 1246 #define HAVE_AESGCM
wolfSSL 12:1a06964c2adb 1247 #endif
wolfSSL 12:1a06964c2adb 1248
wolfSSL 12:1a06964c2adb 1249 #if defined(WOLFSSL_XILINX_CRYPT)
wolfSSL 12:1a06964c2adb 1250 #if defined(WOLFSSL_ARMASM)
wolfSSL 12:1a06964c2adb 1251 #error can not use both ARMv8 instructions and XILINX hardened crypto
wolfSSL 12:1a06964c2adb 1252 #endif
wolfSSL 12:1a06964c2adb 1253 #if defined(WOLFSSL_SHA3)
wolfSSL 12:1a06964c2adb 1254 /* only SHA3-384 is supported */
wolfSSL 12:1a06964c2adb 1255 #undef WOLFSSL_NOSHA3_224
wolfSSL 12:1a06964c2adb 1256 #undef WOLFSSL_NOSHA3_256
wolfSSL 12:1a06964c2adb 1257 #undef WOLFSSL_NOSHA3_512
wolfSSL 12:1a06964c2adb 1258 #define WOLFSSL_NOSHA3_224
wolfSSL 12:1a06964c2adb 1259 #define WOLFSSL_NOSHA3_256
wolfSSL 12:1a06964c2adb 1260 #define WOLFSSL_NOSHA3_512
wolfSSL 12:1a06964c2adb 1261 #endif
wolfSSL 12:1a06964c2adb 1262 #endif /*(WOLFSSL_XILINX_CRYPT)*/
wolfSSL 12:1a06964c2adb 1263
wolfSSL 9:52ec7c02b1e1 1264 #if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \
wolfSSL 10:6c2db0c97d5a 1265 !defined(WOLFSSL_LEANPSK) && !defined(NO_WOLFSSL_MEMORY) && \
wolfSSL 10:6c2db0c97d5a 1266 !defined(XMALLOC_OVERRIDE)
wolfSSL 9:52ec7c02b1e1 1267 #define USE_WOLFSSL_MEMORY
wolfSSL 9:52ec7c02b1e1 1268 #endif
wolfSSL 9:52ec7c02b1e1 1269
wolfSSL 9:52ec7c02b1e1 1270
wolfSSL 9:52ec7c02b1e1 1271 #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS)
wolfSSL 9:52ec7c02b1e1 1272 #undef KEEP_PEER_CERT
wolfSSL 9:52ec7c02b1e1 1273 #define KEEP_PEER_CERT
wolfSSL 9:52ec7c02b1e1 1274 #endif
wolfSSL 9:52ec7c02b1e1 1275
wolfSSL 9:52ec7c02b1e1 1276
wolfSSL 9:52ec7c02b1e1 1277 /* stream ciphers except arc4 need 32bit alignment, intel ok without */
wolfSSL 9:52ec7c02b1e1 1278 #ifndef XSTREAM_ALIGN
wolfSSL 9:52ec7c02b1e1 1279 #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__)
wolfSSL 9:52ec7c02b1e1 1280 #define NO_XSTREAM_ALIGN
wolfSSL 9:52ec7c02b1e1 1281 #else
wolfSSL 9:52ec7c02b1e1 1282 #define XSTREAM_ALIGN
wolfSSL 9:52ec7c02b1e1 1283 #endif
wolfSSL 9:52ec7c02b1e1 1284 #endif
wolfSSL 9:52ec7c02b1e1 1285
wolfSSL 10:6c2db0c97d5a 1286 /* write dup cannot be used with secure renegotiation because write dup
wolfSSL 10:6c2db0c97d5a 1287 * make write side write only and read side read only */
wolfSSL 10:6c2db0c97d5a 1288 #if defined(HAVE_WRITE_DUP) && defined(HAVE_SECURE_RENEGOTIATION)
wolfSSL 10:6c2db0c97d5a 1289 #error "WRITE DUP and SECURE RENEGOTIATION cannot both be on"
wolfSSL 10:6c2db0c97d5a 1290 #endif
wolfSSL 10:6c2db0c97d5a 1291
wolfSSL 9:52ec7c02b1e1 1292 #ifdef WOLFSSL_SGX
wolfSSL 12:1a06964c2adb 1293 #ifdef _MSC_VER
wolfSSL 12:1a06964c2adb 1294 #define WOLFCRYPT_ONLY
wolfSSL 12:1a06964c2adb 1295 #define NO_RC4
wolfSSL 12:1a06964c2adb 1296 #define NO_DES3
wolfSSL 12:1a06964c2adb 1297 #define NO_SHA
wolfSSL 12:1a06964c2adb 1298 #define NO_MD5
wolfSSL 12:1a06964c2adb 1299 #else
wolfSSL 12:1a06964c2adb 1300 #define HAVE_ECC
wolfSSL 12:1a06964c2adb 1301 #define ECC_TIMING_RESISTANT
wolfSSL 12:1a06964c2adb 1302 #define TFM_TIMING_RESISTANT
wolfSSL 12:1a06964c2adb 1303 #define NO_FILESYSTEM
wolfSSL 12:1a06964c2adb 1304 #define NO_WRITEV
wolfSSL 12:1a06964c2adb 1305 #define NO_MAIN_DRIVER
wolfSSL 12:1a06964c2adb 1306 #define USER_TICKS
wolfSSL 12:1a06964c2adb 1307 #define WOLFSSL_LOG_PRINTF
wolfSSL 12:1a06964c2adb 1308 #define WOLFSSL_DH_CONST
wolfSSL 12:1a06964c2adb 1309 #endif /* _MSC_VER */
wolfSSL 12:1a06964c2adb 1310 #ifndef NO_RSA
wolfSSL 12:1a06964c2adb 1311 #define WC_RSA_BLINDING
wolfSSL 12:1a06964c2adb 1312 #endif
wolfSSL 9:52ec7c02b1e1 1313 #define SINGLE_THREADED
wolfSSL 9:52ec7c02b1e1 1314 #define NO_ASN_TIME /* can not use headers such as windows.h */
wolfSSL 9:52ec7c02b1e1 1315 #define HAVE_AESGCM
wolfSSL 9:52ec7c02b1e1 1316 #define USE_CERT_BUFFERS_2048
wolfSSL 9:52ec7c02b1e1 1317 #define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 1318 #endif /* WOLFSSL_SGX */
wolfSSL 9:52ec7c02b1e1 1319
wolfSSL 9:52ec7c02b1e1 1320 /* FreeScale MMCAU hardware crypto has 4 byte alignment.
wolfSSL 12:1a06964c2adb 1321 However, KSDK fsl_mmcau.h gives API with no alignment
wolfSSL 12:1a06964c2adb 1322 requirements (4 byte alignment is managed internally by fsl_mmcau.c) */
wolfSSL 9:52ec7c02b1e1 1323 #ifdef FREESCALE_MMCAU
wolfSSL 12:1a06964c2adb 1324 #ifdef FREESCALE_MMCAU_CLASSIC
wolfSSL 12:1a06964c2adb 1325 #define WOLFSSL_MMCAU_ALIGNMENT 4
wolfSSL 12:1a06964c2adb 1326 #else
wolfSSL 12:1a06964c2adb 1327 #define WOLFSSL_MMCAU_ALIGNMENT 0
wolfSSL 12:1a06964c2adb 1328 #endif
wolfSSL 9:52ec7c02b1e1 1329 #endif
wolfSSL 9:52ec7c02b1e1 1330
wolfSSL 9:52ec7c02b1e1 1331 /* if using hardware crypto and have alignment requirements, specify the
wolfSSL 9:52ec7c02b1e1 1332 requirement here. The record header of SSL/TLS will prevent easy alignment.
wolfSSL 9:52ec7c02b1e1 1333 This hint tries to help as much as possible. */
wolfSSL 9:52ec7c02b1e1 1334 #ifndef WOLFSSL_GENERAL_ALIGNMENT
wolfSSL 9:52ec7c02b1e1 1335 #ifdef WOLFSSL_AESNI
wolfSSL 9:52ec7c02b1e1 1336 #define WOLFSSL_GENERAL_ALIGNMENT 16
wolfSSL 9:52ec7c02b1e1 1337 #elif defined(XSTREAM_ALIGN)
wolfSSL 9:52ec7c02b1e1 1338 #define WOLFSSL_GENERAL_ALIGNMENT 4
wolfSSL 12:1a06964c2adb 1339 #elif defined(FREESCALE_MMCAU) || defined(FREESCALE_MMCAU_CLASSIC)
wolfSSL 9:52ec7c02b1e1 1340 #define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT
wolfSSL 9:52ec7c02b1e1 1341 #else
wolfSSL 9:52ec7c02b1e1 1342 #define WOLFSSL_GENERAL_ALIGNMENT 0
wolfSSL 9:52ec7c02b1e1 1343 #endif
wolfSSL 9:52ec7c02b1e1 1344 #endif
wolfSSL 9:52ec7c02b1e1 1345
wolfSSL 9:52ec7c02b1e1 1346 #if defined(WOLFSSL_GENERAL_ALIGNMENT) && (WOLFSSL_GENERAL_ALIGNMENT > 0)
wolfSSL 9:52ec7c02b1e1 1347 #if defined(_MSC_VER)
wolfSSL 9:52ec7c02b1e1 1348 #define XGEN_ALIGN __declspec(align(WOLFSSL_GENERAL_ALIGNMENT))
wolfSSL 9:52ec7c02b1e1 1349 #elif defined(__GNUC__)
wolfSSL 9:52ec7c02b1e1 1350 #define XGEN_ALIGN __attribute__((aligned(WOLFSSL_GENERAL_ALIGNMENT)))
wolfSSL 9:52ec7c02b1e1 1351 #else
wolfSSL 9:52ec7c02b1e1 1352 #define XGEN_ALIGN
wolfSSL 9:52ec7c02b1e1 1353 #endif
wolfSSL 9:52ec7c02b1e1 1354 #else
wolfSSL 9:52ec7c02b1e1 1355 #define XGEN_ALIGN
wolfSSL 9:52ec7c02b1e1 1356 #endif
wolfSSL 9:52ec7c02b1e1 1357
wolfSSL 9:52ec7c02b1e1 1358 #ifdef HAVE_CRL
wolfSSL 9:52ec7c02b1e1 1359 /* not widely supported yet */
wolfSSL 9:52ec7c02b1e1 1360 #undef NO_SKID
wolfSSL 9:52ec7c02b1e1 1361 #define NO_SKID
wolfSSL 9:52ec7c02b1e1 1362 #endif
wolfSSL 9:52ec7c02b1e1 1363
wolfSSL 9:52ec7c02b1e1 1364
wolfSSL 9:52ec7c02b1e1 1365 #ifdef __INTEL_COMPILER
wolfSSL 9:52ec7c02b1e1 1366 #pragma warning(disable:2259) /* explicit casts to smaller sizes, disable */
wolfSSL 9:52ec7c02b1e1 1367 #endif
wolfSSL 9:52ec7c02b1e1 1368
wolfSSL 9:52ec7c02b1e1 1369 /* user can specify what curves they want with ECC_USER_CURVES otherwise
wolfSSL 9:52ec7c02b1e1 1370 * all curves are on by default for now */
wolfSSL 9:52ec7c02b1e1 1371 #ifndef ECC_USER_CURVES
wolfSSL 9:52ec7c02b1e1 1372 #ifndef HAVE_ALL_CURVES
wolfSSL 9:52ec7c02b1e1 1373 #define HAVE_ALL_CURVES
wolfSSL 9:52ec7c02b1e1 1374 #endif
wolfSSL 9:52ec7c02b1e1 1375 #endif
wolfSSL 9:52ec7c02b1e1 1376
wolfSSL 9:52ec7c02b1e1 1377 /* ECC Configs */
wolfSSL 9:52ec7c02b1e1 1378 #ifdef HAVE_ECC
wolfSSL 9:52ec7c02b1e1 1379 /* By default enable Sign, Verify, DHE, Key Import and Key Export unless explicitly disabled */
wolfSSL 9:52ec7c02b1e1 1380 #ifndef NO_ECC_SIGN
wolfSSL 9:52ec7c02b1e1 1381 #undef HAVE_ECC_SIGN
wolfSSL 9:52ec7c02b1e1 1382 #define HAVE_ECC_SIGN
wolfSSL 9:52ec7c02b1e1 1383 #endif
wolfSSL 9:52ec7c02b1e1 1384 #ifndef NO_ECC_VERIFY
wolfSSL 9:52ec7c02b1e1 1385 #undef HAVE_ECC_VERIFY
wolfSSL 9:52ec7c02b1e1 1386 #define HAVE_ECC_VERIFY
wolfSSL 9:52ec7c02b1e1 1387 #endif
wolfSSL 9:52ec7c02b1e1 1388 #ifndef NO_ECC_DHE
wolfSSL 9:52ec7c02b1e1 1389 #undef HAVE_ECC_DHE
wolfSSL 9:52ec7c02b1e1 1390 #define HAVE_ECC_DHE
wolfSSL 9:52ec7c02b1e1 1391 #endif
wolfSSL 9:52ec7c02b1e1 1392 #ifndef NO_ECC_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1393 #undef HAVE_ECC_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1394 #define HAVE_ECC_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1395 #endif
wolfSSL 9:52ec7c02b1e1 1396 #ifndef NO_ECC_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1397 #undef HAVE_ECC_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1398 #define HAVE_ECC_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1399 #endif
wolfSSL 9:52ec7c02b1e1 1400 #endif /* HAVE_ECC */
wolfSSL 9:52ec7c02b1e1 1401
wolfSSL 9:52ec7c02b1e1 1402 /* Curve255519 Configs */
wolfSSL 9:52ec7c02b1e1 1403 #ifdef HAVE_CURVE25519
wolfSSL 9:52ec7c02b1e1 1404 /* By default enable shared secret, key export and import */
wolfSSL 9:52ec7c02b1e1 1405 #ifndef NO_CURVE25519_SHARED_SECRET
wolfSSL 9:52ec7c02b1e1 1406 #undef HAVE_CURVE25519_SHARED_SECRET
wolfSSL 9:52ec7c02b1e1 1407 #define HAVE_CURVE25519_SHARED_SECRET
wolfSSL 9:52ec7c02b1e1 1408 #endif
wolfSSL 9:52ec7c02b1e1 1409 #ifndef NO_CURVE25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1410 #undef HAVE_CURVE25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1411 #define HAVE_CURVE25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1412 #endif
wolfSSL 9:52ec7c02b1e1 1413 #ifndef NO_CURVE25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1414 #undef HAVE_CURVE25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1415 #define HAVE_CURVE25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1416 #endif
wolfSSL 9:52ec7c02b1e1 1417 #endif /* HAVE_CURVE25519 */
wolfSSL 9:52ec7c02b1e1 1418
wolfSSL 9:52ec7c02b1e1 1419 /* Ed255519 Configs */
wolfSSL 9:52ec7c02b1e1 1420 #ifdef HAVE_ED25519
wolfSSL 9:52ec7c02b1e1 1421 /* By default enable sign, verify, key export and import */
wolfSSL 9:52ec7c02b1e1 1422 #ifndef NO_ED25519_SIGN
wolfSSL 9:52ec7c02b1e1 1423 #undef HAVE_ED25519_SIGN
wolfSSL 9:52ec7c02b1e1 1424 #define HAVE_ED25519_SIGN
wolfSSL 9:52ec7c02b1e1 1425 #endif
wolfSSL 9:52ec7c02b1e1 1426 #ifndef NO_ED25519_VERIFY
wolfSSL 9:52ec7c02b1e1 1427 #undef HAVE_ED25519_VERIFY
wolfSSL 9:52ec7c02b1e1 1428 #define HAVE_ED25519_VERIFY
wolfSSL 9:52ec7c02b1e1 1429 #endif
wolfSSL 9:52ec7c02b1e1 1430 #ifndef NO_ED25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1431 #undef HAVE_ED25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1432 #define HAVE_ED25519_KEY_EXPORT
wolfSSL 9:52ec7c02b1e1 1433 #endif
wolfSSL 9:52ec7c02b1e1 1434 #ifndef NO_ED25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1435 #undef HAVE_ED25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1436 #define HAVE_ED25519_KEY_IMPORT
wolfSSL 9:52ec7c02b1e1 1437 #endif
wolfSSL 9:52ec7c02b1e1 1438 #endif /* HAVE_ED25519 */
wolfSSL 9:52ec7c02b1e1 1439
wolfSSL 9:52ec7c02b1e1 1440 /* AES Config */
wolfSSL 9:52ec7c02b1e1 1441 #ifndef NO_AES
wolfSSL 9:52ec7c02b1e1 1442 /* By default enable all AES key sizes, decryption and CBC */
wolfSSL 9:52ec7c02b1e1 1443 #ifndef AES_MAX_KEY_SIZE
wolfSSL 9:52ec7c02b1e1 1444 #undef AES_MAX_KEY_SIZE
wolfSSL 9:52ec7c02b1e1 1445 #define AES_MAX_KEY_SIZE 256
wolfSSL 9:52ec7c02b1e1 1446 #endif
wolfSSL 9:52ec7c02b1e1 1447 #ifndef NO_AES_DECRYPT
wolfSSL 9:52ec7c02b1e1 1448 #undef HAVE_AES_DECRYPT
wolfSSL 9:52ec7c02b1e1 1449 #define HAVE_AES_DECRYPT
wolfSSL 9:52ec7c02b1e1 1450 #endif
wolfSSL 9:52ec7c02b1e1 1451 #ifndef NO_AES_CBC
wolfSSL 9:52ec7c02b1e1 1452 #undef HAVE_AES_CBC
wolfSSL 9:52ec7c02b1e1 1453 #define HAVE_AES_CBC
wolfSSL 9:52ec7c02b1e1 1454 #else
wolfSSL 9:52ec7c02b1e1 1455 #ifndef WOLFCRYPT_ONLY
wolfSSL 9:52ec7c02b1e1 1456 #error "AES CBC is required for TLS and can only be disabled for WOLFCRYPT_ONLY builds"
wolfSSL 9:52ec7c02b1e1 1457 #endif
wolfSSL 9:52ec7c02b1e1 1458 #endif
wolfSSL 9:52ec7c02b1e1 1459 #endif
wolfSSL 9:52ec7c02b1e1 1460
wolfSSL 9:52ec7c02b1e1 1461 /* if desktop type system and fastmath increase default max bits */
wolfSSL 9:52ec7c02b1e1 1462 #ifdef WOLFSSL_X86_64_BUILD
wolfSSL 9:52ec7c02b1e1 1463 #ifdef USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 1464 #ifndef FP_MAX_BITS
wolfSSL 9:52ec7c02b1e1 1465 #define FP_MAX_BITS 8192
wolfSSL 9:52ec7c02b1e1 1466 #endif
wolfSSL 9:52ec7c02b1e1 1467 #endif
wolfSSL 9:52ec7c02b1e1 1468 #endif
wolfSSL 9:52ec7c02b1e1 1469
wolfSSL 9:52ec7c02b1e1 1470 /* If using the max strength build, ensure OLD TLS is disabled. */
wolfSSL 9:52ec7c02b1e1 1471 #ifdef WOLFSSL_MAX_STRENGTH
wolfSSL 9:52ec7c02b1e1 1472 #undef NO_OLD_TLS
wolfSSL 9:52ec7c02b1e1 1473 #define NO_OLD_TLS
wolfSSL 9:52ec7c02b1e1 1474 #endif
wolfSSL 9:52ec7c02b1e1 1475
wolfSSL 9:52ec7c02b1e1 1476
wolfSSL 9:52ec7c02b1e1 1477 /* Default AES minimum auth tag sz, allow user to override */
wolfSSL 9:52ec7c02b1e1 1478 #ifndef WOLFSSL_MIN_AUTH_TAG_SZ
wolfSSL 9:52ec7c02b1e1 1479 #define WOLFSSL_MIN_AUTH_TAG_SZ 12
wolfSSL 9:52ec7c02b1e1 1480 #endif
wolfSSL 9:52ec7c02b1e1 1481
wolfSSL 9:52ec7c02b1e1 1482
wolfSSL 9:52ec7c02b1e1 1483 /* sniffer requires:
wolfSSL 9:52ec7c02b1e1 1484 * static RSA cipher suites
wolfSSL 9:52ec7c02b1e1 1485 * session stats and peak stats
wolfSSL 9:52ec7c02b1e1 1486 */
wolfSSL 9:52ec7c02b1e1 1487 #ifdef WOLFSSL_SNIFFER
wolfSSL 9:52ec7c02b1e1 1488 #ifndef WOLFSSL_STATIC_RSA
wolfSSL 9:52ec7c02b1e1 1489 #define WOLFSSL_STATIC_RSA
wolfSSL 9:52ec7c02b1e1 1490 #endif
wolfSSL 9:52ec7c02b1e1 1491 #ifndef WOLFSSL_SESSION_STATS
wolfSSL 9:52ec7c02b1e1 1492 #define WOLFSSL_SESSION_STATS
wolfSSL 9:52ec7c02b1e1 1493 #endif
wolfSSL 9:52ec7c02b1e1 1494 #ifndef WOLFSSL_PEAK_SESSIONS
wolfSSL 9:52ec7c02b1e1 1495 #define WOLFSSL_PEAK_SESSIONS
wolfSSL 9:52ec7c02b1e1 1496 #endif
wolfSSL 9:52ec7c02b1e1 1497 #endif
wolfSSL 9:52ec7c02b1e1 1498
wolfSSL 9:52ec7c02b1e1 1499 /* Decode Public Key extras on by default, user can turn off with
wolfSSL 9:52ec7c02b1e1 1500 * WOLFSSL_NO_DECODE_EXTRA */
wolfSSL 9:52ec7c02b1e1 1501 #ifndef WOLFSSL_NO_DECODE_EXTRA
wolfSSL 9:52ec7c02b1e1 1502 #ifndef RSA_DECODE_EXTRA
wolfSSL 9:52ec7c02b1e1 1503 #define RSA_DECODE_EXTRA
wolfSSL 9:52ec7c02b1e1 1504 #endif
wolfSSL 9:52ec7c02b1e1 1505 #ifndef ECC_DECODE_EXTRA
wolfSSL 9:52ec7c02b1e1 1506 #define ECC_DECODE_EXTRA
wolfSSL 9:52ec7c02b1e1 1507 #endif
wolfSSL 9:52ec7c02b1e1 1508 #endif
wolfSSL 9:52ec7c02b1e1 1509
wolfSSL 9:52ec7c02b1e1 1510 /* C Sharp wrapper defines */
wolfSSL 9:52ec7c02b1e1 1511 #ifdef HAVE_CSHARP
wolfSSL 9:52ec7c02b1e1 1512 #ifndef WOLFSSL_DTLS
wolfSSL 9:52ec7c02b1e1 1513 #define WOLFSSL_DTLS
wolfSSL 9:52ec7c02b1e1 1514 #endif
wolfSSL 9:52ec7c02b1e1 1515 #undef NO_PSK
wolfSSL 9:52ec7c02b1e1 1516 #undef NO_SHA256
wolfSSL 9:52ec7c02b1e1 1517 #undef NO_DH
wolfSSL 9:52ec7c02b1e1 1518 #endif
wolfSSL 9:52ec7c02b1e1 1519
wolfSSL 9:52ec7c02b1e1 1520 /* Asynchronous Crypto */
wolfSSL 9:52ec7c02b1e1 1521 #ifdef WOLFSSL_ASYNC_CRYPT
wolfSSL 9:52ec7c02b1e1 1522 /* Make sure wolf events are enabled */
wolfSSL 9:52ec7c02b1e1 1523 #undef HAVE_WOLF_EVENT
wolfSSL 9:52ec7c02b1e1 1524 #define HAVE_WOLF_EVENT
wolfSSL 9:52ec7c02b1e1 1525
wolfSSL 10:6c2db0c97d5a 1526 #ifdef WOLFSSL_ASYNC_CRYPT_TEST
wolfSSL 10:6c2db0c97d5a 1527 #define WC_ASYNC_DEV_SIZE 320+24
wolfSSL 10:6c2db0c97d5a 1528 #else
wolfSSL 10:6c2db0c97d5a 1529 #define WC_ASYNC_DEV_SIZE 320
wolfSSL 10:6c2db0c97d5a 1530 #endif
wolfSSL 10:6c2db0c97d5a 1531
wolfSSL 9:52ec7c02b1e1 1532 #if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \
wolfSSL 9:52ec7c02b1e1 1533 !defined(WOLFSSL_ASYNC_CRYPT_TEST)
wolfSSL 9:52ec7c02b1e1 1534 #error No async hardware defined with WOLFSSL_ASYNC_CRYPT!
wolfSSL 9:52ec7c02b1e1 1535 #endif
wolfSSL 10:6c2db0c97d5a 1536
wolfSSL 10:6c2db0c97d5a 1537 /* Enable ECC_CACHE_CURVE for ASYNC */
wolfSSL 10:6c2db0c97d5a 1538 #if !defined(ECC_CACHE_CURVE)
wolfSSL 10:6c2db0c97d5a 1539 #define ECC_CACHE_CURVE
wolfSSL 10:6c2db0c97d5a 1540 #endif
wolfSSL 9:52ec7c02b1e1 1541 #endif /* WOLFSSL_ASYNC_CRYPT */
wolfSSL 10:6c2db0c97d5a 1542 #ifndef WC_ASYNC_DEV_SIZE
wolfSSL 10:6c2db0c97d5a 1543 #define WC_ASYNC_DEV_SIZE 0
wolfSSL 10:6c2db0c97d5a 1544 #endif
wolfSSL 9:52ec7c02b1e1 1545
wolfSSL 9:52ec7c02b1e1 1546 /* leantls checks */
wolfSSL 9:52ec7c02b1e1 1547 #ifdef WOLFSSL_LEANTLS
wolfSSL 9:52ec7c02b1e1 1548 #ifndef HAVE_ECC
wolfSSL 9:52ec7c02b1e1 1549 #error leantls build needs ECC
wolfSSL 9:52ec7c02b1e1 1550 #endif
wolfSSL 9:52ec7c02b1e1 1551 #endif /* WOLFSSL_LEANTLS*/
wolfSSL 9:52ec7c02b1e1 1552
wolfSSL 9:52ec7c02b1e1 1553 /* restriction with static memory */
wolfSSL 9:52ec7c02b1e1 1554 #ifdef WOLFSSL_STATIC_MEMORY
wolfSSL 9:52ec7c02b1e1 1555 #if defined(HAVE_IO_POOL) || defined(XMALLOC_USER) || defined(NO_WOLFSSL_MEMORY)
wolfSSL 9:52ec7c02b1e1 1556 #error static memory cannot be used with HAVE_IO_POOL, XMALLOC_USER or NO_WOLFSSL_MEMORY
wolfSSL 9:52ec7c02b1e1 1557 #endif
wolfSSL 9:52ec7c02b1e1 1558 #if !defined(USE_FAST_MATH) && !defined(NO_BIG_INT)
wolfSSL 9:52ec7c02b1e1 1559 #error static memory requires fast math please define USE_FAST_MATH
wolfSSL 9:52ec7c02b1e1 1560 #endif
wolfSSL 9:52ec7c02b1e1 1561 #ifdef WOLFSSL_SMALL_STACK
wolfSSL 9:52ec7c02b1e1 1562 #error static memory does not support small stack please undefine
wolfSSL 9:52ec7c02b1e1 1563 #endif
wolfSSL 9:52ec7c02b1e1 1564 #endif /* WOLFSSL_STATIC_MEMORY */
wolfSSL 9:52ec7c02b1e1 1565
wolfSSL 9:52ec7c02b1e1 1566 #ifdef HAVE_AES_KEYWRAP
wolfSSL 9:52ec7c02b1e1 1567 #ifndef WOLFSSL_AES_DIRECT
wolfSSL 9:52ec7c02b1e1 1568 #error AES key wrap requires AES direct please define WOLFSSL_AES_DIRECT
wolfSSL 9:52ec7c02b1e1 1569 #endif
wolfSSL 9:52ec7c02b1e1 1570 #endif
wolfSSL 9:52ec7c02b1e1 1571
wolfSSL 9:52ec7c02b1e1 1572 #ifdef HAVE_PKCS7
wolfSSL 9:52ec7c02b1e1 1573 #ifndef HAVE_AES_KEYWRAP
wolfSSL 9:52ec7c02b1e1 1574 #error PKCS7 requires AES key wrap please define HAVE_AES_KEYWRAP
wolfSSL 9:52ec7c02b1e1 1575 #endif
wolfSSL 9:52ec7c02b1e1 1576 #ifndef HAVE_X963_KDF
wolfSSL 9:52ec7c02b1e1 1577 #error PKCS7 requires X963 KDF please define HAVE_X963_KDF
wolfSSL 9:52ec7c02b1e1 1578 #endif
wolfSSL 9:52ec7c02b1e1 1579 #endif
wolfSSL 9:52ec7c02b1e1 1580
wolfSSL 10:6c2db0c97d5a 1581 #if !defined(WOLFCRYPT_ONLY) && !defined(NO_OLD_TLS) && \
wolfSSL 10:6c2db0c97d5a 1582 (defined(NO_SHA) || defined(NO_MD5))
wolfSSL 10:6c2db0c97d5a 1583 #error old TLS requires MD5 and SHA
wolfSSL 10:6c2db0c97d5a 1584 #endif
wolfSSL 10:6c2db0c97d5a 1585
wolfSSL 10:6c2db0c97d5a 1586 /* for backwards compatibility */
wolfSSL 10:6c2db0c97d5a 1587 #if defined(TEST_IPV6) && !defined(WOLFSSL_IPV6)
wolfSSL 10:6c2db0c97d5a 1588 #define WOLFSSL_IPV6
wolfSSL 10:6c2db0c97d5a 1589 #endif
wolfSSL 10:6c2db0c97d5a 1590
wolfSSL 9:52ec7c02b1e1 1591
wolfSSL 9:52ec7c02b1e1 1592 /* Place any other flags or defines here */
wolfSSL 9:52ec7c02b1e1 1593
wolfSSL 9:52ec7c02b1e1 1594 #if defined(WOLFSSL_MYSQL_COMPATIBLE) && defined(_WIN32) \
wolfSSL 9:52ec7c02b1e1 1595 && defined(HAVE_GMTIME_R)
wolfSSL 9:52ec7c02b1e1 1596 #undef HAVE_GMTIME_R /* don't trust macro with windows */
wolfSSL 9:52ec7c02b1e1 1597 #endif /* WOLFSSL_MYSQL_COMPATIBLE */
wolfSSL 9:52ec7c02b1e1 1598
wolfSSL 10:6c2db0c97d5a 1599 #if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
wolfSSL 10:6c2db0c97d5a 1600 #define SSL_OP_NO_COMPRESSION SSL_OP_NO_COMPRESSION
wolfSSL 10:6c2db0c97d5a 1601 #define OPENSSL_NO_ENGINE
wolfSSL 10:6c2db0c97d5a 1602 #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
wolfSSL 10:6c2db0c97d5a 1603 #ifndef OPENSSL_EXTRA
wolfSSL 10:6c2db0c97d5a 1604 #define OPENSSL_EXTRA
wolfSSL 10:6c2db0c97d5a 1605 #endif
wolfSSL 10:6c2db0c97d5a 1606 #ifndef HAVE_SESSION_TICKET
wolfSSL 10:6c2db0c97d5a 1607 #define HAVE_SESSION_TICKET
wolfSSL 10:6c2db0c97d5a 1608 #endif
wolfSSL 10:6c2db0c97d5a 1609 #ifndef HAVE_OCSP
wolfSSL 10:6c2db0c97d5a 1610 #define HAVE_OCSP
wolfSSL 10:6c2db0c97d5a 1611 #endif
wolfSSL 10:6c2db0c97d5a 1612 #ifndef KEEP_OUR_CERT
wolfSSL 10:6c2db0c97d5a 1613 #define KEEP_OUR_CERT
wolfSSL 10:6c2db0c97d5a 1614 #endif
wolfSSL 10:6c2db0c97d5a 1615 #ifndef HAVE_SNI
wolfSSL 10:6c2db0c97d5a 1616 #define HAVE_SNI
wolfSSL 10:6c2db0c97d5a 1617 #endif
wolfSSL 10:6c2db0c97d5a 1618 #endif
wolfSSL 10:6c2db0c97d5a 1619
wolfSSL 10:6c2db0c97d5a 1620 #if defined(WOLFSSL_NGINX)
wolfSSL 10:6c2db0c97d5a 1621 #define SSL_CTRL_SET_TLSEXT_HOSTNAME
wolfSSL 10:6c2db0c97d5a 1622 #endif
wolfSSL 9:52ec7c02b1e1 1623
wolfSSL 12:1a06964c2adb 1624 /* both CURVE and ED small math should be enabled */
wolfSSL 12:1a06964c2adb 1625 #ifdef CURVED25519_SMALL
wolfSSL 12:1a06964c2adb 1626 #define CURVE25519_SMALL
wolfSSL 12:1a06964c2adb 1627 #define ED25519_SMALL
wolfSSL 12:1a06964c2adb 1628 #endif
wolfSSL 12:1a06964c2adb 1629
wolfSSL 12:1a06964c2adb 1630
wolfSSL 12:1a06964c2adb 1631 #ifndef WOLFSSL_ALERT_COUNT_MAX
wolfSSL 12:1a06964c2adb 1632 #define WOLFSSL_ALERT_COUNT_MAX 5
wolfSSL 12:1a06964c2adb 1633 #endif
wolfSSL 12:1a06964c2adb 1634
wolfSSL 12:1a06964c2adb 1635 /* warning for not using harden build options (default with ./configure) */
wolfSSL 12:1a06964c2adb 1636 #ifndef WC_NO_HARDEN
wolfSSL 12:1a06964c2adb 1637 #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \
wolfSSL 12:1a06964c2adb 1638 (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \
wolfSSL 12:1a06964c2adb 1639 (!defined(NO_RSA) && !defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS))
wolfSSL 12:1a06964c2adb 1640
wolfSSL 12:1a06964c2adb 1641 #ifndef _MSC_VER
wolfSSL 12:1a06964c2adb 1642 #warning "For timing resistance / side-channel attack prevention consider using harden options"
wolfSSL 12:1a06964c2adb 1643 #else
wolfSSL 12:1a06964c2adb 1644 #pragma message("Warning: For timing resistance / side-channel attack prevention consider using harden options")
wolfSSL 12:1a06964c2adb 1645 #endif
wolfSSL 12:1a06964c2adb 1646 #endif
wolfSSL 12:1a06964c2adb 1647 #endif
wolfSSL 12:1a06964c2adb 1648
wolfSSL 9:52ec7c02b1e1 1649 #ifdef __cplusplus
wolfSSL 9:52ec7c02b1e1 1650 } /* extern "C" */
wolfSSL 9:52ec7c02b1e1 1651 #endif
wolfSSL 9:52ec7c02b1e1 1652
wolfSSL 9:52ec7c02b1e1 1653 #endif
wolfSSL 9:52ec7c02b1e1 1654