|  | # TLS/DTLS related options | 
|  |  | 
|  | # Copyright (c) 2018 Intel Corporation | 
|  | # Copyright (c) 2018 Nordic Semiconductor ASA | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | menu "Mbed TLS configuration" | 
|  | depends on MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = "config-tls-generic.h" | 
|  |  | 
|  | menu "TLS" | 
|  |  | 
|  | config MBEDTLS_TLS_VERSION_1_2 | 
|  | bool "Support for TLS 1.2 (DTLS 1.2)" | 
|  | select MBEDTLS_CIPHER | 
|  | select MBEDTLS_MD | 
|  |  | 
|  | if MBEDTLS_TLS_VERSION_1_2 | 
|  |  | 
|  | config MBEDTLS_DTLS | 
|  | bool "Support for DTLS" | 
|  |  | 
|  | endif # MBEDTLS_TLS_VERSION_1_2 | 
|  |  | 
|  | config MBEDTLS_TLS_VERSION_1_3 | 
|  | bool "Support for TLS 1.3" | 
|  |  | 
|  | if MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | config MBEDTLS_TLS_SESSION_TICKETS | 
|  | bool "Support for RFC 5077 session tickets in TLS 1.3" | 
|  |  | 
|  | endif # MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | if MBEDTLS_TLS_VERSION_1_2 || MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | config MBEDTLS_SSL_ALPN | 
|  | bool "Support for setting the supported Application Layer Protocols" | 
|  |  | 
|  | endif # MBEDTLS_TLS_VERSION_1_2 || MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | endmenu # TLS | 
|  |  | 
|  | menu "Ciphersuite configuration" | 
|  |  | 
|  | comment "Supported key exchange modes" | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ALL_ENABLED | 
|  | bool "All available ciphersuite modes" | 
|  | select MBEDTLS_KEY_EXCHANGE_PSK_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED | 
|  | select MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_PSK_ENABLED | 
|  | bool "PSK based ciphersuite modes" | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED | 
|  | bool "DHE-PSK based ciphersuite modes" | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | 
|  | bool "ECDHE-PSK based ciphersuite modes" | 
|  | depends on MBEDTLS_ECDH_C | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED | 
|  | bool "RSA-PSK based ciphersuite modes" | 
|  |  | 
|  | config MBEDTLS_PSK_MAX_LEN | 
|  | int "Max size of TLS pre-shared keys" | 
|  | default 32 | 
|  | help | 
|  | Max size of TLS pre-shared keys, in bytes. It has no effect if no | 
|  | PSK key exchange is used. | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | 
|  | bool "RSA-only based ciphersuite modes" | 
|  | default y if UOSCORE || UEDHOC | 
|  | select MBEDTLS_MD | 
|  | select PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY if PSA_CRYPTO_CLIENT | 
|  | select PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT if PSA_CRYPTO_CLIENT | 
|  | select PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT if PSA_CRYPTO_CLIENT | 
|  | select PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE if PSA_CRYPTO_CLIENT | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED | 
|  | bool "DHE-RSA based ciphersuite modes" | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED | 
|  | bool "ECDHE-RSA based ciphersuite modes" | 
|  | depends on MBEDTLS_ECDH_C | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED | 
|  | bool "ECDHE-ECDSA based ciphersuite modes" | 
|  | depends on MBEDTLS_ECDH_C && MBEDTLS_ECDSA_C || (PSA_WANT_ALG_ECDH && PSA_WANT_ALG_ECDSA) | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED | 
|  | bool "ECDH-ECDSA based ciphersuite modes" | 
|  | depends on (MBEDTLS_ECDH_C && MBEDTLS_ECDSA_C) || (PSA_WANT_ALG_ECDH && PSA_WANT_ALG_ECDSA) | 
|  |  | 
|  | config MBEDTLS_ECDSA_DETERMINISTIC | 
|  | bool "Deterministic ECDSA (RFC 6979)" | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED | 
|  | bool "ECDH-RSA based ciphersuite modes" | 
|  | depends on MBEDTLS_ECDH_C | 
|  |  | 
|  | config MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED | 
|  | bool "ECJPAKE based ciphersuite modes" | 
|  | depends on MBEDTLS_ECJPAKE_C | 
|  |  | 
|  | if MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | config MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED | 
|  | bool "TLS 1.3 PSK key exchange mode" | 
|  |  | 
|  | config MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED | 
|  | bool "TLS 1.3 ephemeral key exchange mode" | 
|  |  | 
|  | config MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED | 
|  | bool "TLS 1.3 PSK ephemeral key exchange mode" | 
|  |  | 
|  | endif # MBEDTLS_TLS_VERSION_1_3 | 
|  |  | 
|  | config MBEDTLS_HKDF_C | 
|  | bool "HMAC-based Extract-and-Expand Key Derivation Function" | 
|  |  | 
|  | comment "Elliptic curve libraries" | 
|  |  | 
|  | config MBEDTLS_ECDH_C | 
|  | bool "Elliptic curve Diffie-Hellman library" | 
|  | depends on MBEDTLS_ECP_C | 
|  |  | 
|  | config MBEDTLS_ECDSA_C | 
|  | bool "Elliptic curve DSA library" | 
|  | depends on MBEDTLS_ECP_C | 
|  | select MBEDTLS_ASN1_PARSE_C | 
|  |  | 
|  | config MBEDTLS_ECJPAKE_C | 
|  | bool "Elliptic curve J-PAKE library" | 
|  | depends on MBEDTLS_ECP_C | 
|  |  | 
|  | config MBEDTLS_ECP_C | 
|  | bool "Elliptic curve over GF(p) library" | 
|  | default y if UOSCORE || UEDHOC | 
|  |  | 
|  | if MBEDTLS_ECP_C | 
|  |  | 
|  | comment "Supported elliptic curves" | 
|  |  | 
|  | config MBEDTLS_ECP_ALL_ENABLED | 
|  | bool "All available elliptic curves" | 
|  | select MBEDTLS_ECP_DP_SECP192R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP192R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP224R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP256R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP384R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP521R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP192K1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP224K1_ENABLED | 
|  | select MBEDTLS_ECP_DP_SECP256K1_ENABLED | 
|  | select MBEDTLS_ECP_DP_BP256R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_BP384R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_BP512R1_ENABLED | 
|  | select MBEDTLS_ECP_DP_CURVE25519_ENABLED | 
|  | select MBEDTLS_ECP_DP_CURVE448_ENABLED | 
|  | select MBEDTLS_ECP_NIST_OPTIM | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP192R1_ENABLED | 
|  | bool "SECP192R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP224R1_ENABLED | 
|  | bool "SECP224R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP256R1_ENABLED | 
|  | bool "SECP256R1 elliptic curve" | 
|  | default y if UOSCORE || UEDHOC | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP384R1_ENABLED | 
|  | bool "SECP384R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP521R1_ENABLED | 
|  | bool "SECP521R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP192K1_ENABLED | 
|  | bool "SECP192K1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP224K1_ENABLED | 
|  | bool "SECP224K1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_SECP256K1_ENABLED | 
|  | bool "SECP256K1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_BP256R1_ENABLED | 
|  | bool "BP256R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_BP384R1_ENABLED | 
|  | bool "BP384R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_BP512R1_ENABLED | 
|  | bool "BP512R1 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_CURVE25519_ENABLED | 
|  | bool "CURVE25519 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_DP_CURVE448_ENABLED | 
|  | bool "CURVE448 elliptic curve" | 
|  |  | 
|  | config MBEDTLS_ECP_NIST_OPTIM | 
|  | bool "NSIT curves optimization" | 
|  |  | 
|  | endif | 
|  |  | 
|  | comment "Supported ciphers and cipher modes" | 
|  |  | 
|  | config MBEDTLS_CIPHER_ALL_ENABLED | 
|  | bool "All available ciphers and modes" | 
|  | select MBEDTLS_CIPHER_AES_ENABLED | 
|  | select MBEDTLS_CIPHER_CAMELLIA_ENABLED | 
|  | select MBEDTLS_CIPHER_DES_ENABLED | 
|  | select MBEDTLS_CIPHER_CHACHA20_ENABLED | 
|  | select MBEDTLS_CIPHER_CCM_ENABLED | 
|  | select MBEDTLS_CIPHER_GCM_ENABLED | 
|  | select MBEDTLS_CIPHER_MODE_XTS_ENABLED | 
|  | select MBEDTLS_CIPHER_MODE_CBC_ENABLED | 
|  | select MBEDTLS_CIPHER_MODE_CTR_ENABLED | 
|  | select MBEDTLS_CHACHAPOLY_AEAD_ENABLED | 
|  |  | 
|  | config MBEDTLS_SOME_AEAD_CIPHER_ENABLED | 
|  | bool | 
|  | default y | 
|  | depends on \ | 
|  | MBEDTLS_CIPHER_AES_ENABLED || \ | 
|  | MBEDTLS_CIPHER_CAMELLIA_ENABLED | 
|  |  | 
|  | config MBEDTLS_SOME_CIPHER_ENABLED | 
|  | bool | 
|  | default y | 
|  | depends on \ | 
|  | MBEDTLS_SOME_AEAD_CIPHER_ENABLED || \ | 
|  | MBEDTLS_CIPHER_DES_ENABLED || \ | 
|  | MBEDTLS_CIPHER_CHACHA20_ENABLED | 
|  |  | 
|  | config MBEDTLS_CIPHER_AES_ENABLED | 
|  | bool "AES block cipher" | 
|  | default y if PSA_WANT_KEY_TYPE_AES && MBEDTLS_PSA_CRYPTO_C | 
|  |  | 
|  | if MBEDTLS_CIPHER_AES_ENABLED | 
|  |  | 
|  | config MBEDTLS_AES_ROM_TABLES | 
|  | bool "Use precomputed AES tables stored in ROM." | 
|  |  | 
|  | config MBEDTLS_AES_FEWER_TABLES | 
|  | bool "Reduce the size of precomputed AES tables by ~6kB" | 
|  | default y | 
|  | depends on MBEDTLS_AES_ROM_TABLES | 
|  | help | 
|  | Reduce the size of the AES tables at a tradeoff of more | 
|  | arithmetic operations at runtime. Specifically 4 table | 
|  | lookups are converted to 1 table lookup, 3 additions | 
|  | and 6 bit shifts. | 
|  |  | 
|  | config MBEDTLS_CIPHER_MODE_XTS_ENABLED | 
|  | bool "Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES" | 
|  |  | 
|  | endif # MBEDTLS_CIPHER_AES_ENABLED | 
|  |  | 
|  | config MBEDTLS_CIPHER_CAMELLIA_ENABLED | 
|  | bool "Camellia block cipher" | 
|  |  | 
|  | config MBEDTLS_CIPHER_DES_ENABLED | 
|  | bool "DES block cipher" | 
|  |  | 
|  | config MBEDTLS_CIPHER_CHACHA20_ENABLED | 
|  | bool "ChaCha20 stream cipher" | 
|  |  | 
|  | if MBEDTLS_SOME_AEAD_CIPHER_ENABLED | 
|  |  | 
|  | config MBEDTLS_CIPHER_CCM_ENABLED | 
|  | bool "Counter with CBC-MAC (CCM) mode for 128-bit block cipher" | 
|  | default y if UOSCORE || UEDHOC | 
|  |  | 
|  | config MBEDTLS_CIPHER_GCM_ENABLED | 
|  | bool "Galois/Counter Mode (GCM) for symmetric ciphers" | 
|  |  | 
|  | endif # MBEDTLS_SOME_AEAD_CIPHER_ENABLED | 
|  |  | 
|  | if MBEDTLS_SOME_CIPHER_ENABLED | 
|  |  | 
|  | config MBEDTLS_CIPHER_MODE_CBC_ENABLED | 
|  | bool "Cipher Block Chaining mode (CBC) for symmetric ciphers" | 
|  | default y if !NET_L2_OPENTHREAD | 
|  |  | 
|  | config MBEDTLS_CIPHER_MODE_CTR_ENABLED | 
|  | bool "Counter Block Cipher mode (CTR) for symmetric ciphers" | 
|  |  | 
|  | endif # MBEDTLS_SOME_CIPHER_ENABLED | 
|  |  | 
|  | config MBEDTLS_CHACHAPOLY_AEAD_ENABLED | 
|  | bool "ChaCha20-Poly1305 AEAD algorithm" | 
|  | depends on MBEDTLS_CIPHER_CHACHA20_ENABLED && MBEDTLS_POLY1305 | 
|  |  | 
|  | config MBEDTLS_CMAC | 
|  | bool "CMAC (Cipher-based Message Authentication Code) mode for block ciphers." | 
|  | depends on MBEDTLS_CIPHER_AES_ENABLED || MBEDTLS_CIPHER_DES_ENABLED | 
|  |  | 
|  | comment "Supported hash algorithms" | 
|  |  | 
|  | config MBEDTLS_HASH_ALL_ENABLED | 
|  | bool "All available MAC methods" | 
|  | select MBEDTLS_MD5 | 
|  | select MBEDTLS_SHA1 | 
|  | select MBEDTLS_SHA224 | 
|  | select MBEDTLS_SHA256 | 
|  | select MBEDTLS_SHA384 | 
|  | select MBEDTLS_SHA512 | 
|  | select MBEDTLS_POLY1305 | 
|  |  | 
|  | config MBEDTLS_MD5 | 
|  | bool "MD5 hash algorithm" | 
|  |  | 
|  | config MBEDTLS_SHA1 | 
|  | bool "SHA-1 hash algorithm" | 
|  |  | 
|  | config MBEDTLS_SHA224 | 
|  | bool "SHA-224 hash algorithm" | 
|  |  | 
|  | config MBEDTLS_SHA256 | 
|  | bool "SHA-256 hash algorithm" | 
|  | default y | 
|  |  | 
|  | config MBEDTLS_SHA256_SMALLER | 
|  | bool "Smaller SHA-256 implementation" | 
|  | depends on MBEDTLS_SHA256 | 
|  | default y | 
|  | help | 
|  | Enable an implementation of SHA-256 that has a | 
|  | smaller ROM footprint but also lower performance. | 
|  |  | 
|  | config MBEDTLS_SHA384 | 
|  | bool "SHA-384 hash algorithm" | 
|  |  | 
|  | config MBEDTLS_SHA512 | 
|  | bool "SHA-512 hash algorithm" | 
|  |  | 
|  | config MBEDTLS_POLY1305 | 
|  | bool "Poly1305 hash family" | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | comment "Random number generators" | 
|  |  | 
|  | config MBEDTLS_CTR_DRBG_ENABLED | 
|  | bool "CTR_DRBG AES-256-based random generator" | 
|  | depends on MBEDTLS_CIPHER_AES_ENABLED | 
|  | default y | 
|  |  | 
|  | config MBEDTLS_HMAC_DRBG_ENABLED | 
|  | bool "HMAC_DRBG random generator" | 
|  | select MBEDTLS_MD | 
|  |  | 
|  | comment "Other configurations" | 
|  |  | 
|  | config MBEDTLS_CIPHER | 
|  | bool "generic cipher layer." | 
|  | default y if PSA_WANT_ALG_CMAC | 
|  |  | 
|  | config MBEDTLS_MD | 
|  | bool "generic message digest layer." | 
|  |  | 
|  | config MBEDTLS_GENPRIME_ENABLED | 
|  | bool "prime-number generation code." | 
|  |  | 
|  | config MBEDTLS_ASN1_PARSE_C | 
|  | bool "Support for ASN1 parser functions" | 
|  |  | 
|  | config MBEDTLS_PEM_CERTIFICATE_FORMAT | 
|  | bool "Support for PEM certificate format" | 
|  | help | 
|  | By default only DER (binary) format of certificates is supported. Enable | 
|  | this option to enable support for PEM format. | 
|  |  | 
|  | config MBEDTLS_HAVE_ASM | 
|  | bool "Use of assembly code" | 
|  | default y if !ARM | 
|  | help | 
|  | Enable use of assembly code in mbedTLS. This improves the performances | 
|  | of asymmetric cryptography, however this might have an impact on the | 
|  | code size. | 
|  |  | 
|  | config MBEDTLS_ENTROPY_C | 
|  | bool "Mbed TLS entropy accumulator" | 
|  | depends on MBEDTLS_SHA256 || MBEDTLS_SHA384 || MBEDTLS_SHA512 | 
|  | help | 
|  | This module gathers entropy data from enabled entropy sources. It's | 
|  | mostly used in conjunction with CTR_DRBG or HMAC_DRBG to create | 
|  | a deterministic random number generator. | 
|  |  | 
|  | config MBEDTLS_ENTROPY_POLL_ZEPHYR | 
|  | bool "Provide entropy data to Mbed TLS through entropy driver or random generator" | 
|  | default y | 
|  | depends on MBEDTLS_ENTROPY_C | 
|  | help | 
|  | Provide entropy data to the Mbed TLS's entropy module through either | 
|  | an entropy driver (if available in the system) or a generic random | 
|  | number generator. | 
|  | Warning: the latter choice is potentially non secure because it might | 
|  | end up using weaker/test-only sources (ex: random number generator | 
|  | built on system timer). | 
|  |  | 
|  | config MBEDTLS_OPENTHREAD_OPTIMIZATIONS_ENABLED | 
|  | bool "MbedTLS optimizations for OpenThread" | 
|  | depends on NET_L2_OPENTHREAD | 
|  | default y if !NET_SOCKETS_SOCKOPT_TLS | 
|  | help | 
|  | Enable some OpenThread specific mbedTLS optimizations that allows to | 
|  | save some RAM/ROM when OpenThread is used. Note, that when application | 
|  | aims to use other mbedTLS services on top of OpenThread (e.g. secure | 
|  | sockets), it's advised to disable this option. | 
|  |  | 
|  | config MBEDTLS_USER_CONFIG_ENABLE | 
|  | bool "User mbedTLS config file" | 
|  | help | 
|  | Enable user mbedTLS config file that will be included at the end of | 
|  | the generic config file. | 
|  |  | 
|  | config MBEDTLS_USER_CONFIG_FILE | 
|  | string "User configuration file for mbed TLS" if MBEDTLS_USER_CONFIG_ENABLE | 
|  | help | 
|  | User config file that can contain mbedTLS configs that were not | 
|  | covered by the generic config file. | 
|  |  | 
|  | config MBEDTLS_SERVER_NAME_INDICATION | 
|  | bool "Support for RFC 6066 server name indication (SNI) in SSL" | 
|  | help | 
|  | Enable this to support RFC 6066 server name indication (SNI) in SSL. | 
|  | This requires that MBEDTLS_X509_CRT_PARSE_C is also set. | 
|  |  | 
|  | config MBEDTLS_PK_WRITE_C | 
|  | bool "The generic public (asymmetric) key writer" | 
|  | help | 
|  | Enable generic public key write functions. | 
|  |  | 
|  | config MBEDTLS_HAVE_TIME_DATE | 
|  | bool "Date/time validation in mbed TLS" | 
|  | help | 
|  | System has time.h, time(), and an implementation for gmtime_r(). | 
|  | There also need to be a valid time source in the system, as mbedTLS | 
|  | expects a valid date/time for certificate validation." | 
|  |  | 
|  | config MBEDTLS_PKCS5_C | 
|  | bool "Password-based encryption functions" | 
|  | select MBEDTLS_MD | 
|  | help | 
|  | Enable PKCS5 functions | 
|  |  | 
|  | config MBEDTLS_SSL_CACHE_C | 
|  | bool "SSL session cache support" | 
|  | help | 
|  | "This option enables simple SSL cache implementation (server side)." | 
|  |  | 
|  | if MBEDTLS_SSL_CACHE_C | 
|  |  | 
|  | config MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT | 
|  | int "Default timeout for SSL cache entires" | 
|  | default 86400 | 
|  |  | 
|  | config MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES | 
|  | int "Maximum number of SSL cache entires" | 
|  | default 5 | 
|  |  | 
|  | endif # MBEDTLS_SSL_CACHE_C | 
|  |  | 
|  | config MBEDTLS_SSL_EXTENDED_MASTER_SECRET | 
|  | bool "(D)TLS Extended Master Secret extension" | 
|  | depends on MBEDTLS_TLS_VERSION_1_2 | 
|  | help | 
|  | Enable support for the (D)TLS Extended Master Secret extension | 
|  | which ensures that master secrets are different for every | 
|  | connection and every session. | 
|  |  | 
|  | choice MBEDTLS_PSA_CRYPTO_RNG_SOURCE | 
|  | prompt "Select random source for built-in PSA crypto" | 
|  | depends on MBEDTLS_PSA_CRYPTO_C | 
|  | # The only way to check if there is any entropy driver available on the | 
|  | # platform is to check if the "zephyr,entropy" chosen property exists. | 
|  | # CONFIG_CSPRNG_ENABLED cannot be used for this because it gets enabled by | 
|  | # entropy drivers but these are gated by CONFIG_ENTROPY_GENERATOR which | 
|  | # is disabled by default. | 
|  | default MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG if CSPRNG_AVAILABLE | 
|  | default MBEDTLS_PSA_CRYPTO_LEGACY_RNG | 
|  |  | 
|  | config MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG | 
|  | bool "Use a cryptographically secure driver as random source" | 
|  | select ENTROPY_GENERATOR | 
|  | help | 
|  | Use a cryptographically secure random generator to provide random data | 
|  | instead of legacy Mbed TLS modules. This has a smaller footprint | 
|  | than its legacy counterpart MBEDTLS_PSA_CRYPTO_LEGACY_RNG, but it | 
|  | requires a cryptographically secure random number generator (CSPRNG) | 
|  | to be available in the system. If no CSPRNG is available: | 
|  | - there is no fallback to weak entropy random generators. | 
|  | - the initialization of PSA crypto will fail and none of its API | 
|  | will be available. | 
|  |  | 
|  | config MBEDTLS_PSA_CRYPTO_LEGACY_RNG | 
|  | bool "Use legacy modules to generate random data" | 
|  | select MBEDTLS_ENTROPY_C | 
|  | select MBEDTLS_HMAC_DRBG_ENABLED if !MBEDTLS_CTR_DRBG_ENABLED | 
|  | # If there is any entropy driver in the system, then the choice would be | 
|  | # CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG. If we fall here, then the only | 
|  | # way to get some random data is to enable CONFIG_TEST_RANDOM_GENERATOR. | 
|  | select TEST_RANDOM_GENERATOR | 
|  | help | 
|  | Use legacy Mbed TLS modules to generate random data. In this | 
|  | configuration the entropy module is used to gather some data and then | 
|  | either ctr_drbg or hmac_drbg are applied on top of it to improve | 
|  | the randomness. | 
|  | Security level in this case really depends on the type of entropy | 
|  | sources which are enabled in the system: if weak entropy sources are | 
|  | used, then the generated data will only be pseudo random. Strong | 
|  | entropy sources are strongly recommended (if possible) to have real | 
|  | random data. | 
|  | Another difference betwen this implementation and the | 
|  | MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG counterpart is the memory footprint: | 
|  | this implementation brings in legacy modules which are not required | 
|  | in the "external" version, so the footprint is larger. | 
|  |  | 
|  | endchoice | 
|  |  | 
|  | config MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG_ALLOW_NON_CSPRNG | 
|  | bool "Allow non cryptographically secure random sources (for test only!)" | 
|  | depends on MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG | 
|  | help | 
|  | MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG is by default limited to rely only | 
|  | on cryptographically secure random number generators. However, only | 
|  | for test purposes, it might be useful to enable external random | 
|  | number generation, but have it using weak random sources (non | 
|  | cryptographically secure). | 
|  | Warning: this is meant to be enabled only for tests, not in production | 
|  | as the generated values are not cryptographically secure! | 
|  |  | 
|  | config MBEDTLS_PSA_CRYPTO_C | 
|  | bool "Platform Security Architecture cryptography API" | 
|  | depends on !BUILD_WITH_TFM | 
|  | default y if UOSCORE || UEDHOC | 
|  |  | 
|  | config MBEDTLS_USE_PSA_CRYPTO | 
|  | bool "Use PSA APIs instead of legacy MbedTLS when possible" | 
|  | default y if MBEDTLS_PSA_CRYPTO_CLIENT | 
|  | help | 
|  | Use PSA APIs instead of legacy MbedTLS functions in TLS/DTLS and other | 
|  | "intermediate" modules such as PK, MD and Cipher. | 
|  |  | 
|  | config MBEDTLS_PSA_CRYPTO_CLIENT | 
|  | bool | 
|  | default y | 
|  | depends on BUILD_WITH_TFM || MBEDTLS_PSA_CRYPTO_C | 
|  | select PSA_CRYPTO_CLIENT | 
|  |  | 
|  | config MBEDTLS_LMS | 
|  | bool "Support LMS signature schemes" | 
|  | depends on MBEDTLS_PSA_CRYPTO_CLIENT | 
|  | depends on MBEDTLS_SHA256 | 
|  | select PSA_WANT_ALG_SHA_256 | 
|  |  | 
|  | if MBEDTLS_PSA_CRYPTO_C | 
|  |  | 
|  | config MBEDTLS_PSA_P256M_DRIVER_ENABLED | 
|  | bool "P256-M driver" | 
|  | imply PSA_WANT_ALG_SHA_256 | 
|  | help | 
|  | Enable support for the optimized sofware implementation of the secp256r1 | 
|  | curve through the standard PSA API. | 
|  |  | 
|  | config MBEDTLS_PSA_P256M_DRIVER_RAW | 
|  | bool "Access p256-m driver directly (without PSA interface)" | 
|  | depends on MBEDTLS_PSA_P256M_DRIVER_ENABLED | 
|  | help | 
|  | Allow direct access to the p256-m driver interface. | 
|  | Warning: Usage of this Kconfig option is prohibited in Zephyr's codebase. | 
|  | Users can enable it in case of very memory-constrained devices, but be aware that the p256-m interface is absolutely not guaranted to remain stable over time. | 
|  |  | 
|  | config MBEDTLS_PSA_STATIC_KEY_SLOTS | 
|  | bool "Use statically allocated key buffers to store key material" | 
|  | default y if !MBEDTLS_ENABLE_HEAP | 
|  | help | 
|  | By default Mbed TLS's PSA Crypto core uses heap memory to store the | 
|  | key material for each key slot. This might impose an undesired | 
|  | requirement to support heap memory and its management code, affecting | 
|  | RAM and ROM footprints at the same time. | 
|  | Enabling this symbol causes Mbed TLS to pre-allocate all the key slot | 
|  | buffers that are used to store the key material at build time, thus | 
|  | removing the need for heap memory. Each buffer will be sized to | 
|  | contain the largest asymmetric/symmetric key type enabled in the build | 
|  | through PSA_WANT symbols. | 
|  |  | 
|  | config MBEDTLS_PSA_KEY_SLOT_COUNT | 
|  | int "Number of key slots in PSA Crypto core" | 
|  | default 16 | 
|  | help | 
|  | Set the number of key slots that are available in the PSA Crypto core. | 
|  | Be aware that each slot, even if unused, increases RAM consumption | 
|  | by ~40 bytes plus: | 
|  | * the length of the largest asymmetric/symmetric key type enabled in | 
|  | the build through PSA_WANT symbols, if MBEDTLS_PSA_STATIC_KEY_SLOTS | 
|  | is set. (This is all defined statically at build time). | 
|  | * the heap-allocated memory to store the key material of a given slot, | 
|  | if it is used and MBEDTLS_PSA_STATIC_KEY_SLOTS is not set. | 
|  |  | 
|  | endif # MBEDTLS_PSA_CRYPTO_C | 
|  |  | 
|  | config MBEDTLS_SSL_DTLS_CONNECTION_ID | 
|  | bool "DTLS Connection ID extension" | 
|  | depends on MBEDTLS_DTLS | 
|  | help | 
|  | Enable support for the DTLS Connection ID extension | 
|  | which allows to identify DTLS connections across changes | 
|  | in the underlying transport. | 
|  |  | 
|  |  | 
|  | config MBEDTLS_NIST_KW_C | 
|  | bool "NIST key wrap" | 
|  | depends on MBEDTLS_CIPHER_AES_ENABLED | 
|  | help | 
|  | Key Wrapping mode for 128-bit block ciphers, | 
|  | as defined in NIST SP 800-38F. | 
|  |  | 
|  | config MBEDTLS_DHM_C | 
|  | bool "Diffie-Hellman-Merkle mode" | 
|  | help | 
|  | Used by the following key exchanges, | 
|  | DHE-RSA, DHE-PSK | 
|  |  | 
|  | config MBEDTLS_X509_CRL_PARSE_C | 
|  | bool "X.509 CRL parsing" | 
|  | help | 
|  | Used by X.509 CRL parsing | 
|  |  | 
|  | config MBEDTLS_X509_CSR_WRITE_C | 
|  | bool "X.509 Certificate Signing Requests writing" | 
|  | help | 
|  | For X.509 certificate request writing. | 
|  |  | 
|  | config MBEDTLS_X509_CSR_PARSE_C | 
|  | bool "X.509 Certificate Signing Request parsing" | 
|  | help | 
|  | For reading X.509 certificate request. | 
|  |  | 
|  | config MBEDTLS_X509_CRT_WRITE_C | 
|  | bool "X.509 certificate creation" | 
|  |  | 
|  | endmenu |