# 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 psudeo-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-Helman 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 Curbe 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.