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

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

config TINYCRYPT_SHA256
	bool "SHA-256 Hash function support"
	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"
	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"
	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"
	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.
endif
