# Kconfig - Crypto configuration options
#
# Copyright (c) 2017 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#


#
# CRYPTO options
#
menuconfig CRYPTO
	bool
	prompt "Crypto Drivers [EXPERIMENTAL]"
	default n

if CRYPTO

config CRYPTO_INIT_PRIORITY
	int "Crypto devices init priority"
	default 90
	help
	  Crypto devices initialization priority.

config SYS_LOG_CRYPTO_LEVEL
	int "Crypto drivers log level"
	default 0
	depends on SYS_LOG
	help
	  Sets log level for crypto drivers

	  Levels are:

	  - 0 OFF, do not write

	  - 1 ERROR, only write SYS_LOG_ERR

	  - 2 WARNING, write SYS_LOG_WRN in addition to previous level

	  - 3 INFO, write SYS_LOG_INF in addition to previous levels

	  - 4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config CRYPTO_TINYCRYPT_SHIM
	bool "Enable TinyCrypt shim driver [EXPERIMENTAL] "
	default n
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CBC
	select TINYCRYPT_AES_CTR
	select TINYCRYPT_AES_CCM
	select TINYCRYPT_AES_CMAC
	help
	  Enable TinyCrypt shim layer compliant with crypto APIs.

config CRYPTO_TINYCRYPT_SHIM_MAX_SESSION
	int "Maximum of sessions TinyCrypt shim driver can handle"
	default 2
	depends on CRYPTO_TINYCRYPT_SHIM
	help
	  This can be used to tweak the amount of sessions the driver
	  can handle in parallel.

config CRYPTO_TINYCRYPT_SHIM_DRV_NAME
	string "Device name for TinyCrypt Pseudo device"
	default "CRYPTO_TC"
	depends on CRYPTO_TINYCRYPT_SHIM
	help
	  Device name for TinyCrypt Pseudo device.

config CRYPTO_MBEDTLS_SHIM
	bool "Enable mbedTLS shim driver [EXPERIMENTAL] "
	default n
	select MBEDTLS
	select MBEDTLS_BUILTIN
	select MBEDTLS_ENABLE_HEAP
	help
	  Enable mbedTLS shim layer compliant with crypto APIs. You will need
	  to fill in a relevant value to CONFIG_MBEDTLS_HEAP_SIZE.

config CRYPTO_MBEDTLS_SHIM_DRV_NAME
	string "Device name for mbedTLS Pseudo device"
	default "CRYPTO_MTLS"
	depends on CRYPTO_MBEDTLS_SHIM
	help
	  Device name for mbedTLS Pseudo device.

config CRYPTO_MBEDTLS_SHIM_MAX_SESSION
	int "Maximum of sessions mbedTLS shim driver can handle"
	default 2
	depends on CRYPTO_MBEDTLS_SHIM
	help
	  This can be used to tweak the amount of sessions the driver
	  can handle in parallel.

source "drivers/crypto/Kconfig.ataes132a"

endif # CRYPTO
