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


#
# CRYPTO options
#
menuconfig CRYPTO
	bool "Crypto Drivers [EXPERIMENTAL]"

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]"
	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]"
	select MBEDTLS
	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
