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