# Kconfig - Cryptography primitive options for TinyCrypt

#
# Copyright (c) 2015 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

config TINYCRYPT
	bool
	prompt "Cryptography Support"
	default n
	help
	  This option enables the TinyCrypt cryptography library.

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

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

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

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

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

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

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

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

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

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