# Cryptography primitive options for mbed TLS # Copyright (c) 2016 Intel Corporation # SPDX-License-Identifier: Apache-2.0 config ZEPHYR_MBEDTLS_MODULE bool config MBEDTLS_PROMPTLESS bool help Symbol to disable the prompt for MBEDTLS selection. This symbol may be used internally in a Kconfig tree to hide the mbed TLS menu prompt and instead handle the selection of MBEDTLS from dependent sub-configurations and thus preven stuck symbol behavior. menuconfig MBEDTLS bool "mbed TLS Support" if !MBEDTLS_PROMPTLESS help This option enables the mbedTLS cryptography library. if MBEDTLS choice MBEDTLS_IMPLEMENTATION prompt "Select implementation" default MBEDTLS_BUILTIN config MBEDTLS_BUILTIN bool "Use Zephyr in-tree mbedTLS version" help Link with mbedTLS sources included with Zephyr distribution. Included mbedTLS version is well integrated with and supported by Zephyr, and the recommended choice for most users. config MBEDTLS_LIBRARY bool "Use external mbedTLS library" help Use external, out-of-tree prebuilt mbedTLS library. For advanced users only. endchoice config CUSTOM_MBEDTLS_CFG_FILE bool "Custom mbed TLS configuration file" help Allow user defined input for the MBEDTLS_CFG_FILE setting. You can specify the actual configuration file using the MBEDTLS_CFG_FILE setting. config MBEDTLS_CFG_FILE string "mbed TLS configuration file" if CUSTOM_MBEDTLS_CFG_FILE depends on MBEDTLS_BUILTIN default "config-tls-generic.h" help Use a specific mbedTLS configuration file. The default config file file can be tweaked with Kconfig. The default configuration is suitable to communicate with majority of HTTPS servers on the Internet, but has relatively many features enabled. To optimize resources for special TLS usage, use available Kconfig options, or select an alternative config. rsource "Kconfig.tls-generic" config MBEDTLS_SSL_MAX_CONTENT_LEN int "Max payload size for TLS protocol message" default 1500 depends on MBEDTLS_BUILTIN help The TLS standards mandate max payload size of 16384 bytes. So, for maximum operability and for general-purpose usage, that value must be used. For specific usages, that value can be largely decreased. E.g. for DTLS, payload size is limited by UDP datagram size, and even for HTTPS REST API, the payload can be limited to max size of (REST request, REST response, server certificate(s)). mbedTLS uses this value separate for input and output buffers, so twice this value will be allocated (on mbedTLS own heap, so the value of MBEDTLS_HEAP_SIZE should accommodate that). config MBEDTLS_DEBUG bool "mbed TLS debug activation" depends on MBEDTLS_BUILTIN help Enable debugging activation for mbed TLS configuration. If you use mbedTLS/Zephyr integration (e.g. net_app), this will activate debug logging (of the level configured by MBEDTLS_DEBUG_LEVEL). If you use mbedTLS directly instead, you will need to perform additional configuration yourself: call mbedtls_ssl_conf_dbg(&mbedtls.conf, my_debug, NULL); mbedtls_debug_set_threshold(level); functions in your application, and create the my_debug() function to actually print something useful. config MBEDTLS_DEBUG_LEVEL int "mbed TLS default debug level" depends on MBEDTLS_DEBUG default 0 range 0 4 help Default mbed TLS debug logging level for Zephyr integration code (from ext/lib/crypto/mbedtls/include/mbedtls/debug.h): 0 No debug 1 Error 2 State change 3 Information 4 Verbose config MBEDTLS_MEMORY_DEBUG bool "mbed TLS memory debug activation" depends on MBEDTLS_BUILTIN help Enable debugging of buffer allocator memory issues. Automatically prints (to stderr) all (fatal) messages on memory allocation issues. Enables function for 'debug output' of allocated memory. config MBEDTLS_TEST bool "Compile internal self test functions" depends on MBEDTLS_BUILTIN help Enable self test function for the crypto algorithms config MBEDTLS_INSTALL_PATH string "mbedTLS install path" depends on MBEDTLS_LIBRARY help This option holds the path where the mbedTLS libraries and headers are installed. Make sure this option is properly set when MBEDTLS_LIBRARY is enabled otherwise the build will fail. config MBEDTLS_ENABLE_HEAP bool "Enable global heap for mbed TLS" help This option enables the mbedtls to use the heap. This setting must be global so that various applications and libraries in Zephyr do not try to do this themselves as there can be only one heap defined in mbedtls. If this is enabled, then the Zephyr will, during the device startup, initialize the heap automatically. config MBEDTLS_HEAP_SIZE int "Heap size for mbed TLS" default 10240 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER default 512 depends on MBEDTLS_ENABLE_HEAP help The mbedtls routines will use this heap if enabled. See ext/lib/crypto/mbedtls/include/mbedtls/config.h and MBEDTLS_MEMORY_BUFFER_ALLOC_C option for details. That option is not enabled by default. Default value for the heap size is not set as it depends on the application. For streaming communication with arbitrary (HTTPS) servers on the Internet, 32KB + overheads (up to another 20KB) may be needed. For some dedicated and specific usage of mbedtls API, the 1000 bytes might be ok. config MBEDTLS_SHELL bool "mbed TLS shell" depends on MBEDTLS depends on SHELL help Enable mbed TLS shell module, which allows to show debug information about mbed TLS library, such as heap usage. config APP_LINK_WITH_MBEDTLS bool "Link 'app' with MBEDTLS" default y help Add MBEDTLS header files to the 'app' include path. It may be disabled if the include paths for MBEDTLS are causing aliasing issues for 'app'. endif # MBEDTLS