UPSTREAM: clk: rockchip: add the new clock ids for RK3228 HDMI
[firefly-linux-kernel-4.4.55.git] / crypto / Kconfig
index bf8148e74e73cbf4fb077a3b82a9301581c34d12..7240821137fde371f0e32d9ae8ac25b64ab58862 100644 (file)
@@ -23,7 +23,8 @@ comment "Crypto core or helper"
 
 config CRYPTO_FIPS
        bool "FIPS 200 compliance"
-       depends on CRYPTO_ANSI_CPRNG && !CRYPTO_MANAGER_DISABLE_TESTS
+       depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
+       depends on MODULE_SIG
        help
          This options enables the fips boot option which is
          required if you want to system to operate in a FIPS 200
@@ -47,6 +48,8 @@ config CRYPTO_AEAD
 config CRYPTO_AEAD2
        tristate
        select CRYPTO_ALGAPI2
+       select CRYPTO_NULL2
+       select CRYPTO_RNG2
 
 config CRYPTO_BLKCIPHER
        tristate
@@ -77,6 +80,10 @@ config CRYPTO_RNG2
        tristate
        select CRYPTO_ALGAPI2
 
+config CRYPTO_RNG_DEFAULT
+       tristate
+       select CRYPTO_DRBG_MENU
+
 config CRYPTO_PCOMP
        tristate
        select CRYPTO_PCOMP2
@@ -86,6 +93,23 @@ config CRYPTO_PCOMP2
        tristate
        select CRYPTO_ALGAPI2
 
+config CRYPTO_AKCIPHER2
+       tristate
+       select CRYPTO_ALGAPI2
+
+config CRYPTO_AKCIPHER
+       tristate
+       select CRYPTO_AKCIPHER2
+       select CRYPTO_ALGAPI
+
+config CRYPTO_RSA
+       tristate "RSA algorithm"
+       select CRYPTO_AKCIPHER
+       select MPILIB
+       select ASN1
+       help
+         Generic implementation of the RSA public key algorithm.
+
 config CRYPTO_MANAGER
        tristate "Cryptographic algorithm manager"
        select CRYPTO_MANAGER2
@@ -99,6 +123,7 @@ config CRYPTO_MANAGER2
        select CRYPTO_HASH2
        select CRYPTO_BLKCIPHER2
        select CRYPTO_PCOMP2
+       select CRYPTO_AKCIPHER2
 
 config CRYPTO_USER
        tristate "Userspace cryptographic algorithm configuration"
@@ -127,12 +152,16 @@ config CRYPTO_GF128MUL
 
 config CRYPTO_NULL
        tristate "Null algorithms"
-       select CRYPTO_ALGAPI
-       select CRYPTO_BLKCIPHER
-       select CRYPTO_HASH
+       select CRYPTO_NULL2
        help
          These are 'Null' algorithms, used by IPsec, which do nothing.
 
+config CRYPTO_NULL2
+       tristate
+       select CRYPTO_ALGAPI2
+       select CRYPTO_BLKCIPHER2
+       select CRYPTO_HASH2
+
 config CRYPTO_PCRYPT
        tristate "Parallel crypto engine"
        depends on SMP
@@ -157,12 +186,27 @@ config CRYPTO_CRYPTD
          converts an arbitrary synchronous software crypto algorithm
          into an asynchronous algorithm that executes in a kernel thread.
 
+config CRYPTO_MCRYPTD
+       tristate "Software async multi-buffer crypto daemon"
+       select CRYPTO_BLKCIPHER
+       select CRYPTO_HASH
+       select CRYPTO_MANAGER
+       select CRYPTO_WORKQUEUE
+       help
+         This is a generic software asynchronous crypto daemon that
+         provides the kernel thread to assist multi-buffer crypto
+         algorithms for submitting jobs and flushing jobs in multi-buffer
+         crypto algorithms.  Multi-buffer crypto algorithms are executed
+         in the context of this kernel thread and drivers can post
+         their crypto request asynchronously to be processed by this daemon.
+
 config CRYPTO_AUTHENC
        tristate "Authenc support"
        select CRYPTO_AEAD
        select CRYPTO_BLKCIPHER
        select CRYPTO_MANAGER
        select CRYPTO_HASH
