# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config BT_CRYPTO
	bool
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CMAC
	help
	  This option enables the Bluetooth Cryptographic Toolbox.

config BT_DEBUG_CRYPTO
	bool "Bluetooth Cryptographic Toolbox debug"
	depends on BT_CRYPTO
	help
	  This option enables debug log output for the Bluetooth
	  Cryptographic Toolbox.

	  WARNING: This option prints out private security keys such as
	  the Long Term Key.
	  Use of this feature in production is strongly discouraged.
