123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- /* user_settings.h
- *
- * Copyright (C) 2006-2024 wolfSSL Inc.
- *
- * This file is part of wolfSSL.
- *
- * wolfSSL is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * wolfSSL is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
- */
- /* This user_settings.h is for Espressif ESP-IDF */
- #include <sdkconfig.h>
- /* The Espressif sdkconfig will have chipset info.
- **
- ** Possible values:
- **
- ** CONFIG_IDF_TARGET_ESP32
- ** CONFIG_IDF_TARGET_ESP32S2
- ** CONFIG_IDF_TARGET_ESP32S3
- ** CONFIG_IDF_TARGET_ESP32C3
- ** CONFIG_IDF_TARGET_ESP32C6
- */
- #undef WOLFSSL_ESPIDF
- #define WOLFSSL_ESPIDF
- /*
- * choose ONE of these Espressif chips to define:
- *
- * WOLFSSL_ESP32
- * WOLFSSL_ESPWROOM32SE
- * WOLFSSL_ESP8266
- */
- #undef WOLFSSL_ESPWROOM32SE
- #undef WOLFSSL_ESP8266
- #undef WOLFSSL_ESP32
- #define WOLFSSL_ESP32
- /* optionally turn off SHA512/224 SHA512/256 */
- /* #define WOLFSSL_NOSHA512_224 */
- /* #define WOLFSSL_NOSHA512_256 */
- /* when you want to use SINGLE THREAD. Note Default ESP-IDF is FreeRTOS */
- /* #define SINGLE_THREADED */
- /* When you don't want to use the old SHA */
- /* #define NO_SHA */
- /* #define NO_OLD_TLS */
- #define BENCH_EMBEDDED
- #define USE_CERT_BUFFERS_2048
- /* TLS 1.3 */
- #define WOLFSSL_TLS13
- #define HAVE_TLS_EXTENSIONS
- #define WC_RSA_PSS
- #define HAVE_HKDF
- #define HAVE_AEAD
- #define HAVE_SUPPORTED_CURVES
- #define WOLFSSL_BENCHMARK_FIXED_UNITS_KB
- #define NO_FILESYSTEM
- #define NO_OLD_TLS
- #define HAVE_AESGCM
- #define WOLFSSL_RIPEMD
- /* when you want to use SHA224 */
- #define WOLFSSL_SHA224
- /* when you want to use SHA384 */
- #define WOLFSSL_SHA384
- /* when you want to use SHA512 */
- #define WOLFSSL_SHA512
- /* when you want to use SHA3 */
- #define WOLFSSL_SHA3
- #define HAVE_ED25519 /* ED25519 requires SHA512 */
- #define HAVE_ECC
- #define HAVE_CURVE25519
- #define CURVE25519_SMALL
- #define HAVE_ED25519
- /* Optional OPENSSL compatibility */
- #define OPENSSL_EXTRA
- /* when you want to use pkcs7 */
- /* #define HAVE_PKCS7 */
- #define HAVE_PKCS7
- #if defined(HAVE_PKCS7)
- #define HAVE_AES_KEYWRAP
- #define HAVE_X963_KDF
- #define WOLFSSL_AES_DIRECT
- #endif
- /* when you want to use AES counter mode */
- /* #define WOLFSSL_AES_DIRECT */
- /* #define WOLFSSL_AES_COUNTER */
- /* esp32-wroom-32se specific definition */
- #if defined(WOLFSSL_ESPWROOM32SE)
- #define WOLFSSL_ATECC508A
- #define HAVE_PK_CALLBACKS
- /* when you want to use a custom slot allocation for ATECC608A */
- /* unless your configuration is unusual, you can use default */
- /* implementation. */
- /* #define CUSTOM_SLOT_ALLOCATION */
- #endif
- /* RSA primitive specific definition */
- #if defined(WOLFSSL_ESP32) || defined(WOLFSSL_ESPWROOM32SE)
- /* Define USE_FAST_MATH and SMALL_STACK */
- #define ESP32_USE_RSA_PRIMITIVE
- #if defined(CONFIG_IDF_TARGET_ESP32)
- /* NOTE HW unreliable for small values! */
- /* threshold for performance adjustment for HW primitive use */
- /* X bits of G^X mod P greater than */
- #undef ESP_RSA_EXPT_XBITS
- #define ESP_RSA_EXPT_XBITS 32
- /* X and Y of X * Y mod P greater than */
- #undef ESP_RSA_MULM_BITS
- #define ESP_RSA_MULM_BITS 16
- #endif
- #endif
- #define RSA_LOW_MEM
- /* #define WOLFSSL_ATECC508A_DEBUG */
- /* date/time */
- /* if it cannot adjust time in the device, */
- /* enable macro below */
- /* #define NO_ASN_TIME */
- /* #define XTIME time */
- /* adjust wait-timeout count if you see timeout in RSA HW acceleration */
- #define ESP_RSA_TIMEOUT_CNT 0x249F00
- #define HASH_SIZE_LIMIT /* for test.c */
- /* USE_FAST_MATH is default */
- #define USE_FAST_MATH
- /***** Use SP_MATH *****/
- /* #undef USE_FAST_MATH */
- /* #define SP_MATH */
- /* #define WOLFSSL_SP_MATH_ALL */
- /***** Use Integer Heap Math *****/
- /* #undef USE_FAST_MATH */
- /* #define USE_INTEGER_HEAP_MATH */
- #define WOLFSSL_SMALL_STACK
- #define HAVE_VERSION_EXTENDED_INFO
- /* #define HAVE_WC_INTROSPECTION */
- #define HAVE_SESSION_TICKET
- /* #define HAVE_HASHDRBG */
- #define WOLFSSL_KEY_GEN
- #define WOLFSSL_CERT_REQ
- #define WOLFSSL_CERT_GEN
- #define WOLFSSL_CERT_EXT
- #define WOLFSSL_SYS_CA_CERTS
- #define WOLFSSL_CERT_TEXT
- #define WOLFSSL_ASN_TEMPLATE
- /*
- #undef WOLFSSL_KEY_GEN
- #undef WOLFSSL_CERT_REQ
- #undef WOLFSSL_CERT_GEN
- #undef WOLFSSL_CERT_EXT
- #undef WOLFSSL_SYS_CA_CERTS
- */
- /*
- --enable-keygen
- --enable-certgen
- --enable-certreq
- --enable-certext
- --enable-asn-template
- */
- /* Default is HW enabled unless turned off.
- ** Uncomment these lines to force SW instead of HW acceleration */
- #if defined(CONFIG_IDF_TARGET_ESP32)
- /* wolfSSL HW Acceleration supported on ESP32. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */
- /* #define NO_WOLFSSL_ESP32_CRYPT_AES */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /* These are defined automatically in esp32-crypt.h, here for clarity: */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA224 /* no SHA224 HW on ESP32 */
- #undef ESP_RSA_MULM_BITS
- #define ESP_RSA_MULM_BITS 16 /* TODO add compile-time warning */
- /***** END CONFIG_IDF_TARGET_ESP32 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32S2)
- /* wolfSSL HW Acceleration supported on ESP32-S2. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */
- /* Note: There's no AES192 HW on the ESP32-S2; falls back to SW */
- /* #define NO_WOLFSSL_ESP32_CRYPT_AES */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /***** END CONFIG_IDF_TARGET_ESP32S2 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32S3)
- /* wolfSSL HW Acceleration supported on ESP32-S3. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */
- /* Note: There's no AES192 HW on the ESP32-S3; falls back to SW */
- /* #define NO_WOLFSSL_ESP32_CRYPT_AES */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /***** END CONFIG_IDF_TARGET_ESP32S3 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32C2) || \
- defined(CONFIG_IDF_TARGET_ESP8684)
- /* ESP8684 is essentially ESP32-C2 chip + flash embedded together in a
- * single QFN 4x4 mm package. Out of released documentation, Technical
- * Reference Manual as well as ESP-IDF Programming Guide is applicable
- * to both ESP32-C2 and ESP8684.
- *
- * See: https://www.esp32.com/viewtopic.php?f=5&t=27926#:~:text=ESP8684%20is%20essentially%20ESP32%2DC2,both%20ESP32%2DC2%20and%20ESP8684. */
- /* wolfSSL HW Acceleration supported on ESP32-C2. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
- /* These are defined automatically in esp32-crypt.h, here for clarity */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C2 */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C2 */
- /* There's no AES or RSA/Math accelerator on the ESP32-C2
- * Auto defined with NO_WOLFSSL_ESP32_CRYPT_RSA_PRI, for clarity: */
- #define NO_WOLFSSL_ESP32_CRYPT_AES
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD
- /***** END CONFIG_IDF_TARGET_ESP32C2 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32C3)
- /* wolfSSL HW Acceleration supported on ESP32-C3. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */ /* to disable all SHA HW */
- /* These are defined automatically in esp32-crypt.h, here for clarity: */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C6 */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C6 */
- /* #define NO_WOLFSSL_ESP32_CRYPT_AES */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /***** END CONFIG_IDF_TARGET_ESP32C3 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32C6)
- /* wolfSSL HW Acceleration supported on ESP32-C6. Uncomment to disable: */
- /* #define NO_ESP32_CRYPT */
- /* #define NO_WOLFSSL_ESP32_CRYPT_HASH */
- /* These are defined automatically in esp32-crypt.h, here for clarity: */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA384 /* no SHA384 HW on C6 */
- #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA512 /* no SHA512 HW on C6 */
- /* #define NO_WOLFSSL_ESP32_CRYPT_AES */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /***** END CONFIG_IDF_TARGET_ESP32C6 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP32H2)
- /* wolfSSL Hardware Acceleration not yet implemented */
- #define NO_ESP32_CRYPT
- #define NO_WOLFSSL_ESP32_CRYPT_HASH
- #define NO_WOLFSSL_ESP32_CRYPT_AES
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
- /***** END CONFIG_IDF_TARGET_ESP32H2 *****/
- #elif defined(CONFIG_IDF_TARGET_ESP8266)
- /* TODO: Revisit ESP8266 */
- #define NO_ESP32_CRYPT
- #define NO_WOLFSSL_ESP32_CRYPT_HASH
- #define NO_WOLFSSL_ESP32_CRYPT_AES
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
- /***** END CONFIG_IDF_TARGET_ESP266 *****/
- #else
- /* Anything else encountered, disable HW acceleration */
- #define NO_ESP32_CRYPT
- #define NO_WOLFSSL_ESP32_CRYPT_HASH
- #define NO_WOLFSSL_ESP32_CRYPT_AES
- #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI
- #endif /* CONFIG_IDF_TARGET Check */
- /* Debug options:
- #define ESP_VERIFY_MEMBLOCK
- #define DEBUG_WOLFSSL
- #define DEBUG_WOLFSSL_VERBOSE
- #define DEBUG_WOLFSSL_SHA_MUTEX
- #define WOLFSSL_ESP32_CRYPT_DEBUG
- #define WOLFSSL_ESP32_CRYPT_HASH_SHA224_DEBUG
- #define NO_RECOVER_SOFTWARE_CALC
- #define WOLFSSL_TEST_STRAY 1
- #define USE_ESP_DPORT_ACCESS_READ_BUFFER
- #define WOLFSSL_ESP32_HW_LOCK_DEBUG
- #define WOLFSSL_DEBUG_ESP_RSA_MULM_BITS
- #define ESP_DISABLE_HW_TASK_LOCK
- */
- #define WOLFSSL_ESPIDF_ERROR_PAUSE /* Pause in a loop rather than exit. */
- #define WOLFSSL_HW_METRICS
- /* #define HASH_SIZE_LIMIT */ /* for test.c */
- /* #define NO_HW_MATH_TEST */ /* Optionally turn off HW math checks */
- /* Optionally include alternate HW test library: alt_hw_test.h */
- /* When enabling, the ./components/wolfssl/CMakeLists.txt file
- * will need the name of the library in the idf_component_register
- * for the PRIV_REQUIRES list. */
- /* #define INCLUDE_ALT_HW_TEST */
- /* optionally turn off individual math HW acceleration features */
- /* Turn off Large Number ESP32 HW Multiplication:
- ** [Z = X * Y] in esp_mp_mul() */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL */
- /* Turn off Large Number ESP32 HW Modular Exponentiation:
- ** [Z = X^Y mod M] in esp_mp_exptmod() */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD */
- /* Turn off Large Number ESP32 HW Modular Multiplication
- ** [Z = X * Y mod M] in esp_mp_mulmod() */
- /* #define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD */
- #define WOLFSSL_PUBLIC_MP /* used by benchmark */
- #define USE_CERT_BUFFERS_2048
- /* when turning on ECC508 / ECC608 support
- #define WOLFSSL_ESPWROOM32SE
- #define HAVE_PK_CALLBACKS
- #define WOLFSSL_ATECC508A
- #define ATCA_WOLFSSL
- */
- /* optional SM4 Ciphers. See https://github.com/wolfSSL/wolfsm
- #define WOLFSSL_SM2
- #define WOLFSSL_SM3
- #define WOLFSSL_SM4
- */
- #if defined(WOLFSSL_SM2) || defined(WOLFSSL_SM3) || defined(WOLFSSL_SM4)
- #include <wolfssl/certs_test_sm.h>
- #define CTX_CA_CERT root_sm2
- #define CTX_CA_CERT_SIZE sizeof_root_sm2
- #define CTX_CA_CERT_TYPE WOLFSSL_FILETYPE_PEM
- #define CTX_SERVER_CERT server_sm2
- #define CTX_SERVER_CERT_SIZE sizeof_server_sm2
- #define CTX_SERVER_CERT_TYPE WOLFSSL_FILETYPE_PEM
- #define CTX_SERVER_KEY server_sm2_priv
- #define CTX_SERVER_KEY_SIZE sizeof_server_sm2_priv
- #define CTX_SERVER_KEY_TYPE WOLFSSL_FILETYPE_PEM
- #undef WOLFSSL_BASE16
- #define WOLFSSL_BASE16
- #else
- #define USE_CERT_BUFFERS_2048
- #define USE_CERT_BUFFERS_256
- #define CTX_CA_CERT ca_cert_der_2048
- #define CTX_CA_CERT_SIZE sizeof_ca_cert_der_2048
- #define CTX_CA_CERT_TYPE WOLFSSL_FILETYPE_ASN1
- #define CTX_SERVER_CERT server_cert_der_2048
- #define CTX_SERVER_CERT_SIZE sizeof_server_cert_der_2048
- #define CTX_SERVER_CERT_TYPE WOLFSSL_FILETYPE_ASN1
- #define CTX_SERVER_KEY server_key_der_2048
- #define CTX_SERVER_KEY_SIZE sizeof_server_key_der_2048
- #define CTX_SERVER_KEY_TYPE WOLFSSL_FILETYPE_ASN1
- #endif
|