# 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 prevent stuck symbol behavior.

rsource "Kconfig.psa.auto"
rsource "Kconfig.psa.logic"

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-mbedtls.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.mbedtls"

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).

module = MBEDTLS
module-str = Log level mbedTLS library debug hook
source "subsys/logging/Kconfig.template.log_config"

config MBEDTLS_DEBUG
	bool "mbed TLS debug activation"
	help
	  Enable debugging activation for mbed TLS configuration. If you use
	  mbedTLS/Zephyr integration (e.g. native TLS sockets), this will
	  activate debug logging.

	  If you use mbedTLS directly instead, you will need to perform
	  additional configuration yourself: call
	  mbedtls_ssl_conf_dbg(&mbedtls.conf, zephyr_mbedtls_debug, NULL);
	  function in your application. Alternatively implement your own debug
	  hook function if zephyr_mbedtls_debug() doesn't suit your needs.

if MBEDTLS_DEBUG

config MBEDTLS_DEBUG_LEVEL
	int
	default 4 if MBEDTLS_LOG_LEVEL_DBG
	default 3 if MBEDTLS_LOG_LEVEL_INF
	default 2 if MBEDTLS_LOG_LEVEL_WRN
	default 1 if MBEDTLS_LOG_LEVEL_ERR
	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

	  This makes Zephyr call mbedtls_debug_set_threshold() function during
	  mbedTLS initialization, with the configured debug log level.

choice MBEDTLS_DEBUG_EXTRACT_BASENAME
	prompt "Extract basename from filenames"
	default MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_BUILDTIME if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr"
	default MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_RUNTIME

config MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_BUILDTIME
	bool "Buildtime"
	help
	  Adds compile options, which should convert full source paths in
	  __FILE__ macro to files' basenames. This will reduce code footprint
	  when debug messages are enabled.

	  This is compiler dependent, so if it does not work then please
	  fallback to MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_RUNTIME instead.

config MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_RUNTIME
	bool "Runtime"
	help
	  Filename passed as argument to debug hook will be stripped from
	  directory, so that only basename part is left and logged.

config MBEDTLS_DEBUG_EXTRACT_BASENAME_DISABLED
	bool "Disabled"
	help
	  Disable basename extraction from filenames in log mesasges. This will
	  result in full paths or paths relative to west root directory
	  appearing in log messages generated by mbedTLS library.

endchoice

config MBEDTLS_DEBUG_STRIP_NEWLINE
	bool "Strip newlines"
	default y
	help
	  Attempt to strip last character from logged string when it is a
	  newline.

endif # MBEDTLS_DEBUG

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 "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, and MBEDTLS_INIT is enabled then the
	  Zephyr will, during the device startup, initialize the heap automatically.

if MBEDTLS_ENABLE_HEAP

config MBEDTLS_HEAP_SIZE
	int "Heap size for mbed TLS"
	default 10240 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
	default 512
	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_HEAP_CUSTOM_SECTION
	bool "Use a custom section for the Mbed TLS heap"
	help
	  Place Mbed TLS heap in custom section, with tag ".mbedtls_heap".
	  This can be used by custom linker scripts to relocate the Mbed TLS
	  heap to a custom location, such as another SRAM region or external memory.

endif # MBEDTLS_ENABLE_HEAP

config MBEDTLS_INIT
	bool "Initialize mbed TLS at boot"
	default y
	help
	  By default mbed TLS will be initialized at Zephyr init. Disabling this option
	  will defer the initialization until explicitly called.

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 MBEDTLS_ZEROIZE_ALT
	bool "mbed TLS alternate mbedtls_platform_zeroize implementation"
	help
	  mbed TLS configuration supplies an alternate implementation of
	  mbedtls_platform_zeroize.

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