+       select CRYPTO_NULL
        help
          Authenc: Combined mode wrapper for IPsec.
          This is required for IPSec.
@@ -174,9 +218,8 @@ config CRYPTO_TEST
        help
          Quick & dirty crypto test module.
 
-config CRYPTO_ABLK_HELPER_X86
+config CRYPTO_ABLK_HELPER
        tristate
-       depends on X86
        select CRYPTO_CRYPTD
 
 config CRYPTO_GLUE_HELPER_X86
@@ -203,15 +246,39 @@ config CRYPTO_GCM
          Support for Galois/Counter Mode (GCM) and Galois Message
          Authentication Code (GMAC). Required for IPSec.
 
+config CRYPTO_CHACHA20POLY1305
+       tristate "ChaCha20-Poly1305 AEAD support"
+       select CRYPTO_CHACHA20
+       select CRYPTO_POLY1305
+       select CRYPTO_AEAD
+       help
+         ChaCha20-Poly1305 AEAD support, RFC7539.
+
+         Support for the AEAD wrapper using the ChaCha20 stream cipher combined
+         with the Poly1305 authenticator. It is defined in RFC7539 for use in
+         IETF protocols.
+
 config CRYPTO_SEQIV
        tristate "Sequence Number IV Generator"
        select CRYPTO_AEAD
        select CRYPTO_BLKCIPHER
-       select CRYPTO_RNG
+       select CRYPTO_NULL
+       select CRYPTO_RNG_DEFAULT
        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_DEFAULT
+       default m
+       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
@@ -281,6 +348,13 @@ config CRYPTO_XTS
          key size 256, 384 or 512 bits. This implementation currently
          can't handle a sectorsize which is not a multiple of 16 bytes.
 
+config CRYPTO_KEYWRAP
+       tristate "Key wrapping support"
+       select CRYPTO_BLKCIPHER
+       help
+         Support for key wrapping (NIST SP800-38F / RFC3394) without
+         padding.
+
 comment "Hash modes"
 
 config CRYPTO_CMAC
@@ -376,12 +450,52 @@ config CRYPTO_CRC32_PCLMUL
          which will enable any routine to use the CRC-32-IEEE 802.3 checksum
          and gain better performance as compared with the table implementation.
 
+config CRYPTO_CRCT10DIF
+       tristate "CRCT10DIF algorithm"
+       select CRYPTO_HASH
+       help
+         CRC T10 Data Integrity Field computation is being cast as
+         a crypto transform.  This allows for faster crc t10 diff
+         transforms to be used if they are available.
+
+config CRYPTO_CRCT10DIF_PCLMUL
+       tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
+       depends on X86 && 64BIT && CRC_T10DIF
+       select CRYPTO_HASH
+       help
+         For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
+         CRC T10 DIF PCLMULQDQ computation can be hardware
+         accelerated PCLMULQDQ instruction. This option will create
+         'crct10dif-plcmul' module, which is faster when computing the
+         crct10dif checksum as compared with the generic table implementation.
+
 config CRYPTO_GHASH
        tristate "GHASH digest algorithm"
        select CRYPTO_GF128MUL
        help
          GHASH is message digest algorithm for GCM (Galois/Counter Mode).
 
+config CRYPTO_POLY1305
+       tristate "Poly1305 authenticator algorithm"
+       help
+         Poly1305 authenticator algorithm, RFC7539.
+
+         Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
+         It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
+         in IETF protocols. This is the portable C implementation of Poly1305.
+
+config CRYPTO_POLY1305_X86_64
+       tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
+       depends on X86 && 64BIT
+       select CRYPTO_POLY1305
+       help
+         Poly1305 authenticator algorithm, RFC7539.
+
+         Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
+         It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
+         in IETF protocols. This is the x86_64 assembler implementation using SIMD
+         instructions.
+
 config CRYPTO_MD4
        tristate "MD4 digest algorithm"
        select CRYPTO_HASH
@@ -394,6 +508,23 @@ config CRYPTO_MD5
        help
          MD5 message digest algorithm (RFC1321).
 
