Loading...
Searching...
No Matches
27#ifndef WOLF_CRYPT_SETTINGS_H
28#define WOLF_CRYPT_SETTINGS_H
37#ifdef EXTERNAL_OPTS_OPENVPN
38#include <wolfssl/options.h>
212#include <wolfssl/wolfcrypt/visibility.h>
214#ifdef WOLFSSL_USER_SETTINGS
215 #include "user_settings.h"
221 #if !defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)
224 #ifndef WOLFSSL_STM32L4
229 #undef WC_RSA_BLINDING
233#if defined(_WIN32) && !defined(_M_X64) && \
234 defined(HAVE_AESGCM) && defined(WOLFSSL_AESNI)
241 #define AES_GCM_AESNI_NO_UNROLL
245 #define SIZEOF_LONG_LONG 8
249 #define SIZEOF_LONG_LONG 8
253 #ifdef NEED_THREADX_TYPES
259#if defined(WOLFSSL_ESPIDF)
263 #define SIZEOF_LONG_LONG 8
264 #define NO_WOLFSSL_DIR
265 #define WOLFSSL_NO_CURRDIR
267 #define TFM_TIMING_RESISTANT
268 #define ECC_TIMING_RESISTANT
269 #define WC_RSA_BLINDING
271#if defined(WOLFSSL_ESPWROOM32) || defined(WOLFSSL_ESPWROOM32SE)
272 #ifndef NO_ESP32WROOM32_CRYPT
273 #define WOLFSSL_ESP32WROOM32_CRYPT
274 #if defined(ESP32_USE_RSA_PRIMITIVE) && \
275 !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI)
276 #define WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI
277 #define USE_FAST_MATH
278 #define WOLFSSL_SMALL_STACK
284#if defined(WOLFSSL_RENESAS_TSIP)
285 #define TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE 64
286 #define TSIP_TLS_MASTERSECRET_SIZE 80
287 #define TSIP_TLS_ENCPUBKEY_SZ_BY_CERTVRFY 560
288 #if !defined(NO_RENESAS_TSIP_CRYPT) && defined(WOLFSSL_RENESAS_RX65N)
289 #define WOLFSSL_RENESAS_TSIP_CRYPT
290 #define WOLFSSL_RENESAS_TSIP_TLS
291 #define WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT
295#if defined(WOLFSSL_RENESAS_RA6M3G)
299#if defined(HAVE_LWIP_NATIVE)
302 #define SINGLE_THREADED
303 #define WOLFSSL_USER_IO
304 #define NO_FILESYSTEM
307#if defined(WOLFSSL_CONTIKI)
310 #define NO_WOLFSSL_MEMORY
312 #define SINGLE_THREADED
313 #define WOLFSSL_USER_IO
314 #define NO_FILESYSTEM
315 #define CUSTOM_RAND_TYPE uint16_t
316 #define CUSTOM_RAND_GENERATE random_rand
317 static inline word32 LowResTimer(
void)
319 return clock_seconds();
323#if defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_ROWLEY_ARM)
324 #define NO_MAIN_DRIVER
325 #define SINGLE_THREADED
326 #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096)
327 #define USE_CERT_BUFFERS_1024
329 #define BENCH_EMBEDDED
330 #define NO_FILESYSTEM
332 #define WOLFSSL_USER_IO
333 #define BENCH_EMBEDDED
336#ifdef MICROCHIP_PIC32
338 #define SIZEOF_LONG_LONG 8
339 #define SINGLE_THREADED
340 #define WOLFSSL_USER_IO
342 #define NO_DEV_RANDOM
343 #define NO_FILESYSTEM
344 #define USE_FAST_MATH
345 #define TFM_TIMING_RESISTANT
346 #define WOLFSSL_HAVE_MIN
347 #define WOLFSSL_HAVE_MAX
351#ifdef WOLFSSL_MICROCHIP_PIC32MZ
352 #ifndef NO_PIC32MZ_CRYPT
353 #define WOLFSSL_PIC32MZ_CRYPT
355 #ifndef NO_PIC32MZ_RNG
356 #define WOLFSSL_PIC32MZ_RNG
358 #ifndef NO_PIC32MZ_HASH
359 #define WOLFSSL_PIC32MZ_HASH
363#ifdef MICROCHIP_TCPIP_V5
365 #include "TCPIP Stack/TCPIP.h"
368#ifdef MICROCHIP_TCPIP
370 #ifdef MICROCHIP_MPLAB_HARMONY
371 #include "tcpip/tcpip.h"
373 #include "system/system_services.h"
374 #include "tcpip/sntp.h"
379 #define WOLFSSL_USER_IO
380 #define NO_FILESYSTEM
382 #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096)
383 #define USE_CERT_BUFFERS_1024
386 #define NO_DEV_RANDOM
394 #define NO_SESSION_CACHE
395 #define WOLFSSL_CMSIS_RTOS
400 #define FREESCALE_MQX
401 #define FREESCALE_MMCAU
402 #define SINGLE_THREADED
403 #define NO_STDIO_FILESYSTEM
404 #define WOLFSSL_LEANPSK
405 #define HAVE_NULL_CIPHER
420 #define NO_SESSION_CACHE
421 #define NO_MAIN_DRIVER
424#ifdef WOLFSSL_PICOTCP
426 #define errno pico_err
428 #include "pico_defines.h"
429 #include "pico_stack.h"
430 #include "pico_constants.h"
431 #include "pico_protocol.h"
432 #define CUSTOM_RAND_GENERATE pico_rand
435#ifdef WOLFSSL_PICOTCP_DEMO
436 #define WOLFSSL_STM32
437 #define USE_FAST_MATH
438 #define TFM_TIMING_RESISTANT
439 #define XMALLOC(s, h, type) PICO_ZALLOC((s))
440 #define XFREE(p, h, type) PICO_FREE((p))
441 #define SINGLE_THREADED
443 #define WOLFSSL_USER_IO
444 #define NO_DEV_RANDOM
445 #define NO_FILESYSTEM
448#ifdef FREERTOS_WINSIM
450 #define USE_WINDOWS_API
454#ifdef WOLFSSL_VXWORKS
461 #define WOLFSSL_HAVE_MIN
462 #define WOLFSSL_HAVE_MAX
463 #define USE_FAST_MATH
464 #define TFM_TIMING_RESISTANT
465 #define NO_MAIN_DRIVER
466 #define NO_DEV_RANDOM
468 #define HAVE_STRINGS_H
472#ifdef WOLFSSL_ARDUINO
474 #define NO_WOLFSSL_DIR
475 #define SINGLE_THREADED
476 #define NO_DEV_RANDOM
477 #ifndef INTEL_GALILEO
478 #define TIME_OVERRIDES
480 #error "Must define XTIME externally see porting guide"
481 #error "https://www.wolfssl.com/docs/porting-guide/"
484 #error "Must define XGMTIME externally see porting guide"
485 #error "https://www.wolfssl.com/docs/porting-guide/"
488 #define WOLFSSL_USER_IO
491 #define NO_SESSION_CACHE
495#ifdef WOLFSSL_UTASKER
499 #define SINGLE_THREADED
500 #define NO_WOLFSSL_DIR
501 #define WOLFSSL_HAVE_MIN
506 #define USE_FAST_MATH
507 #define TFM_TIMING_RESISTANT
508 #define ECC_TIMING_RESISTANT
511 #define NO_MAIN_DRIVER
512 #define USE_CERT_BUFFERS_2048
516 #define WOLFSSL_USER_IO
519 #define NO_FILESYSTEM
522 #define CUSTOM_RAND_GENERATE fnRandom
523 #define CUSTOM_RAND_TYPE unsigned short
528 #error XTIME must be defined in wolfSSL settings.h
534 #define XMEMCPY(d,s,l) uMemcpy((d),(s),(l))
535 #define XMEMSET(b,c,l) uMemset((b),(c),(l))
536 #define XMEMCMP(s1,s2,n) uMemcmp((s1),(s2),(n))
537 #define XMEMMOVE(d,s,l) memmove((d),(s),(l))
539 #define XSTRLEN(s1) uStrlen((s1))
540 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n))
541 #define XSTRSTR(s1,s2) strstr((s1),(s2))
542 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
543 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
544 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
545 #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
546 #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) \
547 || defined(HAVE_ALPN)
548 #define XSTRTOK strtok_r
553 #define NO_FILESYSTEM
554 #define USE_CERT_BUFFERS_2048
555 #define NO_MAIN_DRIVER
557 #define SINGLE_THREADED
560#ifdef WOLFSSL_RIOT_OS
563 #define NO_FILESYSTEM
564 #define USE_CERT_BUFFERS_2048
565 #if defined(WOLFSSL_GNRC) && !defined(WOLFSSL_DTLS)
570#ifdef WOLFSSL_CHIBIOS
572 #include "wolfssl_chibios.h"
577 #undef WOLFSSL_NUCLEUS
578 #define WOLFSSL_NUCLEUS_1_2
581#ifdef WOLFSSL_NUCLEUS_1_2
583 #define NO_WOLFSSL_DIR
585 #if !defined(NO_ASN_TIME) && !defined(USER_TIME)
586 #error User must define XTIME, see manual
589 #if !defined(XMALLOC_OVERRIDE) && !defined(XMALLOC_USER)
590 extern void* nucleus_malloc(
unsigned long size,
void* heap,
int type);
591 extern void* nucleus_realloc(
void* ptr,
unsigned long size,
void* heap,
593 extern void nucleus_free(
void* ptr,
void* heap,
int type);
595 #define XMALLOC(s, h, type) nucleus_malloc((s), (h), (type))
596 #define XREALLOC(p, n, h, t) nucleus_realloc((p), (n), (h), (t))
597 #define XFREE(p, h, type) nucleus_free((p), (h), (type))
602 #define SIZEOF_LONG 4
603 #define SIZEOF_LONG_LONG 8
605 #define NO_DEV_RANDOM
606 #define NO_FILESYSTEM
607 #define NO_MAIN_DRIVER
609 #define SINGLE_THREADED
610 #define USE_FAST_MATH
611 #define TFM_TIMING_RESISTANT
612 #define USE_WOLFSSL_MEMORY
613 #define WOLFSSL_NRF51
614 #define WOLFSSL_USER_IO
615 #define NO_SESSION_CACHE
619#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \
620 !defined(FREERTOS_TCP) && !defined(EBSNET) && !defined(WOLFSSL_EROAD) && \
621 !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS)
622 #define USE_WINDOWS_API
625#if defined(WOLFSSL_uITRON4)
629#define ITRON_POOL_SIZE 1024*20
630extern int uITRON4_minit(
size_t poolsz) ;
631extern void *uITRON4_malloc(
size_t sz) ;
632extern void *uITRON4_realloc(
void *p,
size_t sz) ;
633extern void uITRON4_free(
void *p) ;
635#define XMALLOC(sz, heap, type) uITRON4_malloc(sz)
636#define XREALLOC(p, sz, heap, type) uITRON4_realloc(p, sz)
637#define XFREE(p, heap, type) uITRON4_free(p)
640#if defined(WOLFSSL_uTKERNEL2)
641 #ifndef NO_TKERNEL_MEM_POOL
642 #define XMALLOC_OVERRIDE
643 int uTKernel_init_mpool(
unsigned int sz);
644 void* uTKernel_malloc(
unsigned int sz);
645 void* uTKernel_realloc(
void *p,
unsigned int sz);
646 void uTKernel_free(
void *p);
647 #define XMALLOC(s, h, type) uTKernel_malloc((s))
648 #define XREALLOC(p, n, h, t) uTKernel_realloc((p), (n))
649 #define XFREE(p, h, type) uTKernel_free((p))
652 #ifndef NO_STDIO_FGETS_REMAP
654 #include "tm/tmonitor.h"
657 static char* fgets(
char *buff,
int sz, XFILE fp) {
676#if defined(WOLFSSL_LEANPSK) && !defined(XMALLOC_USER) && \
677 !defined(NO_WOLFSSL_MEMORY)
679 #define XMALLOC(s, h, type) malloc((s))
680 #define XFREE(p, h, type) free((p))
681 #define XREALLOC(p, n, h, t) realloc((p), (n))
684#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL)
686 #define XMALLOC yaXMALLOC
688 #define XFREE yaXFREE
690 #define XREALLOC yaXREALLOC
695 #include "FreeRTOS.h"
697 #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \
698 !defined(WOLFSSL_STATIC_MEMORY)
699 #define XMALLOC(s, h, type) pvPortMalloc((s))
700 #define XFREE(p, h, type) vPortFree((p))
704 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448)
705 #if defined(WOLFSSL_ESPIDF)
708 #define XREALLOC(p, n, h, t) realloc((p), (n))
710 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n))
733 #ifndef SINGLE_THREADED
739 #if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER) && \
740 !defined(WOLFSSL_STATIC_MEMORY)
741 #define XMALLOC(s, h, type) pvPortMalloc((s))
742 #define XFREE(p, h, type) vPortFree((p))
745 #define WOLFSSL_GENSEED_FORTEST
747 #define NO_WOLFSSL_DIR
749 #define USE_FAST_MATH
750 #define TFM_TIMING_RESISTANT
751 #define NO_MAIN_DRIVER
755 #define SIZEOF_LONG_LONG 8
757 #define NO_WOLFSSL_DIR
758 #define USE_FAST_MATH
759 #define TFM_TIMING_RESISTANT
760 #define ECC_TIMING_RESISTANT
761 #define WC_RSA_BLINDING
762 #define NO_DEV_RANDOM
763 #define NO_FILESYSTEM
764 #define USE_CERT_BUFFERS_2048
765 #define NO_ERROR_STRINGS
770 #define USE_WOLF_STRTOK
771 #define HAVE_TLS_EXTENSIONS
773 #ifdef WOLFSSL_TI_CRYPT
774 #define NO_GCM_ENCRYPT_EXTRA
775 #define NO_PUBLIC_GCM_SET_IV
776 #define NO_PUBLIC_CCM_SET_NONCE
778 #define HAVE_SUPPORTED_CURVES
781 #ifdef __IAR_SYSTEMS_ICC__
782 #pragma diag_suppress=Pa089
783 #elif !defined(__GNUC__)
785 #pragma diag_suppress=11
788 #include <ti/sysbios/hal/Seconds.h>
795 #define NO_WOLFSSL_DIR
798 #define SINGLE_THREADED
802 #if (!RTP_LITTLE_ENDIAN)
803 #define BIG_ENDIAN_ORDER
806 #if (!KS_LITTLE_ENDIAN)
807 #define BIG_ENDIAN_ORDER
813 #define SIZEOF_LONG_LONG 8
815 #error settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG
818 #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC))
819 #define XFREE(p, h, type) (rtp_free(p))
820 #define XREALLOC(p, n, h, t) (rtp_realloc((p), (n)))
823 #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
825 #sslpro: settings.h - please implement XSTRNCASECMP - needed for HAVE_ECC
828 #define WOLFSSL_HAVE_MAX
829 #define WOLFSSL_HAVE_MIN
831 #define USE_FAST_MATH
832 #define TFM_TIMING_RESISTANT
833 #define WC_RSA_BLINDING
834 #define ECC_TIMING_RESISTANT
840#ifdef WOLFSSL_GAME_BUILD
841 #define SIZEOF_LONG_LONG 8
842 #if defined(__PPU) || defined(__XENON)
843 #define BIG_ENDIAN_ORDER
848 #define HAVE_WEBSERVER
849 #define SIZEOF_LONG_LONG 8
850 #define WOLFSSL_LOW_MEMORY
858 #define NO_DEV_RANDOM
859 #define NO_WOLFSSL_DIR
861 #ifndef NO_FILESYSTEM
863 #include "inc/hw_types.h"
868 #define WOLFSSL_SAFERTOS
869 #if defined(__IAR_SYSTEMS_ICC__)
871 #pragma diag_suppress=Pa089
875#ifdef WOLFSSL_SAFERTOS
876 #ifndef SINGLE_THREADED
877 #include "SafeRTOS/semphr.h"
879 #ifndef WOLFSSL_NO_MALLOC
880 #include "SafeRTOS/heap.h"
882 #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \
883 !defined(WOLFSSL_STATIC_MEMORY)
884 #define XMALLOC(s, h, type) pvPortMalloc((s))
885 #define XFREE(p, h, type) vPortFree((p))
889 #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448)
890 #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n))
894#ifdef WOLFSSL_LOW_MEMORY
897 #undef WOLFSSL_SMALL_STACK
898 #define WOLFSSL_SMALL_STACK
899 #undef TFM_TIMING_RESISTANT
900 #define TFM_TIMING_RESISTANT
903#ifdef FREESCALE_MQX_5_0
905 #define FREESCALE_MQX
908#ifdef FREESCALE_MQX_4_0
910 #define FREESCALE_MQX
914 #define FREESCALE_COMMON
916 #ifndef NO_FILESYSTEM
918 #if (defined(MQX_USE_IO_OLD) && MQX_USE_IO_OLD) || \
919 defined(FREESCALE_MQX_5_0)
921 #define NO_STDIO_FILESYSTEM
926 #ifndef SINGLE_THREADED
930 #if !defined(XMALLOC_OVERRIDE) && !defined(XMALLOC_USER)
931 #define XMALLOC_OVERRIDE
932 #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
933 #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
938#ifdef FREESCALE_KSDK_MQX
939 #define FREESCALE_COMMON
941 #ifndef NO_FILESYSTEM
942 #if (defined(MQX_USE_IO_OLD) && MQX_USE_IO_OLD) || \
943 defined(FREESCALE_MQX_5_0)
950 #ifndef SINGLE_THREADED
954 #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
955 #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
956 #define XREALLOC(p, n, h, t) _mem_realloc((p), (n))
958 #define MQX_FILE_PTR FILE *
959 #define IO_SEEK_SET SEEK_SET
960 #define IO_SEEK_END SEEK_END
963#if defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS)
964 #define NO_FILESYSTEM
965 #define WOLFSSL_CRYPT_HW_MUTEX 1
967 #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY)
968 #define XMALLOC(s, h, type) pvPortMalloc((s))
969 #define XFREE(p, h, type) vPortFree((p))
978 #define FREESCALE_FREE_RTOS
979 #define FREERTOS_SOCKET_ERROR ( -1 )
980 #define FREERTOS_EWOULDBLOCK ( -2 )
981 #define FREERTOS_EINVAL ( -4 )
982 #define FREERTOS_EADDRNOTAVAIL ( -5 )
983 #define FREERTOS_EADDRINUSE ( -6 )
984 #define FREERTOS_ENOBUFS ( -7 )
985 #define FREERTOS_ENOPROTOOPT ( -8 )
988#ifdef FREESCALE_KSDK_BM
989 #define FREESCALE_COMMON
990 #define WOLFSSL_USER_IO
991 #define SINGLE_THREADED
992 #define NO_FILESYSTEM
993 #ifndef TIME_OVERRIDES
998#ifdef FREESCALE_COMMON
999 #define SIZEOF_LONG_LONG 8
1004 #undef NO_DEV_RANDOM
1005 #define NO_DEV_RANDOM
1008 #undef NO_WOLFSSL_DIR
1009 #define NO_WOLFSSL_DIR
1014 #undef USE_FAST_MATH
1015 #define USE_FAST_MATH
1017 #define USE_CERT_BUFFERS_2048
1018 #define BENCH_EMBEDDED
1020 #define TFM_TIMING_RESISTANT
1021 #define ECC_TIMING_RESISTANT
1030 #undef WOLFSSL_AES_COUNTER
1031 #define WOLFSSL_AES_COUNTER
1032 #undef WOLFSSL_AES_DIRECT
1033 #define WOLFSSL_AES_DIRECT
1036 #ifdef FREESCALE_KSDK_1_3
1037 #include "fsl_device_registers.h"
1038 #elif !defined(FREESCALE_MQX)
1040 #include "fsl_common.h"
1044 #define NO_OLD_RNGNAME
1045 #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0)
1046 #define FREESCALE_KSDK_2_0_TRNG
1047 #elif defined(FSL_FEATURE_SOC_RNG_COUNT) && (FSL_FEATURE_SOC_RNG_COUNT > 0)
1048 #ifdef FREESCALE_KSDK_1_3
1049 #include "fsl_rnga_driver.h"
1050 #define FREESCALE_RNGA
1051 #define RNGA_INSTANCE (0)
1053 #define FREESCALE_KSDK_2_0_RNGA
1055 #elif !defined(FREESCALE_KSDK_BM) && !defined(FREESCALE_FREE_RTOS) && !defined(FREESCALE_KSDK_FREERTOS)
1056 #define FREESCALE_RNGA
1057 #define RNGA_INSTANCE (0)
1060 #define FREESCALE_K70_RNGA
1070 #ifndef FSL_HW_CRYPTO_MANUAL_SELECTION
1071 #if defined(FSL_FEATURE_SOC_MMCAU_COUNT) && FSL_FEATURE_SOC_MMCAU_COUNT
1072 #define FREESCALE_USE_MMCAU
1075 #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT
1076 #define FREESCALE_USE_LTC
1085#ifdef FREESCALE_USE_MMCAU_CLASSIC
1086 #define FREESCALE_USE_MMCAU
1087 #define FREESCALE_MMCAU_CLASSIC
1088 #define FREESCALE_MMCAU_CLASSIC_SHA
1092#ifdef FREESCALE_USE_MMCAU
1094 #define FREESCALE_MMCAU
1096 #define FREESCALE_MMCAU_SHA
1099#ifdef FREESCALE_USE_LTC
1100 #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT
1101 #define FREESCALE_LTC
1102 #define LTC_BASE LTC0
1104 #if defined(FSL_FEATURE_LTC_HAS_DES) && FSL_FEATURE_LTC_HAS_DES
1105 #define FREESCALE_LTC_DES
1108 #if defined(FSL_FEATURE_LTC_HAS_GCM) && FSL_FEATURE_LTC_HAS_GCM
1109 #define FREESCALE_LTC_AES_GCM
1112 #if defined(FSL_FEATURE_LTC_HAS_SHA) && FSL_FEATURE_LTC_HAS_SHA
1113 #define FREESCALE_LTC_SHA
1116 #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA
1117 #define FREESCALE_LTC_ECC
1118 #define FREESCALE_LTC_TFM
1122 #ifndef LTC_MAX_INT_BYTES
1123 #define LTC_MAX_INT_BYTES (256)
1139 #undef ECC_TIMING_RESISTANT
1140 #define ECC_TIMING_RESISTANT
1145 #ifndef LTC_MAX_ECC_BITS
1146 #define LTC_MAX_ECC_BITS (384)
1150 #if !defined(ECC_USER_CURVES) && !defined(HAVE_ALL_CURVES)
1151 #define ECC_USER_CURVES
1162#ifdef FREESCALE_LTC_TFM_RSA_4096_ENABLE
1163 #undef USE_CERT_BUFFERS_4096
1164 #define USE_CERT_BUFFERS_4096
1166 #define FP_MAX_BITS (8192)
1175#if defined(FREESCALE_USE_LTC) && !defined(FREESCALE_LTC_AES_GCM)
1179#if defined(WOLFSSL_STM32F2) || defined(WOLFSSL_STM32F4) || \
1180 defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32F1) || \
1181 defined(WOLFSSL_STM32L4)
1183 #define SIZEOF_LONG_LONG 8
1187 #define NO_DEV_RANDOM
1188 #define NO_WOLFSSL_DIR
1191 #ifndef NO_STM32_RNG
1194 #ifdef WOLFSSL_STM32F427_RNG
1195 #include "stm32f427xx.h"
1198 #ifndef NO_STM32_CRYPTO
1200 #define STM32_CRYPTO
1202 #ifdef WOLFSSL_STM32L4
1206 #ifndef NO_STM32_HASH
1210 #if !defined(__GNUC__) && !defined(__ICCARM__)
1211 #define KEIL_INTRINSICS
1213 #define NO_OLD_RNGNAME
1214 #ifdef WOLFSSL_STM32_CUBEMX
1215 #if defined(WOLFSSL_STM32F2)
1216 #include "stm32f2xx_hal.h"
1217 #elif defined(WOLFSSL_STM32L4)
1218 #include "stm32l4xx_hal.h"
1219 #elif defined(WOLFSSL_STM32F4)
1220 #include "stm32f4xx_hal.h"
1221 #elif defined(WOLFSSL_STM32F7)
1222 #include "stm32f7xx_hal.h"
1223 #elif defined(WOLFSSL_STM32F1)
1224 #include "stm32f1xx_hal.h"
1226 #if defined(WOLFSSL_CUBEMX_USE_LL) && defined(WOLFSSL_STM32L4)
1227 #include "stm32l4xx_ll_rng.h"
1230 #ifndef STM32_HAL_TIMEOUT
1231 #define STM32_HAL_TIMEOUT 0xFF
1234 #if defined(WOLFSSL_STM32F2)
1235 #include "stm32f2xx.h"
1237 #include "stm32f2xx_cryp.h"
1240 #include "stm32f2xx_hash.h"
1242 #elif defined(WOLFSSL_STM32F4)
1243 #include "stm32f4xx.h"
1245 #include "stm32f4xx_cryp.h"
1248 #include "stm32f4xx_hash.h"
1250 #elif defined(WOLFSSL_STM32L4)
1251 #include "stm32l4xx.h"
1253 #include "stm32l4xx_cryp.h"
1256 #include "stm32l4xx_hash.h"
1258 #elif defined(WOLFSSL_STM32F7)
1259 #include "stm32f7xx.h"
1260 #elif defined(WOLFSSL_STM32F1)
1261 #include "stm32f1xx.h"
1267 #include <timeout.h>
1268 #include <socketapi.h>
1269 #include <lwip-socket.h>
1276 #define XMALLOC_USER
1279 #define WOLFSSL_NO_MALLOC
1283 #define NO_FILESYSTEM
1285 #ifdef NO_FILESYSTEM
1286 #define NO_WOLFSSL_DIR
1290 #define USE_FAST_MATH
1291 #define TFM_TIMING_RESISTANT
1292 #define ECC_TIMING_RESISTANT
1293 #define WC_RSA_BLINDING
1296 #define ALT_ECC_SIZE
1303 #define HAVE_TLS_EXTENSIONS
1304 #define HAVE_SUPPORTED_CURVES
1305 #define HAVE_EXTENDED_MASTER
1307 #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
1308 #define BIG_ENDIAN_ORDER
1310 #undef BIG_ENDIAN_ORDER
1311 #define LITTLE_ENDIAN_ORDER
1318 #include <net_cfg.h>
1319 #include <net_sock.h>
1320 #include <net_err.h>
1321 #include <lib_mem.h>
1322 #include <lib_math.h>
1324 #define USE_FAST_MATH
1325 #define TFM_TIMING_RESISTANT
1326 #define ECC_TIMING_RESISTANT
1327 #define WC_RSA_BLINDING
1328 #define HAVE_HASHDRBG
1331 #define ALT_ECC_SIZE
1339 #define HAVE_TLS_EXTENSIONS
1340 #define HAVE_SUPPORTED_CURVES
1341 #define HAVE_EXTENDED_MASTER
1343 #define NO_WOLFSSL_DIR
1346 #ifndef CUSTOM_RAND_GENERATE
1347 #define CUSTOM_RAND_TYPE RAND_NBR
1348 #define CUSTOM_RAND_GENERATE Math_Rand
1351 #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr)))
1352 #define XSTRNCPY(pstr_dest, pstr_src, len_max) \
1353 ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \
1354 (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max)))
1355 #define XSTRNCMP(pstr_1, pstr_2, len_max) \
1356 ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \
1357 (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max)))
1358 #define XSTRNCASECMP(pstr_1, pstr_2, len_max) \
1359 ((CPU_INT16S)Str_CmpIgnoreCase_N((CPU_CHAR *)(pstr_1), \
1360 (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max)))
1361 #define XSTRSTR(pstr, pstr_srch) \
1362 ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \
1363 (CPU_CHAR *)(pstr_srch)))
1364 #define XSTRNSTR(pstr, pstr_srch, len_max) \
1365 ((CPU_CHAR *)Str_Str_N((CPU_CHAR *)(pstr), \
1366 (CPU_CHAR *)(pstr_srch),(CPU_SIZE_T)(len_max)))
1367 #define XSTRNCAT(pstr_dest, pstr_cat, len_max) \
1368 ((CPU_CHAR *)Str_Cat_N((CPU_CHAR *)(pstr_dest), \
1369 (const CPU_CHAR *)(pstr_cat),(CPU_SIZE_T)(len_max)))
1370 #define XMEMSET(pmem, data_val, size) \
1371 ((void)Mem_Set((void *)(pmem), \
1372 (CPU_INT08U) (data_val), \
1373 (CPU_SIZE_T)(size)))
1374 #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \
1375 (void *)(psrc), (CPU_SIZE_T)(size)))
1376 #define XMEMCMP(pmem_1, pmem_2, size) \
1377 (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \
1379 (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES)
1380 #define XMEMMOVE XMEMCPY
1382 #if (OS_CFG_MUTEX_EN == DEF_DISABLED)
1383 #define SINGLE_THREADED
1386 #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
1387 #define BIG_ENDIAN_ORDER
1389 #undef BIG_ENDIAN_ORDER
1390 #define LITTLE_ENDIAN_ORDER
1394#ifdef WOLFSSL_MCF5441X
1395 #define BIG_ENDIAN_ORDER
1397 #define SIZEOF_LONG 4
1399 #ifndef SIZEOF_LONG_LONG
1400 #define SIZEOF_LONG_LONG 8
1408 #ifndef OPENSSL_EXTRA
1409 #define OPENSSL_EXTRA
1411 #ifndef SESSION_CERTS
1412 #define SESSION_CERTS
1420 #ifndef WOLFSSL_DER_LOAD
1421 #define WOLFSSL_DER_LOAD
1423 #ifndef KEEP_PEER_CERT
1424 #define KEEP_PEER_CERT
1429 #ifndef SESSION_INDEX
1430 #define SESSION_INDEX
1435#if defined(WOLFSSL_XILINX)
1436 #define NO_WOLFSSL_DIR
1437 #define NO_DEV_RANDOM
1441#if defined(WOLFSSL_XILINX_CRYPT) || defined(WOLFSSL_AFALG_XILINX)
1442 #if defined(WOLFSSL_ARMASM)
1443 #error can not use both ARMv8 instructions and XILINX hardened crypto
1445 #if defined(WOLFSSL_SHA3)
1447 #undef WOLFSSL_NOSHA3_224
1448 #undef WOLFSSL_NOSHA3_256
1449 #undef WOLFSSL_NOSHA3_512
1450 #define WOLFSSL_NOSHA3_224
1451 #define WOLFSSL_NOSHA3_256
1452 #define WOLFSSL_NOSHA3_512
1454 #ifdef WOLFSSL_AFALG_XILINX_AES
1455 #undef WOLFSSL_AES_DIRECT
1456 #define WOLFSSL_AES_DIRECT
1460#if defined(WOLFSSL_APACHE_MYNEWT)
1461 #include "os/os_malloc.h"
1462 #if !defined(WOLFSSL_LWIP)
1463 #include <mn_socket/mn_socket.h>
1466 #if !defined(SIZEOF_LONG)
1467 #define SIZEOF_LONG 4
1469 #if !defined(SIZEOF_LONG_LONG)
1470 #define SIZEOF_LONG_LONG 8
1472 #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
1473 #define BIG_ENDIAN_ORDER
1475 #undef BIG_ENDIAN_ORDER
1476 #define LITTLE_ENDIAN_ORDER
1479 #define WOLFSSL_USER_IO
1480 #define SINGLE_THREADED
1481 #define NO_DEV_RANDOM
1483 #define NO_WOLFSSL_DIR
1484 #define NO_ERROR_STRINGS
1486 #define NO_SESSION_CACHE
1487 #define NO_ERROR_STRINGS
1488 #define XMALLOC_USER
1489 #define XMALLOC(sz, heap, type) os_malloc(sz)
1490 #define XREALLOC(p, sz, heap, type) os_realloc(p, sz)
1491 #define XFREE(p, heap, type) os_free(p)
1495#ifdef WOLFSSL_ZEPHYR
1497 #include <misc/printk.h>
1498 #include <misc/util.h>
1501 #define WOLFSSL_DH_CONST
1502 #define WOLFSSL_HAVE_MIN
1503 #define WOLFSSL_HAVE_MAX
1506 #define USE_FLAT_BENCHMARK_H
1507 #define USE_FLAT_TEST_H
1508 #define EXIT_FAILURE 1
1509 #define MAIN_NO_ARGS
1511 void *z_realloc(
void *ptr,
size_t size);
1512 #define realloc z_realloc
1514 #define CONFIG_NET_SOCKETS_POSIX_NAMES
1518 #ifndef SIZEOF_LONG_LONG
1519 #define SIZEOF_LONG_LONG 8
1524#ifdef WOLFSSL_IMX6_CAAM
1525 #undef WOLFSSL_IMX6_CAAM_RNG
1526 #define WOLFSSL_IMX6_CAAM_RNG
1528 #undef WOLFSSL_IMX6_CAAM_BLOB
1529 #define WOLFSSL_IMX6_CAAM_BLOB
1531#if defined(HAVE_AESGCM) || defined(WOLFSSL_AES_XTS)
1534 #define HAVE_AES_ECB
1538#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \
1539 !defined(WOLFSSL_LEANPSK) && !defined(NO_WOLFSSL_MEMORY) && \
1540 !defined(XMALLOC_OVERRIDE)
1541 #define USE_WOLFSSL_MEMORY
1545#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS)
1546 #undef KEEP_PEER_CERT
1547 #define KEEP_PEER_CERT
1552#ifndef XSTREAM_ALIGN
1553 #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__)
1554 #define NO_XSTREAM_ALIGN
1556 #define XSTREAM_ALIGN
1562#if defined(HAVE_WRITE_DUP) && defined(HAVE_SECURE_RENEGOTIATION)
1563 #error "WRITE DUP and SECURE RENEGOTIATION cannot both be on"
1570 #define WOLFCRYPT_ONLY
1575 #define TFM_TIMING_RESISTANT
1576 #define NO_WOLFSSL_DIR
1578 #define NO_MAIN_DRIVER
1579 #define WOLFSSL_LOG_PRINTF
1580 #define WOLFSSL_DH_CONST
1585 #define NO_MAIN_DRIVER
1587 #define WOLFSSL_LOG_PRINTF
1588 #define WOLFSSL_DH_CONST
1590 #if !defined(HAVE_FIPS) && !defined(NO_RSA)
1591 #define WC_RSA_BLINDING
1594 #define NO_FILESYSTEM
1595 #define ECC_TIMING_RESISTANT
1596 #define TFM_TIMING_RESISTANT
1597 #define SINGLE_THREADED
1600 #define USE_CERT_BUFFERS_2048
1601 #define USE_FAST_MATH
1607#ifdef FREESCALE_MMCAU
1608 #ifdef FREESCALE_MMCAU_CLASSIC
1609 #define WOLFSSL_MMCAU_ALIGNMENT 4
1611 #define WOLFSSL_MMCAU_ALIGNMENT 0
1618#ifndef WOLFSSL_GENERAL_ALIGNMENT
1619 #ifdef WOLFSSL_AESNI
1620 #define WOLFSSL_GENERAL_ALIGNMENT 16
1621 #elif defined(XSTREAM_ALIGN)
1622 #define WOLFSSL_GENERAL_ALIGNMENT 4
1623 #elif defined(FREESCALE_MMCAU) || defined(FREESCALE_MMCAU_CLASSIC)
1624 #define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT
1626 #define WOLFSSL_GENERAL_ALIGNMENT 0
1630#if defined(WOLFSSL_GENERAL_ALIGNMENT) && (WOLFSSL_GENERAL_ALIGNMENT > 0)
1631 #if defined(_MSC_VER)
1632 #define XGEN_ALIGN __declspec(align(WOLFSSL_GENERAL_ALIGNMENT))
1633 #elif defined(__GNUC__)
1634 #define XGEN_ALIGN __attribute__((aligned(WOLFSSL_GENERAL_ALIGNMENT)))
1643#ifdef __INTEL_COMPILER
1644 #pragma warning(disable:2259)
1649#ifndef ECC_USER_CURVES
1650 #if !defined(WOLFSSL_SP_MATH) && !defined(HAVE_ALL_CURVES)
1651 #define HAVE_ALL_CURVES
1659 #undef HAVE_ECC_SIGN
1660 #define HAVE_ECC_SIGN
1662 #ifndef NO_ECC_VERIFY
1663 #undef HAVE_ECC_VERIFY
1664 #define HAVE_ECC_VERIFY
1666 #ifndef NO_ECC_CHECK_KEY
1667 #undef HAVE_ECC_CHECK_KEY
1668 #define HAVE_ECC_CHECK_KEY
1672 #define HAVE_ECC_DHE
1674 #ifndef NO_ECC_KEY_IMPORT
1675 #undef HAVE_ECC_KEY_IMPORT
1676 #define HAVE_ECC_KEY_IMPORT
1678 #ifndef NO_ECC_KEY_EXPORT
1679 #undef HAVE_ECC_KEY_EXPORT
1680 #define HAVE_ECC_KEY_EXPORT
1685#ifdef HAVE_CURVE25519
1687 #ifndef NO_CURVE25519_SHARED_SECRET
1688 #undef HAVE_CURVE25519_SHARED_SECRET
1689 #define HAVE_CURVE25519_SHARED_SECRET
1691 #ifndef NO_CURVE25519_KEY_EXPORT
1692 #undef HAVE_CURVE25519_KEY_EXPORT
1693 #define HAVE_CURVE25519_KEY_EXPORT
1695 #ifndef NO_CURVE25519_KEY_IMPORT
1696 #undef HAVE_CURVE25519_KEY_IMPORT
1697 #define HAVE_CURVE25519_KEY_IMPORT
1704 #ifndef NO_ED25519_SIGN
1705 #undef HAVE_ED25519_SIGN
1706 #define HAVE_ED25519_SIGN
1708 #ifndef NO_ED25519_VERIFY
1709 #undef HAVE_ED25519_VERIFY
1710 #define HAVE_ED25519_VERIFY
1712 #ifndef NO_ED25519_KEY_EXPORT
1713 #undef HAVE_ED25519_KEY_EXPORT
1714 #define HAVE_ED25519_KEY_EXPORT
1716 #ifndef NO_ED25519_KEY_IMPORT
1717 #undef HAVE_ED25519_KEY_IMPORT
1718 #define HAVE_ED25519_KEY_IMPORT
1725 #ifndef NO_CURVE448_SHARED_SECRET
1726 #undef HAVE_CURVE448_SHARED_SECRET
1727 #define HAVE_CURVE448_SHARED_SECRET
1729 #ifndef NO_CURVE448_KEY_EXPORT
1730 #undef HAVE_CURVE448_KEY_EXPORT
1731 #define HAVE_CURVE448_KEY_EXPORT
1733 #ifndef NO_CURVE448_KEY_IMPORT
1734 #undef HAVE_CURVE448_KEY_IMPORT
1735 #define HAVE_CURVE448_KEY_IMPORT
1742 #ifndef NO_ED448_SIGN
1743 #undef HAVE_ED448_SIGN
1744 #define HAVE_ED448_SIGN
1746 #ifndef NO_ED448_VERIFY
1747 #undef HAVE_ED448_VERIFY
1748 #define HAVE_ED448_VERIFY
1750 #ifndef NO_ED448_KEY_EXPORT
1751 #undef HAVE_ED448_KEY_EXPORT
1752 #define HAVE_ED448_KEY_EXPORT
1754 #ifndef NO_ED448_KEY_IMPORT
1755 #undef HAVE_ED448_KEY_IMPORT
1756 #define HAVE_ED448_KEY_IMPORT
1763 #ifndef AES_MAX_KEY_SIZE
1764 #undef AES_MAX_KEY_SIZE
1765 #define AES_MAX_KEY_SIZE 256
1769 #undef WOLFSSL_AES_128
1770 #define WOLFSSL_AES_128
1772 #if !defined(NO_AES_192) && AES_MAX_KEY_SIZE >= 192
1773 #undef WOLFSSL_AES_192
1774 #define WOLFSSL_AES_192
1776 #if !defined(NO_AES_256) && AES_MAX_KEY_SIZE >= 256
1777 #undef WOLFSSL_AES_256
1778 #define WOLFSSL_AES_256
1780 #if !defined(WOLFSSL_AES_128) && defined(HAVE_ECC_ENCRYPT)
1781 #warning HAVE_ECC_ENCRYPT uses AES 128 bit keys
1784 #ifndef NO_AES_DECRYPT
1785 #undef HAVE_AES_DECRYPT
1786 #define HAVE_AES_DECRYPT
1790 #define HAVE_AES_CBC
1792 #ifdef WOLFSSL_AES_XTS
1794 #ifndef WOLFSSL_AES_DIRECT
1795 #define WOLFSSL_AES_DIRECT
1798 #ifdef WOLFSSL_AES_CFB
1800 #ifndef WOLFSSL_AES_DIRECT
1801 #define WOLFSSL_AES_DIRECT
1806#if (defined(WOLFSSL_TLS13) && defined(WOLFSSL_NO_TLS12)) || \
1807 (!defined(HAVE_AES_CBC) && defined(NO_DES3) && defined(NO_RC4) && \
1808 !defined(HAVE_CAMELLIA) && !defined(HAVE_IDEA) && \
1809 !defined(HAVE_NULL_CIPHER) && !defined(HAVE_HC128))
1810 #define WOLFSSL_AEAD_ONLY
1813#if !defined(NO_DH) && !defined(HAVE_FFDHE)
1814 #if defined(HAVE_FFDHE_2048) || defined(HAVE_FFDHE_3072) || \
1815 defined(HAVE_FFDHE_4096) || defined(HAVE_FFDHE_6144) || \
1816 defined(HAVE_FFDHE_8192)
1820#if defined(HAVE_FFDHE_8192)
1821 #define MIN_FFDHE_FP_MAX_BITS 16384
1822#elif defined(HAVE_FFDHE_6144)
1823 #define MIN_FFDHE_FP_MAX_BITS 12288
1824#elif defined(HAVE_FFDHE_4096)
1825 #define MIN_FFDHE_FP_MAX_BITS 8192
1826#elif defined(HAVE_FFDHE_3072)
1827 #define MIN_FFDHE_FP_MAX_BITS 6144
1828#elif defined(HAVE_FFDHE_2048)
1829 #define MIN_FFDHE_FP_MAX_BITS 4096
1831 #define MIN_FFDHE_FP_MAX_BITS 0
1833#if defined(HAVE_FFDHE) && defined(FP_MAX_BITS)
1834 #if MIN_FFDHE_FP_MAX_BITS > FP_MAX_BITS
1835 #error "FFDHE parameters are too large for FP_MAX_BIT as set"
1840#ifdef WOLFSSL_X86_64_BUILD
1841 #if defined(USE_FAST_MATH) && !defined(FP_MAX_BITS)
1842 #if MIN_FFDHE_FP_MAX_BITS <= 8192
1843 #define FP_MAX_BITS 8192
1845 #define FP_MAX_BITS MIN_FFDHE_FP_MAX_BITS
1851#ifdef WOLFSSL_MAX_STRENGTH
1858#ifndef WOLFSSL_MIN_AUTH_TAG_SZ
1859 #define WOLFSSL_MIN_AUTH_TAG_SZ 12
1867#ifdef WOLFSSL_SNIFFER
1868 #ifndef WOLFSSL_STATIC_RSA
1869 #define WOLFSSL_STATIC_RSA
1871 #ifndef WOLFSSL_STATIC_DH
1872 #define WOLFSSL_STATIC_DH
1875 #ifndef WOLFSSL_NO_SESSION_STATS
1876 #ifndef WOLFSSL_SESSION_STATS
1877 #define WOLFSSL_SESSION_STATS
1879 #ifndef WOLFSSL_PEAK_SESSIONS
1880 #define WOLFSSL_PEAK_SESSIONS
1887#ifndef WOLFSSL_NO_DECODE_EXTRA
1888 #ifndef RSA_DECODE_EXTRA
1889 #define RSA_DECODE_EXTRA
1891 #ifndef ECC_DECODE_EXTRA
1892 #define ECC_DECODE_EXTRA
1898 #ifndef WOLFSSL_DTLS
1899 #define WOLFSSL_DTLS
1907#ifdef WOLFSSL_ASYNC_CRYPT
1909 #undef HAVE_WOLF_EVENT
1910 #define HAVE_WOLF_EVENT
1912 #ifdef WOLFSSL_ASYNC_CRYPT_TEST
1913 #define WC_ASYNC_DEV_SIZE 168
1915 #define WC_ASYNC_DEV_SIZE 336
1918 #if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \
1919 !defined(WOLFSSL_ASYNC_CRYPT_TEST)
1920 #error No async hardware defined with WOLFSSL_ASYNC_CRYPT!
1924 #if !defined(ECC_CACHE_CURVE)
1925 #define ECC_CACHE_CURVE
1928#ifndef WC_ASYNC_DEV_SIZE
1929 #define WC_ASYNC_DEV_SIZE 0
1933#ifdef WOLFSSL_LEANTLS
1935 #error leantls build needs ECC
1940#ifdef WOLFSSL_STATIC_MEMORY
1941 #if defined(HAVE_IO_POOL) || defined(XMALLOC_USER) || defined(NO_WOLFSSL_MEMORY)
1942 #error static memory cannot be used with HAVE_IO_POOL, XMALLOC_USER or NO_WOLFSSL_MEMORY
1944 #if !defined(USE_FAST_MATH) && !defined(NO_BIG_INT)
1945 #error static memory requires fast math please define USE_FAST_MATH
1947 #ifdef WOLFSSL_SMALL_STACK
1948 #error static memory does not support small stack please undefine
1952#ifdef HAVE_AES_KEYWRAP
1953 #ifndef WOLFSSL_AES_DIRECT
1954 #error AES key wrap requires AES direct please define WOLFSSL_AES_DIRECT
1959 #if defined(NO_AES) && defined(NO_DES3)
1960 #error PKCS7 needs either AES or 3DES enabled, please enable one
1962 #ifndef HAVE_AES_KEYWRAP
1963 #error PKCS7 requires AES key wrap please define HAVE_AES_KEYWRAP
1965 #if defined(HAVE_ECC) && !defined(HAVE_X963_KDF)
1966 #error PKCS7 requires X963 KDF please define HAVE_X963_KDF
1980#if !defined(NO_PBKDF1) || defined(WOLFSSL_ENCRYPTED_KEYS) || defined(HAVE_PKCS8) || defined(HAVE_PKCS12)
1985#if !defined(NO_PBKDF2) || defined(HAVE_PKCS7) || defined(HAVE_SCRYPT)
1991#if !defined(WOLFCRYPT_ONLY) && !defined(NO_OLD_TLS) && \
1992 (defined(NO_SHA) || defined(NO_MD5))
1993 #error old TLS requires MD5 and SHA
1997#if defined(TEST_IPV6) && !defined(WOLFSSL_IPV6)
1998 #define WOLFSSL_IPV6
2004#if defined(WOLFSSL_MYSQL_COMPATIBLE) && defined(_WIN32) \
2005 && defined(HAVE_GMTIME_R)
2006 #undef HAVE_GMTIME_R
2009#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
2010 #define SSL_OP_NO_COMPRESSION SSL_OP_NO_COMPRESSION
2011 #define OPENSSL_NO_ENGINE
2012 #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
2013 #ifndef OPENSSL_EXTRA
2014 #define OPENSSL_EXTRA
2016 #ifndef HAVE_SESSION_TICKET
2017 #define HAVE_SESSION_TICKET
2022 #ifndef KEEP_OUR_CERT
2023 #define KEEP_OUR_CERT
2030#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_QT) || defined(OPENSSL_ALL)
2031 #define SSL_CTRL_SET_TLSEXT_HOSTNAME 55
2036#ifdef CURVED25519_SMALL
2037 #define CURVE25519_SMALL
2038 #define ED25519_SMALL
2042#ifdef CURVED448_SMALL
2043 #define CURVE448_SMALL
2048#ifndef WOLFSSL_ALERT_COUNT_MAX
2049 #define WOLFSSL_ALERT_COUNT_MAX 5
2054 #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \
2055 (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \
2056 (!defined(NO_RSA) && !defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) && \
2057 !defined(WC_NO_RNG))
2060 #warning "For timing resistance / side-channel attack prevention consider using harden options"
2062 #pragma message("Warning: For timing resistance / side-channel attack prevention consider using harden options")
2067#if defined(NO_OLD_WC_NAMES) || defined(OPENSSL_EXTRA)
2069 #if !defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS)
2070 #define NO_OLD_SHA_NAMES
2077 #undef OPENSSL_EXTRA_X509_SMALL
2078 #define OPENSSL_EXTRA_X509_SMALL
2082#if (defined(WOLFSSL_KEY_GEN) && !defined(WOLFSSL_NO_DER_TO_PEM)) || \
2083 defined(WOLFSSL_CERT_GEN) || defined(OPENSSL_EXTRA)
2084 #undef WOLFSSL_DER_TO_PEM
2085 #define WOLFSSL_DER_TO_PEM
2089#ifndef WOLFSSL_ENCRYPTED_KEYS
2090 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
2091 defined(HAVE_WEBSERVER)
2092 #define WOLFSSL_ENCRYPTED_KEYS
2097#if !defined(WOLFSSL_NO_PEM)
2098 #undef WOLFSSL_PEM_TO_DER
2099 #define WOLFSSL_PEM_TO_DER
2103#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
2104 #undef KEEP_PEER_CERT
2105 #define KEEP_PEER_CERT
2109#ifdef WOLFSSL_ARMASM
2110 #undef WOLFSSL_NO_HASH_RAW
2111 #define WOLFSSL_NO_HASH_RAW
2114#if !defined(WOLFSSL_SHA384) && !defined(WOLFSSL_SHA512) && defined(NO_AES) && \
2115 !defined(WOLFSSL_SHA3)
2116 #undef WOLFSSL_NO_WORD64_OPS
2117 #define WOLFSSL_NO_WORD64_OPS
2120#if !defined(WOLFCRYPT_ONLY) && !defined(WOLFSSL_NO_TLS12)
2121 #undef WOLFSSL_HAVE_PRF
2122 #define WOLFSSL_HAVE_PRF
2125#if defined(NO_AES) && defined(NO_DES3) && !defined(HAVE_CAMELLIA) && \
2126 !defined(WOLFSSL_HAVE_PRF) && defined(NO_PWDBASED) && !defined(HAVE_IDEA)
2127 #undef WOLFSSL_NO_XOR_OPS
2128 #define WOLFSSL_NO_XOR_OPS
2131#if defined(NO_ASN) && defined(WOLFCRYPT_ONLY)
2132 #undef WOLFSSL_NO_INT_ENCODE
2133 #define WOLFSSL_NO_INT_ENCODE
2134 #undef WOLFSSL_NO_INT_DECODE
2135 #define WOLFSSL_NO_INT_DECODE
2138#if defined(WOLFCRYPT_ONLY) && defined(WOLFSSL_RSA_VERIFY_ONLY) && \
2139 defined(WC_NO_RSA_OAEP)
2140 #undef WOLFSSL_NO_CT_OPS
2141 #define WOLFSSL_NO_CT_OPS
2144#if defined(WOLFCRYPT_ONLY) && defined(NO_AES) && !defined(HAVE_CURVE25519) && \
2145 !defined(HAVE_CURVE448) && defined(WC_NO_RNG) && defined(WC_NO_RSA_OAEP)
2146 #undef WOLFSSL_NO_CONST_CMP
2147 #define WOLFSSL_NO_CONST_CMP
2150#if defined(WOLFCRYPT_ONLY) && defined(NO_AES) && !defined(WOLFSSL_SHA384) && \
2151 !defined(WOLFSSL_SHA512) && defined(WC_NO_RNG) && \
2152 defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_RSA_PUBLIC_ONLY)
2153 #undef WOLFSSL_NO_FORCE_ZERO
2154 #define WOLFSSL_NO_FORCE_ZERO
2158#if defined(WOLF_CRYPTO_DEV) && !defined(WOLF_CRYPTO_CB)
2159 #define WOLF_CRYPTO_CB
2162#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_NO_SIGALG)
2163 #error TLS 1.3 requires the Signature Algorithms extension to be enabled
2166#ifndef NO_WOLFSSL_BASE64_DECODE
2167 #define WOLFSSL_BASE64_DECODE
2170#if defined(HAVE_EX_DATA) || defined(FORTRESS)
2171 #define MAX_EX_DATA 5
2174#ifdef NO_WOLFSSL_SMALL_STACK
2175 #undef WOLFSSL_SMALL_STACK
2179#if defined(NO_ASN_TIME) && !defined(NO_SESSION_CACHE)
2180 #define NO_SESSION_CACHE
2184#if defined(__IAR_SYSTEMS_ICC__) && defined(__ROPI__)
2185 #define WOLFSSL_ECC_CURVE_STATIC
2186 #define WOLFSSL_NAMES_STATIC
2187 #define WOLFSSL_NO_CONSTCHARCONST