crypto: echainiv - Add encrypted chain IV generator
[cascardo/linux.git] / crypto / Kconfig
index 50f4da4..b7088d1 100644 (file)
@@ -221,11 +221,22 @@ config CRYPTO_SEQIV
        tristate "Sequence Number IV Generator"
        select CRYPTO_AEAD
        select CRYPTO_BLKCIPHER
+       select CRYPTO_NULL
        select CRYPTO_RNG
        help
          This IV generator generates an IV based on a sequence number by
          xoring it with a salt.  This algorithm is mainly useful for CTR
 
+config CRYPTO_ECHAINIV
+       tristate "Encrypted Chain IV Generator"
+       select CRYPTO_AEAD
+       select CRYPTO_NULL
+       select CRYPTO_RNG
+       help
+         This IV generator generates an IV based on the encryption of
+         a sequence number xored with a salt.  This is the default
+         algorithm for CBC.
+
 comment "Block modes"
 
 config CRYPTO_CBC
@@ -436,6 +447,14 @@ config CRYPTO_MD5_OCTEON
          MD5 message digest algorithm (RFC1321) implemented
          using OCTEON crypto instructions, when available.
 
+config CRYPTO_MD5_PPC
+       tristate "MD5 digest algorithm (PPC)"
+       depends on PPC
+       select CRYPTO_HASH
+       help
+         MD5 message digest algorithm (RFC1321) implemented
+         in PPC assembler.
+
 config CRYPTO_MD5_SPARC64
        tristate "MD5 digest algorithm (SPARC64)"
        depends on SPARC64
@@ -546,34 +565,23 @@ config CRYPTO_SHA512_SSSE3
          Extensions version 1 (AVX1), or Advanced Vector Extensions
          version 2 (AVX2) instructions, when available.
 
-config CRYPTO_SHA1_SPARC64
-       tristate "SHA1 digest algorithm (SPARC64)"
-       depends on SPARC64
-       select CRYPTO_SHA1
-       select CRYPTO_HASH
-       help
-         SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
-         using sparc64 crypto instructions, when available.
-
-config CRYPTO_SHA1_ARM
-       tristate "SHA1 digest algorithm (ARM-asm)"
-       depends on ARM
+config CRYPTO_SHA1_OCTEON
+       tristate "SHA1 digest algorithm (OCTEON)"
+       depends on CPU_CAVIUM_OCTEON
        select CRYPTO_SHA1
        select CRYPTO_HASH
        help
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
-         using optimized ARM assembler.
+         using OCTEON crypto instructions, when available.
 
-config CRYPTO_SHA1_ARM_NEON
-       tristate "SHA1 digest algorithm (ARM NEON)"
-       depends on ARM && KERNEL_MODE_NEON
-       select CRYPTO_SHA1_ARM
+config CRYPTO_SHA1_SPARC64
+       tristate "SHA1 digest algorithm (SPARC64)"
+       depends on SPARC64
        select CRYPTO_SHA1
        select CRYPTO_HASH
        help
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
-         using optimized ARM NEON assembly, when NEON instructions are
-         available.
+         using sparc64 crypto instructions, when available.
 
 config CRYPTO_SHA1_PPC
        tristate "SHA1 digest algorithm (powerpc)"
@@ -582,6 +590,13 @@ config CRYPTO_SHA1_PPC
          This is the powerpc hardware accelerated implementation of the
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
 
+config CRYPTO_SHA1_PPC_SPE
+       tristate "SHA1 digest algorithm (PPC SPE)"
+       depends on PPC && SPE
+       help
+         SHA-1 secure hash standard (DFIPS 180-4) implemented
+         using powerpc SPE SIMD instruction set.
+
 config CRYPTO_SHA1_MB
        tristate "SHA1 digest algorithm (x86_64 Multi-Buffer, Experimental)"
        depends on X86 && 64BIT
@@ -610,6 +625,24 @@ config CRYPTO_SHA256
          This code also includes SHA-224, a 224 bit hash with 112 bits
          of security against collision attacks.
 
+config CRYPTO_SHA256_PPC_SPE
+       tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
+       depends on PPC && SPE
+       select CRYPTO_SHA256
+       select CRYPTO_HASH
+       help
+         SHA224 and SHA256 secure hash standard (DFIPS 180-2)
+         implemented using powerpc SPE SIMD instruction set.
+
+config CRYPTO_SHA256_OCTEON
+       tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
+       depends on CPU_CAVIUM_OCTEON
+       select CRYPTO_SHA256
+       select CRYPTO_HASH
+       help
+         SHA-256 secure hash standard (DFIPS 180-2) implemented
+         using OCTEON crypto instructions, when available.
+
 config CRYPTO_SHA256_SPARC64
        tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
        depends on SPARC64
@@ -631,29 +664,23 @@ config CRYPTO_SHA512
          This code also includes SHA-384, a 384 bit hash with 192 bits
          of security against collision attacks.
 