+config CRYPTO_MD5_OCTEON
+       tristate "MD5 digest algorithm (OCTEON)"
+       depends on CPU_CAVIUM_OCTEON
+       select CRYPTO_MD5
+       select CRYPTO_HASH
+       help
+         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
@@ -473,17 +604,18 @@ config CRYPTO_SHA1
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
 
 config CRYPTO_SHA1_SSSE3
-       tristate "SHA1 digest algorithm (SSSE3/AVX)"
+       tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
        depends on X86 && 64BIT
        select CRYPTO_SHA1
        select CRYPTO_HASH
        help
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
          using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
-         Extensions (AVX), when available.
+         Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
+         when available.
 
 config CRYPTO_SHA256_SSSE3
-       tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2)"
+       tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
        depends on X86 && 64BIT
        select CRYPTO_SHA256
        select CRYPTO_HASH
@@ -491,7 +623,8 @@ config CRYPTO_SHA256_SSSE3
          SHA-256 secure hash standard (DFIPS 180-2) implemented
          using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
          Extensions version 1 (AVX1), or Advanced Vector Extensions
-         version 2 (AVX2) instructions, when available.
+         version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
+         Instructions) when available.
 
 config CRYPTO_SHA512_SSSE3
        tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
@@ -504,23 +637,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
+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 sparc64 crypto instructions, when available.
+         using OCTEON crypto instructions, when available.
 
-config CRYPTO_SHA1_ARM
-       tristate "SHA1 digest algorithm (ARM-asm)"
-       depends on 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 assembler.
+         using sparc64 crypto instructions, when available.
 
 config CRYPTO_SHA1_PPC
        tristate "SHA1 digest algorithm (powerpc)"
@@ -529,6 +662,29 @@ 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
+       select CRYPTO_SHA1
+       select CRYPTO_HASH
+       select CRYPTO_MCRYPTD
+       help
+         SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
+         using multi-buffer technique.  This algorithm computes on
+         multiple data lanes concurrently with SIMD instructions for
+         better throughput.  It should not be enabled by default but
+         used when there is significant amount of work to keep the keep
+         the data lanes filled to get performance benefit.  If the data
+         lanes remain unfilled, a flush operation will be initiated to
+         process the crypto jobs, adding a slight latency.
+
 config CRYPTO_SHA256
        tristate "SHA224 and SHA256 digest algorithm"
        select CRYPTO_HASH
@@ -541,6 +697,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
@@ -562,6 +736,15 @@ config CRYPTO_SHA512
          This code also includes SHA-384, a 384 bit hash with 192 bits
          of security against collision attacks.
 
+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 OCTEON crypto instructions, when available.
+
 config CRYPTO_SHA512_SPARC64
        tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
        depends on SPARC64
@@ -676,7 +859,7 @@ config CRYPTO_AES_NI_INTEL
        select CRYPTO_AES_X86_64 if 64BIT
        select CRYPTO_AES_586 if !64BIT
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_ALGAPI
        select CRYPTO_GLUE_HELPER_X86 if 64BIT
        select CRYPTO_LRW
@@ -733,29 +916,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.
+         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"
@@ -820,25 +992,6 @@ config CRYPTO_BLOWFISH_X86_64
          See also:
          <http://www.schneier.com/blowfish.html>
 
-config CRYPTO_BLOWFISH_AVX2_X86_64
-       tristate "Blowfish cipher algorithm (x86_64/AVX2)"
-       depends on X86 && 64BIT
-       depends on BROKEN
-       select CRYPTO_ALGAPI
-       select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
-       select CRYPTO_BLOWFISH_COMMON
-       select CRYPTO_BLOWFISH_X86_64
-       help
-         Blowfish cipher algorithm (x86_64/AVX2), by Bruce Schneier.
-
-         This is a variable key length cipher which can use keys from 32
-         bits to 448 bits in length.  It's fast, simple and specifically
-         designed for use on "large microprocessors".
-
-         See also:
-         <http://www.schneier.com/blowfish.html>
-
 config CRYPTO_CAMELLIA
        tristate "Camellia cipher algorithms"
        depends on CRYPTO
