# Kconfig - Cryptography primitive options for TinyCrypt version 2.0

#
# Copyright (c) 2015 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

config TINYCRYPT
	bool "TinyCrypt Support"
	help
	  This option enables the TinyCrypt cryptography library.

config TINYCRYPT_CTR_PRNG
	bool "PRNG in counter mode"
	depends on TINYCRYPT
	help
	  This option enables support for the pseudo-random number
	  generator in counter mode.

config TINYCRYPT_SHA256
	bool "SHA-256 Hash function support"
	depends on TINYCRYPT
	help
	  This option enables support for SHA-256
	  hash function primitive.

config TINYCRYPT_SHA256_HMAC
	bool "HMAC (via SHA256) message auth support"
	depends on TINYCRYPT_SHA256
	help
	  This option enables support for HMAC using SHA-256
	  message authentication code.

config TINYCRYPT_SHA256_HMAC_PRNG
	bool "PRNG (via HMAC-SHA256) support"
	depends on TINYCRYPT_SHA256_HMAC
	help
	  This option enables support for pseudo-random number
	  generator.

config TINYCRYPT_ECC_DH
	bool "ECC_DH anonymous key agreement protocol"
	depends on TINYCRYPT
	select ENTROPY_GENERATOR
	help
	  This option enables support for the Elliptic curve
	  Diffie-Hellman anonymous key agreement protocol.

	  Enabling ECC requires a cryptographically secure random number
	  generator.

config TINYCRYPT_ECC_DSA
	bool "ECC_DSA digital signature algorithm"
	depends on TINYCRYPT
	select ENTROPY_GENERATOR
	help
	  This option enables support for the Elliptic Curve Digital
	  Signature Algorithm (ECDSA).

	  Enabling ECC requires a cryptographically secure random number
	  generator.

config TINYCRYPT_AES
	bool "AES-128 decrypt/encrypt"
	depends on TINYCRYPT
	help
	  This option enables support for AES-128 decrypt and encrypt.

config TINYCRYPT_AES_CBC
	bool "AES-128 block cipher"
	depends on TINYCRYPT_AES
	help
	  This option enables support for AES-128 block cipher mode.

config TINYCRYPT_AES_CTR
	bool "AES-128 counter mode"
	depends on TINYCRYPT_AES
	help
	  This option enables support for AES-128 counter mode.

config TINYCRYPT_AES_CCM
	bool "AES-128 CCM mode"
	depends on TINYCRYPT_AES
	help
	  This option enables support for AES-128 CCM mode.

config TINYCRYPT_AES_CMAC
	bool "AES-128 CMAC mode"
	depends on TINYCRYPT_AES
	help
	  This option enables support for AES-128 CMAC mode.