-config CRYPTO_SHA512_SPARC64
-       tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
-       depends on SPARC64
+config CRYPTO_SHA512_OCTEON
+       tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
+       depends on CPU_CAVIUM_OCTEON
        select CRYPTO_SHA512
        select CRYPTO_HASH
        help
          SHA-512 secure hash standard (DFIPS 180-2) implemented
-         using sparc64 crypto instructions, when available.
+         using OCTEON crypto instructions, when available.
 
-config CRYPTO_SHA512_ARM_NEON
-       tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
-       depends on ARM && KERNEL_MODE_NEON
+config CRYPTO_SHA512_SPARC64
+       tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
+       depends on SPARC64
        select CRYPTO_SHA512
        select CRYPTO_HASH
        help
          SHA-512 secure hash standard (DFIPS 180-2) implemented
-         using ARM NEON instructions, when available.
-
-         This version of SHA implements a 512 bit hash with 256 bits of
-         security against collision attacks.
-
-         This code also includes SHA-384, a 384 bit hash with 192 bits
-         of security against collision attacks.
+         using sparc64 crypto instructions, when available.
 
 config CRYPTO_TGR192
        tristate "Tiger digest algorithms"
@@ -817,45 +844,18 @@ config CRYPTO_AES_SPARC64
          for some popular block cipher mode is supported too, including
          ECB and CBC.
 
-config CRYPTO_AES_ARM
-       tristate "AES cipher algorithms (ARM-asm)"
-       depends on ARM
-       select CRYPTO_ALGAPI
-       select CRYPTO_AES
+config CRYPTO_AES_PPC_SPE
+       tristate "AES cipher algorithms (PPC SPE)"
+       depends on PPC && SPE
        help
-         Use optimized AES assembler routines for ARM platforms.
-
-         AES cipher algorithms (FIPS-197). AES uses the Rijndael
-         algorithm.
-
-         Rijndael appears to be consistently a very good performer in
-         both hardware and software across a wide range of computing
-         environments regardless of its use in feedback or non-feedback
-         modes. Its key setup time is excellent, and its key agility is
-         good. Rijndael's very low memory requirements make it very well
-         suited for restricted-space environments, in which it also
-         demonstrates excellent performance. Rijndael's operations are
-         among the easiest to defend against power and timing attacks.
-
-         The AES specifies three key sizes: 128, 192 and 256 bits
-
-         See <http://csrc.nist.gov/encryption/aes/> for more information.
-
-config CRYPTO_AES_ARM_BS
-       tristate "Bit sliced AES using NEON instructions"
-       depends on ARM && KERNEL_MODE_NEON
-       select CRYPTO_ALGAPI
-       select CRYPTO_AES_ARM
-       select CRYPTO_ABLK_HELPER
-       help
-         Use a faster and more secure NEON based implementation of AES in CBC,
-         CTR and XTS modes
-
-         Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
-         and for XTS mode encryption, CBC and XTS mode decryption speedup is
-         around 25%. (CBC encryption speed is not affected by this driver.)
-         This implementation does not rely on any lookup tables so it is
-         believed to be invulnerable to cache timing attacks.
+         AES cipher algorithms (FIPS-197). Additionally the acceleration
+         for popular block cipher modes ECB, CBC, CTR and XTS is supported.
+         This module should only be used for low power (router) devices
+         without hardware AES acceleration (e.g. caam crypto). It reduces the
+         size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
+         timining attacks. Nevertheless it might be not as secure as other
+         architecture specific assembler implementations that work on 1KB
+         tables or 256 bytes S-boxes.
 
 config CRYPTO_ANUBIS
        tristate "Anubis cipher algorithm"
@@ -1199,7 +1199,7 @@ config CRYPTO_SERPENT_SSE2_X86_64
          Keys are allowed to be from 0 to 256 bits in length, in steps
          of 8 bits.
 
-         This module provides Serpent cipher algorithm that processes eigth
+         This module provides Serpent cipher algorithm that processes eight
          blocks parallel using SSE2 instruction set.
 
          See also:
@@ -1423,10 +1423,9 @@ config CRYPTO_LZO
 
 config CRYPTO_842
        tristate "842 compression algorithm"
-       depends on CRYPTO_DEV_NX_COMPRESS
-       # 842 uses lzo if the hardware becomes unavailable
-       select LZO_COMPRESS
-       select LZO_DECOMPRESS
+       select CRYPTO_ALGAPI
+       select 842_COMPRESS
+       select 842_DECOMPRESS
        help
          This is the 842 algorithm.
 
@@ -1523,6 +1522,15 @@ config CRYPTO_USER_API_RNG
          This option enables the user-spaces interface for random
          number generator algorithms.
 
+config CRYPTO_USER_API_AEAD
+       tristate "User-space interface for AEAD cipher algorithms"
+       depends on NET
+       select CRYPTO_AEAD
+       select CRYPTO_USER_API
+       help
+         This option enables the user-spaces interface for AEAD
+         cipher algorithms.
+
 config CRYPTO_HASH_INFO
        bool