@@ -879,7 +1032,7 @@ config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
        depends on CRYPTO
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_CAMELLIA_X86_64
        select CRYPTO_LRW
@@ -901,7 +1054,7 @@ config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
        depends on CRYPTO
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_CAMELLIA_X86_64
        select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
@@ -953,7 +1106,7 @@ config CRYPTO_CAST5_AVX_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_CAST_COMMON
        select CRYPTO_CAST5
        help
@@ -976,7 +1129,7 @@ config CRYPTO_CAST6_AVX_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_CAST_COMMON
        select CRYPTO_CAST6
@@ -1004,6 +1157,19 @@ config CRYPTO_DES_SPARC64
          DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
          optimized using SPARC64 crypto opcodes.
 
+config CRYPTO_DES3_EDE_X86_64
+       tristate "Triple DES EDE cipher algorithm (x86-64)"
+       depends on X86 && 64BIT
+       select CRYPTO_ALGAPI
+       select CRYPTO_DES
+       help
+         Triple DES EDE (FIPS 46-3) algorithm.
+
+         This module provides implementation of the Triple DES EDE cipher
+         algorithm that is optimized for x86-64 processors. Two versions of
+         algorithm are provided; regular processing one input block and
+         one that processes three blocks parallel.
+
 config CRYPTO_FCRYPT
        tristate "FCrypt cipher algorithm"
        select CRYPTO_ALGAPI
@@ -1062,6 +1228,34 @@ config CRYPTO_SALSA20_X86_64
          The Salsa20 stream cipher algorithm is designed by Daniel J.
          Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
 
+config CRYPTO_CHACHA20
+       tristate "ChaCha20 cipher algorithm"
+       select CRYPTO_BLKCIPHER
+       help
+         ChaCha20 cipher algorithm, RFC7539.
+
+         ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
+         Bernstein and further specified in RFC7539 for use in IETF protocols.
+         This is the portable C implementation of ChaCha20.
+
+         See also:
+         <http://cr.yp.to/chacha/chacha-20080128.pdf>
+
+config CRYPTO_CHACHA20_X86_64
+       tristate "ChaCha20 cipher algorithm (x86_64/SSSE3/AVX2)"
+       depends on X86 && 64BIT
+       select CRYPTO_BLKCIPHER
+       select CRYPTO_CHACHA20
+       help
+         ChaCha20 cipher algorithm, RFC7539.
+
+         ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
+         Bernstein and further specified in RFC7539 for use in IETF protocols.
+         This is the x86_64 assembler implementation using SIMD instructions.
+
+         See also:
+         <http://cr.yp.to/chacha/chacha-20080128.pdf>
+
 config CRYPTO_SEED
        tristate "SEED cipher algorithm"
        select CRYPTO_ALGAPI
@@ -1094,7 +1288,7 @@ config CRYPTO_SERPENT_SSE2_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_SERPENT
        select CRYPTO_LRW
@@ -1105,7 +1299,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:
@@ -1116,7 +1310,7 @@ config CRYPTO_SERPENT_SSE2_586
        depends on X86 && !64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_SERPENT
        select CRYPTO_LRW
@@ -1138,7 +1332,7 @@ config CRYPTO_SERPENT_AVX_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_SERPENT
        select CRYPTO_LRW
@@ -1160,7 +1354,7 @@ config CRYPTO_SERPENT_AVX2_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_SERPENT
        select CRYPTO_SERPENT_AVX_X86_64
@@ -1276,7 +1470,7 @@ config CRYPTO_TWOFISH_AVX_X86_64
        depends on X86 && 64BIT
        select CRYPTO_ALGAPI
        select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
+       select CRYPTO_ABLK_HELPER
        select CRYPTO_GLUE_HELPER_X86
        select CRYPTO_TWOFISH_COMMON
        select CRYPTO_TWOFISH_X86_64
@@ -1297,31 +1491,6 @@ config CRYPTO_TWOFISH_AVX_X86_64
          See also:
          <http://www.schneier.com/twofish.html>
 
-config CRYPTO_TWOFISH_AVX2_X86_64
-       tristate "Twofish cipher algorithm (x86_64/AVX2)"
-       depends on X86 && 64BIT
-       depends on BROKEN
-       select CRYPTO_ALGAPI
-       select CRYPTO_CRYPTD
-       select CRYPTO_ABLK_HELPER_X86
-       select CRYPTO_GLUE_HELPER_X86
-       select CRYPTO_TWOFISH_COMMON
-       select CRYPTO_TWOFISH_X86_64
-       select CRYPTO_TWOFISH_X86_64_3WAY
-       select CRYPTO_TWOFISH_AVX_X86_64
-       select CRYPTO_LRW
-       select CRYPTO_XTS
-       help
-         Twofish cipher algorithm (x86_64/AVX2).
-
-         Twofish was submitted as an AES (Advanced Encryption Standard)
-         candidate cipher by researchers at CounterPane Systems.  It is a
-         16 round block cipher supporting key sizes of 128, 192, and 256
-         bits.
-
-         See also:
-         <http://www.schneier.com/twofish.html>
-
 comment "Compression"
 
 config CRYPTO_DEFLATE
@@ -1354,18 +1523,32 @@ 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.
 
+config CRYPTO_LZ4
+       tristate "LZ4 compression algorithm"
+       select CRYPTO_ALGAPI
+       select LZ4_COMPRESS
+       select LZ4_DECOMPRESS
+       help
+         This is the LZ4 algorithm.
+
+config CRYPTO_LZ4HC
+       tristate "LZ4HC compression algorithm"
+       select CRYPTO_ALGAPI
+       select LZ4HC_COMPRESS
+       select LZ4_DECOMPRESS
+       help
+         This is the LZ4 high compression mode algorithm.
+
 comment "Random Number Generation"
 
 config CRYPTO_ANSI_CPRNG
        tristate "Pseudo Random Number Generation for Cryptographic modules"
-       default m
        select CRYPTO_AES
        select CRYPTO_RNG
        help
@@ -1374,6 +1557,49 @@ config CRYPTO_ANSI_CPRNG
          ANSI X9.31 A.2.4. Note that this option must be enabled if
          CRYPTO_FIPS is selected
 
+menuconfig CRYPTO_DRBG_MENU
+       tristate "NIST SP800-90A DRBG"
+       help
+         NIST SP800-90A compliant DRBG. In the following submenu, one or
+         more of the DRBG types must be selected.
+
+if CRYPTO_DRBG_MENU
+
+config CRYPTO_DRBG_HMAC
+       bool
+       default y
+       select CRYPTO_HMAC
+       select CRYPTO_SHA256
+
+config CRYPTO_DRBG_HASH
+       bool "Enable Hash DRBG"
+       select CRYPTO_SHA256
+       help
+         Enable the Hash DRBG variant as defined in NIST SP800-90A.
+
+config CRYPTO_DRBG_CTR
+       bool "Enable CTR DRBG"
+       select CRYPTO_AES
+       help
+         Enable the CTR DRBG variant as defined in NIST SP800-90A.
+
+config CRYPTO_DRBG
+       tristate
+       default CRYPTO_DRBG_MENU
+       select CRYPTO_RNG
+       select CRYPTO_JITTERENTROPY
+
+endif  # if CRYPTO_DRBG_MENU
+
+config CRYPTO_JITTERENTROPY
+       tristate "Jitterentropy Non-Deterministic Random Number Generator"
+       help
+         The Jitterentropy RNG is a noise that is intended
+         to provide seed to another RNG. The RNG does not
+         perform any cryptographic whitening of the generated
+         random numbers. This Jitterentropy RNG registers with
+         the kernel crypto API and can be used by any caller.
+
 config CRYPTO_USER_API
        tristate
 
@@ -1395,7 +1621,29 @@ config CRYPTO_USER_API_SKCIPHER
          This option enables the user-spaces interface for symmetric
          key cipher algorithms.
 
+config CRYPTO_USER_API_RNG
+       tristate "User-space interface for random number generator algorithms"
+       depends on NET
+       select CRYPTO_RNG
+       select CRYPTO_USER_API
+       help
+         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
+
 source "drivers/crypto/Kconfig"
 source crypto/asymmetric_keys/Kconfig
+source certs/Kconfig
 
 endif  # if CRYPTO