xref: /linux/arch/x86/crypto/Kconfig (revision 3f342a23257df99b792c1edb1236e85badc157de)
128a936efSRobert Elliott# SPDX-License-Identifier: GPL-2.0
228a936efSRobert Elliott
328a936efSRobert Elliottmenu "Accelerated Cryptographic Algorithms for CPU (x86)"
428a936efSRobert Elliott
528a936efSRobert Elliottconfig CRYPTO_CURVE25519_X86
605b37465SRobert Elliott	tristate "Public key crypto: Curve25519 (ADX)"
728a936efSRobert Elliott	depends on X86 && 64BIT
828a936efSRobert Elliott	select CRYPTO_LIB_CURVE25519_GENERIC
928a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
1005b37465SRobert Elliott	help
1105b37465SRobert Elliott	  Curve25519 algorithm
1205b37465SRobert Elliott
1305b37465SRobert Elliott	  Architecture: x86_64 using:
1405b37465SRobert Elliott	  - ADX (large integer arithmetic)
1528a936efSRobert Elliott
1628a936efSRobert Elliottconfig CRYPTO_AES_NI_INTEL
1728a936efSRobert Elliott	tristate "AES cipher algorithms (AES-NI)"
1828a936efSRobert Elliott	depends on X86
1928a936efSRobert Elliott	select CRYPTO_AEAD
2028a936efSRobert Elliott	select CRYPTO_LIB_AES
2128a936efSRobert Elliott	select CRYPTO_ALGAPI
2228a936efSRobert Elliott	select CRYPTO_SKCIPHER
2328a936efSRobert Elliott	select CRYPTO_SIMD
2428a936efSRobert Elliott	help
2528a936efSRobert Elliott	  Use Intel AES-NI instructions for AES algorithm.
2628a936efSRobert Elliott
2728a936efSRobert Elliott	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
2828a936efSRobert Elliott	  algorithm.
2928a936efSRobert Elliott
3028a936efSRobert Elliott	  Rijndael appears to be consistently a very good performer in
3128a936efSRobert Elliott	  both hardware and software across a wide range of computing
3228a936efSRobert Elliott	  environments regardless of its use in feedback or non-feedback
3328a936efSRobert Elliott	  modes. Its key setup time is excellent, and its key agility is
3428a936efSRobert Elliott	  good. Rijndael's very low memory requirements make it very well
3528a936efSRobert Elliott	  suited for restricted-space environments, in which it also
3628a936efSRobert Elliott	  demonstrates excellent performance. Rijndael's operations are
3728a936efSRobert Elliott	  among the easiest to defend against power and timing attacks.
3828a936efSRobert Elliott
3928a936efSRobert Elliott	  The AES specifies three key sizes: 128, 192 and 256 bits
4028a936efSRobert Elliott
4128a936efSRobert Elliott	  See <http://csrc.nist.gov/encryption/aes/> for more information.
4228a936efSRobert Elliott
4328a936efSRobert Elliott	  In addition to AES cipher algorithm support, the acceleration
4428a936efSRobert Elliott	  for some popular block cipher mode is supported too, including
4528a936efSRobert Elliott	  ECB, CBC, LRW, XTS. The 64 bit version has additional
4628a936efSRobert Elliott	  acceleration for CTR and XCTR.
4728a936efSRobert Elliott
4828a936efSRobert Elliottconfig CRYPTO_BLOWFISH_X86_64
4928a936efSRobert Elliott	tristate "Blowfish cipher algorithm (x86_64)"
5028a936efSRobert Elliott	depends on X86 && 64BIT
5128a936efSRobert Elliott	select CRYPTO_SKCIPHER
5228a936efSRobert Elliott	select CRYPTO_BLOWFISH_COMMON
5328a936efSRobert Elliott	imply CRYPTO_CTR
5428a936efSRobert Elliott	help
5528a936efSRobert Elliott	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
5628a936efSRobert Elliott
5728a936efSRobert Elliott	  This is a variable key length cipher which can use keys from 32
5828a936efSRobert Elliott	  bits to 448 bits in length.  It's fast, simple and specifically
5928a936efSRobert Elliott	  designed for use on "large microprocessors".
6028a936efSRobert Elliott
6128a936efSRobert Elliott	  See also:
6228a936efSRobert Elliott	  <https://www.schneier.com/blowfish.html>
6328a936efSRobert Elliott
6428a936efSRobert Elliottconfig CRYPTO_CAMELLIA_X86_64
6528a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64)"
6628a936efSRobert Elliott	depends on X86 && 64BIT
6728a936efSRobert Elliott	select CRYPTO_SKCIPHER
6828a936efSRobert Elliott	imply CRYPTO_CTR
6928a936efSRobert Elliott	help
7028a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64).
7128a936efSRobert Elliott
7228a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
7328a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
7428a936efSRobert Elliott
7528a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
7628a936efSRobert Elliott
7728a936efSRobert Elliott	  See also:
7828a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
7928a936efSRobert Elliott
8028a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX_X86_64
8128a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
8228a936efSRobert Elliott	depends on X86 && 64BIT
8328a936efSRobert Elliott	select CRYPTO_SKCIPHER
8428a936efSRobert Elliott	select CRYPTO_CAMELLIA_X86_64
8528a936efSRobert Elliott	select CRYPTO_SIMD
8628a936efSRobert Elliott	imply CRYPTO_XTS
8728a936efSRobert Elliott	help
8828a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64/AES-NI/AVX).
8928a936efSRobert Elliott
9028a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
9128a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
9228a936efSRobert Elliott
9328a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
9428a936efSRobert Elliott
9528a936efSRobert Elliott	  See also:
9628a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
9728a936efSRobert Elliott
9828a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
9928a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
10028a936efSRobert Elliott	depends on X86 && 64BIT
10128a936efSRobert Elliott	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
10228a936efSRobert Elliott	help
10328a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
10428a936efSRobert Elliott
10528a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
10628a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
10728a936efSRobert Elliott
10828a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
10928a936efSRobert Elliott
11028a936efSRobert Elliott	  See also:
11128a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
11228a936efSRobert Elliott
11328a936efSRobert Elliottconfig CRYPTO_CAST5_AVX_X86_64
11428a936efSRobert Elliott	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
11528a936efSRobert Elliott	depends on X86 && 64BIT
11628a936efSRobert Elliott	select CRYPTO_SKCIPHER
11728a936efSRobert Elliott	select CRYPTO_CAST5
11828a936efSRobert Elliott	select CRYPTO_CAST_COMMON
11928a936efSRobert Elliott	select CRYPTO_SIMD
12028a936efSRobert Elliott	imply CRYPTO_CTR
12128a936efSRobert Elliott	help
12228a936efSRobert Elliott	  The CAST5 encryption algorithm (synonymous with CAST-128) is
12328a936efSRobert Elliott	  described in RFC2144.
12428a936efSRobert Elliott
12528a936efSRobert Elliott	  This module provides the Cast5 cipher algorithm that processes
12628a936efSRobert Elliott	  sixteen blocks parallel using the AVX instruction set.
12728a936efSRobert Elliott
12828a936efSRobert Elliottconfig CRYPTO_CAST6_AVX_X86_64
12928a936efSRobert Elliott	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
13028a936efSRobert Elliott	depends on X86 && 64BIT
13128a936efSRobert Elliott	select CRYPTO_SKCIPHER
13228a936efSRobert Elliott	select CRYPTO_CAST6
13328a936efSRobert Elliott	select CRYPTO_CAST_COMMON
13428a936efSRobert Elliott	select CRYPTO_SIMD
13528a936efSRobert Elliott	imply CRYPTO_XTS
13628a936efSRobert Elliott	imply CRYPTO_CTR
13728a936efSRobert Elliott	help
13828a936efSRobert Elliott	  The CAST6 encryption algorithm (synonymous with CAST-256) is
13928a936efSRobert Elliott	  described in RFC2612.
14028a936efSRobert Elliott
14128a936efSRobert Elliott	  This module provides the Cast6 cipher algorithm that processes
14228a936efSRobert Elliott	  eight blocks parallel using the AVX instruction set.
14328a936efSRobert Elliott
14428a936efSRobert Elliottconfig CRYPTO_DES3_EDE_X86_64
14528a936efSRobert Elliott	tristate "Triple DES EDE cipher algorithm (x86-64)"
14628a936efSRobert Elliott	depends on X86 && 64BIT
14728a936efSRobert Elliott	select CRYPTO_SKCIPHER
14828a936efSRobert Elliott	select CRYPTO_LIB_DES
14928a936efSRobert Elliott	imply CRYPTO_CTR
15028a936efSRobert Elliott	help
15128a936efSRobert Elliott	  Triple DES EDE (FIPS 46-3) algorithm.
15228a936efSRobert Elliott
15328a936efSRobert Elliott	  This module provides implementation of the Triple DES EDE cipher
15428a936efSRobert Elliott	  algorithm that is optimized for x86-64 processors. Two versions of
15528a936efSRobert Elliott	  algorithm are provided; regular processing one input block and
15628a936efSRobert Elliott	  one that processes three blocks parallel.
15728a936efSRobert Elliott
15828a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_X86_64
15928a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/SSE2)"
16028a936efSRobert Elliott	depends on X86 && 64BIT
16128a936efSRobert Elliott	select CRYPTO_SKCIPHER
16228a936efSRobert Elliott	select CRYPTO_SERPENT
16328a936efSRobert Elliott	select CRYPTO_SIMD
16428a936efSRobert Elliott	imply CRYPTO_CTR
16528a936efSRobert Elliott	help
16628a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
16728a936efSRobert Elliott
16828a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
16928a936efSRobert Elliott	  of 8 bits.
17028a936efSRobert Elliott
17128a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes eight
17228a936efSRobert Elliott	  blocks parallel using SSE2 instruction set.
17328a936efSRobert Elliott
17428a936efSRobert Elliott	  See also:
17528a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
17628a936efSRobert Elliott
17728a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_586
17828a936efSRobert Elliott	tristate "Serpent cipher algorithm (i586/SSE2)"
17928a936efSRobert Elliott	depends on X86 && !64BIT
18028a936efSRobert Elliott	select CRYPTO_SKCIPHER
18128a936efSRobert Elliott	select CRYPTO_SERPENT
18228a936efSRobert Elliott	select CRYPTO_SIMD
18328a936efSRobert Elliott	imply CRYPTO_CTR
18428a936efSRobert Elliott	help
18528a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
18628a936efSRobert Elliott
18728a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
18828a936efSRobert Elliott	  of 8 bits.
18928a936efSRobert Elliott
19028a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes four
19128a936efSRobert Elliott	  blocks parallel using SSE2 instruction set.
19228a936efSRobert Elliott
19328a936efSRobert Elliott	  See also:
19428a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
19528a936efSRobert Elliott
19628a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX_X86_64
19728a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/AVX)"
19828a936efSRobert Elliott	depends on X86 && 64BIT
19928a936efSRobert Elliott	select CRYPTO_SKCIPHER
20028a936efSRobert Elliott	select CRYPTO_SERPENT
20128a936efSRobert Elliott	select CRYPTO_SIMD
20228a936efSRobert Elliott	imply CRYPTO_XTS
20328a936efSRobert Elliott	imply CRYPTO_CTR
20428a936efSRobert Elliott	help
20528a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
20628a936efSRobert Elliott
20728a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
20828a936efSRobert Elliott	  of 8 bits.
20928a936efSRobert Elliott
21028a936efSRobert Elliott	  This module provides the Serpent cipher algorithm that processes
21128a936efSRobert Elliott	  eight blocks parallel using the AVX instruction set.
21228a936efSRobert Elliott
21328a936efSRobert Elliott	  See also:
21428a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
21528a936efSRobert Elliott
21628a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX2_X86_64
21728a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/AVX2)"
21828a936efSRobert Elliott	depends on X86 && 64BIT
21928a936efSRobert Elliott	select CRYPTO_SERPENT_AVX_X86_64
22028a936efSRobert Elliott	help
22128a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
22228a936efSRobert Elliott
22328a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
22428a936efSRobert Elliott	  of 8 bits.
22528a936efSRobert Elliott
22628a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes 16
22728a936efSRobert Elliott	  blocks parallel using AVX2 instruction set.
22828a936efSRobert Elliott
22928a936efSRobert Elliott	  See also:
23028a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
23128a936efSRobert Elliott
23228a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX_X86_64
23328a936efSRobert Elliott	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)"
23428a936efSRobert Elliott	depends on X86 && 64BIT
23528a936efSRobert Elliott	select CRYPTO_SKCIPHER
23628a936efSRobert Elliott	select CRYPTO_SIMD
23728a936efSRobert Elliott	select CRYPTO_ALGAPI
23828a936efSRobert Elliott	select CRYPTO_SM4
23928a936efSRobert Elliott	help
24028a936efSRobert Elliott	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX).
24128a936efSRobert Elliott
24228a936efSRobert Elliott	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
24328a936efSRobert Elliott	  Organization of State Commercial Administration of China (OSCCA)
24428a936efSRobert Elliott	  as an authorized cryptographic algorithms for the use within China.
24528a936efSRobert Elliott
24628a936efSRobert Elliott	  This is SM4 optimized implementation using AES-NI/AVX/x86_64
24728a936efSRobert Elliott	  instruction set for block cipher. Through two affine transforms,
24828a936efSRobert Elliott	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
24928a936efSRobert Elliott	  effect of instruction acceleration.
25028a936efSRobert Elliott
25128a936efSRobert Elliott	  If unsure, say N.
25228a936efSRobert Elliott
25328a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX2_X86_64
25428a936efSRobert Elliott	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)"
25528a936efSRobert Elliott	depends on X86 && 64BIT
25628a936efSRobert Elliott	select CRYPTO_SKCIPHER
25728a936efSRobert Elliott	select CRYPTO_SIMD
25828a936efSRobert Elliott	select CRYPTO_ALGAPI
25928a936efSRobert Elliott	select CRYPTO_SM4
26028a936efSRobert Elliott	select CRYPTO_SM4_AESNI_AVX_X86_64
26128a936efSRobert Elliott	help
26228a936efSRobert Elliott	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2).
26328a936efSRobert Elliott
26428a936efSRobert Elliott	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
26528a936efSRobert Elliott	  Organization of State Commercial Administration of China (OSCCA)
26628a936efSRobert Elliott	  as an authorized cryptographic algorithms for the use within China.
26728a936efSRobert Elliott
26828a936efSRobert Elliott	  This is SM4 optimized implementation using AES-NI/AVX2/x86_64
26928a936efSRobert Elliott	  instruction set for block cipher. Through two affine transforms,
27028a936efSRobert Elliott	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
27128a936efSRobert Elliott	  effect of instruction acceleration.
27228a936efSRobert Elliott
27328a936efSRobert Elliott	  If unsure, say N.
27428a936efSRobert Elliott
27528a936efSRobert Elliottconfig CRYPTO_TWOFISH_586
27628a936efSRobert Elliott	tristate "Twofish cipher algorithms (i586)"
27728a936efSRobert Elliott	depends on (X86 || UML_X86) && !64BIT
27828a936efSRobert Elliott	select CRYPTO_ALGAPI
27928a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
28028a936efSRobert Elliott	imply CRYPTO_CTR
28128a936efSRobert Elliott	help
28228a936efSRobert Elliott	  Twofish cipher algorithm.
28328a936efSRobert Elliott
28428a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
28528a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
28628a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
28728a936efSRobert Elliott	  bits.
28828a936efSRobert Elliott
28928a936efSRobert Elliott	  See also:
29028a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
29128a936efSRobert Elliott
29228a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64
29328a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64)"
29428a936efSRobert Elliott	depends on (X86 || UML_X86) && 64BIT
29528a936efSRobert Elliott	select CRYPTO_ALGAPI
29628a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
29728a936efSRobert Elliott	imply CRYPTO_CTR
29828a936efSRobert Elliott	help
29928a936efSRobert Elliott	  Twofish cipher algorithm (x86_64).
30028a936efSRobert Elliott
30128a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
30228a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
30328a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
30428a936efSRobert Elliott	  bits.
30528a936efSRobert Elliott
30628a936efSRobert Elliott	  See also:
30728a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
30828a936efSRobert Elliott
30928a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64_3WAY
31028a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
31128a936efSRobert Elliott	depends on X86 && 64BIT
31228a936efSRobert Elliott	select CRYPTO_SKCIPHER
31328a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
31428a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64
31528a936efSRobert Elliott	help
31628a936efSRobert Elliott	  Twofish cipher algorithm (x86_64, 3-way parallel).
31728a936efSRobert Elliott
31828a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
31928a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
32028a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
32128a936efSRobert Elliott	  bits.
32228a936efSRobert Elliott
32328a936efSRobert Elliott	  This module provides Twofish cipher algorithm that processes three
32428a936efSRobert Elliott	  blocks parallel, utilizing resources of out-of-order CPUs better.
32528a936efSRobert Elliott
32628a936efSRobert Elliott	  See also:
32728a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
32828a936efSRobert Elliott
32928a936efSRobert Elliottconfig CRYPTO_TWOFISH_AVX_X86_64
33028a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64/AVX)"
33128a936efSRobert Elliott	depends on X86 && 64BIT
33228a936efSRobert Elliott	select CRYPTO_SKCIPHER
33328a936efSRobert Elliott	select CRYPTO_SIMD
33428a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
33528a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64
33628a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64_3WAY
33728a936efSRobert Elliott	imply CRYPTO_XTS
33828a936efSRobert Elliott	help
33928a936efSRobert Elliott	  Twofish cipher algorithm (x86_64/AVX).
34028a936efSRobert Elliott
34128a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
34228a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
34328a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
34428a936efSRobert Elliott	  bits.
34528a936efSRobert Elliott
34628a936efSRobert Elliott	  This module provides the Twofish cipher algorithm that processes
34728a936efSRobert Elliott	  eight blocks parallel using the AVX Instruction Set.
34828a936efSRobert Elliott
34928a936efSRobert Elliott	  See also:
35028a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
35128a936efSRobert Elliott
35228a936efSRobert Elliottconfig CRYPTO_CHACHA20_X86_64
35328a936efSRobert Elliott	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
35428a936efSRobert Elliott	depends on X86 && 64BIT
35528a936efSRobert Elliott	select CRYPTO_SKCIPHER
35628a936efSRobert Elliott	select CRYPTO_LIB_CHACHA_GENERIC
35728a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_CHACHA
35828a936efSRobert Elliott	help
35928a936efSRobert Elliott	  SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
36028a936efSRobert Elliott	  XChaCha20, and XChaCha12 stream ciphers.
36128a936efSRobert Elliott
36228a936efSRobert Elliottconfig CRYPTO_AEGIS128_AESNI_SSE2
363e3d2eaddSRobert Elliott	tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)"
36428a936efSRobert Elliott	depends on X86 && 64BIT
36528a936efSRobert Elliott	select CRYPTO_AEAD
36628a936efSRobert Elliott	select CRYPTO_SIMD
36728a936efSRobert Elliott	help
368e3d2eaddSRobert Elliott	  AEGIS-128 AEAD algorithm
369e3d2eaddSRobert Elliott
370e3d2eaddSRobert Elliott	  Architecture: x86_64 using:
371e3d2eaddSRobert Elliott	  - AES-NI (AES New Instructions)
372e3d2eaddSRobert Elliott	  - SSE2 (Streaming SIMD Extensions 2)
37328a936efSRobert Elliott
37428a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_SSE2
375*3f342a23SRobert Elliott	tristate "Hash functions: NHPoly1305 (SSE2)"
37628a936efSRobert Elliott	depends on X86 && 64BIT
37728a936efSRobert Elliott	select CRYPTO_NHPOLY1305
37828a936efSRobert Elliott	help
379*3f342a23SRobert Elliott	  NHPoly1305 hash function for Adiantum
380*3f342a23SRobert Elliott
381*3f342a23SRobert Elliott	  Architecture: x86_64 using:
382*3f342a23SRobert Elliott	  - SSE2 (Streaming SIMD Extensions 2)
38328a936efSRobert Elliott
38428a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_AVX2
385*3f342a23SRobert Elliott	tristate "Hash functions: NHPoly1305 (AVX2)"
38628a936efSRobert Elliott	depends on X86 && 64BIT
38728a936efSRobert Elliott	select CRYPTO_NHPOLY1305
38828a936efSRobert Elliott	help
389*3f342a23SRobert Elliott	  NHPoly1305 hash function for Adiantum
390*3f342a23SRobert Elliott
391*3f342a23SRobert Elliott	  Architecture: x86_64 using:
392*3f342a23SRobert Elliott	  - AVX2 (Advanced Vector Extensions 2)
39328a936efSRobert Elliott
39428a936efSRobert Elliottconfig CRYPTO_BLAKE2S_X86
395*3f342a23SRobert Elliott	bool "Hash functions: BLAKE2s (SSSE3/AVX-512)"
39628a936efSRobert Elliott	depends on X86 && 64BIT
39728a936efSRobert Elliott	select CRYPTO_LIB_BLAKE2S_GENERIC
39828a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
399*3f342a23SRobert Elliott	help
400*3f342a23SRobert Elliott	  BLAKE2s cryptographic hash function (RFC 7693)
401*3f342a23SRobert Elliott
402*3f342a23SRobert Elliott	  Architecture: x86_64 using:
403*3f342a23SRobert Elliott	  - SSSE3 (Supplemental SSE3)
404*3f342a23SRobert Elliott	  - AVX-512 (Advanced Vector Extensions-512)
40528a936efSRobert Elliott
40628a936efSRobert Elliottconfig CRYPTO_POLYVAL_CLMUL_NI
407*3f342a23SRobert Elliott	tristate "Hash functions: POLYVAL (CLMUL-NI)"
40828a936efSRobert Elliott	depends on X86 && 64BIT
40928a936efSRobert Elliott	select CRYPTO_POLYVAL
41028a936efSRobert Elliott	help
411*3f342a23SRobert Elliott	  POLYVAL hash function for HCTR2
412*3f342a23SRobert Elliott
413*3f342a23SRobert Elliott	  Architecture: x86_64 using:
414*3f342a23SRobert Elliott	  - CLMUL-NI (carry-less multiplication new instructions)
41528a936efSRobert Elliott
41628a936efSRobert Elliottconfig CRYPTO_POLY1305_X86_64
417*3f342a23SRobert Elliott	tristate "Hash functions: Poly1305 (SSE2/AVX2)"
41828a936efSRobert Elliott	depends on X86 && 64BIT
41928a936efSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
42028a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_POLY1305
42128a936efSRobert Elliott	help
422*3f342a23SRobert Elliott	  Poly1305 authenticator algorithm (RFC7539)
42328a936efSRobert Elliott
424*3f342a23SRobert Elliott	  Architecture: x86_64 using:
425*3f342a23SRobert Elliott	  - SSE2 (Streaming SIMD Extensions 2)
426*3f342a23SRobert Elliott	  - AVX2 (Advanced Vector Extensions 2)
42728a936efSRobert Elliott
42828a936efSRobert Elliottconfig CRYPTO_SHA1_SSSE3
429*3f342a23SRobert Elliott	tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)"
43028a936efSRobert Elliott	depends on X86 && 64BIT
43128a936efSRobert Elliott	select CRYPTO_SHA1
43228a936efSRobert Elliott	select CRYPTO_HASH
43328a936efSRobert Elliott	help
434*3f342a23SRobert Elliott	  SHA-1 secure hash algorithm (FIPS 180)
435*3f342a23SRobert Elliott
436*3f342a23SRobert Elliott	  Architecture: x86_64 using:
437*3f342a23SRobert Elliott	  - SSSE3 (Supplemental SSE3)
438*3f342a23SRobert Elliott	  - AVX (Advanced Vector Extensions)
439*3f342a23SRobert Elliott	  - AVX2 (Advanced Vector Extensions 2)
440*3f342a23SRobert Elliott	  - SHA-NI (SHA Extensions New Instructions)
44128a936efSRobert Elliott
44228a936efSRobert Elliottconfig CRYPTO_SHA256_SSSE3
443*3f342a23SRobert Elliott	tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)"
44428a936efSRobert Elliott	depends on X86 && 64BIT
44528a936efSRobert Elliott	select CRYPTO_SHA256
44628a936efSRobert Elliott	select CRYPTO_HASH
44728a936efSRobert Elliott	help
448*3f342a23SRobert Elliott	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
449*3f342a23SRobert Elliott
450*3f342a23SRobert Elliott	  Architecture: x86_64 using:
451*3f342a23SRobert Elliott	  - SSSE3 (Supplemental SSE3)
452*3f342a23SRobert Elliott	  - AVX (Advanced Vector Extensions)
453*3f342a23SRobert Elliott	  - AVX2 (Advanced Vector Extensions 2)
454*3f342a23SRobert Elliott	  - SHA-NI (SHA Extensions New Instructions)
45528a936efSRobert Elliott
45628a936efSRobert Elliottconfig CRYPTO_SHA512_SSSE3
457*3f342a23SRobert Elliott	tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)"
45828a936efSRobert Elliott	depends on X86 && 64BIT
45928a936efSRobert Elliott	select CRYPTO_SHA512
46028a936efSRobert Elliott	select CRYPTO_HASH
46128a936efSRobert Elliott	help
462*3f342a23SRobert Elliott	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
463*3f342a23SRobert Elliott
464*3f342a23SRobert Elliott	  Architecture: x86_64 using:
465*3f342a23SRobert Elliott	  - SSSE3 (Supplemental SSE3)
466*3f342a23SRobert Elliott	  - AVX (Advanced Vector Extensions)
467*3f342a23SRobert Elliott	  - AVX2 (Advanced Vector Extensions 2)
46828a936efSRobert Elliott
46928a936efSRobert Elliottconfig CRYPTO_SM3_AVX_X86_64
470*3f342a23SRobert Elliott	tristate "Hash functions: SM3 (AVX)"
47128a936efSRobert Elliott	depends on X86 && 64BIT
47228a936efSRobert Elliott	select CRYPTO_HASH
47328a936efSRobert Elliott	select CRYPTO_SM3
47428a936efSRobert Elliott	help
475*3f342a23SRobert Elliott	  SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3
476*3f342a23SRobert Elliott
477*3f342a23SRobert Elliott	  Architecture: x86_64 using:
478*3f342a23SRobert Elliott	  - AVX (Advanced Vector Extensions)
47928a936efSRobert Elliott
48028a936efSRobert Elliott	  If unsure, say N.
48128a936efSRobert Elliott
48228a936efSRobert Elliottconfig CRYPTO_GHASH_CLMUL_NI_INTEL
483*3f342a23SRobert Elliott	tristate "Hash functions: GHASH (CLMUL-NI)"
48428a936efSRobert Elliott	depends on X86 && 64BIT
48528a936efSRobert Elliott	select CRYPTO_CRYPTD
48628a936efSRobert Elliott	help
487*3f342a23SRobert Elliott	  GCM GHASH hash function (NIST SP800-38D)
488*3f342a23SRobert Elliott
489*3f342a23SRobert Elliott	  Architecture: x86_64 using:
490*3f342a23SRobert Elliott	  - CLMUL-NI (carry-less multiplication new instructions)
49128a936efSRobert Elliott
49228a936efSRobert Elliottconfig CRYPTO_CRC32C_INTEL
493ec84348dSRobert Elliott	tristate "CRC32c (SSE4.2/PCLMULQDQ)"
49428a936efSRobert Elliott	depends on X86
49528a936efSRobert Elliott	select CRYPTO_HASH
49628a936efSRobert Elliott	help
497ec84348dSRobert Elliott	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
498ec84348dSRobert Elliott
499ec84348dSRobert Elliott	  Architecture: x86 (32-bit and 64-bit) using:
500ec84348dSRobert Elliott	  - SSE4.2 (Streaming SIMD Extensions 4.2) CRC32 instruction
501ec84348dSRobert Elliott	  - PCLMULQDQ (carry-less multiplication)
50228a936efSRobert Elliott
50328a936efSRobert Elliottconfig CRYPTO_CRC32_PCLMUL
504ec84348dSRobert Elliott	tristate "CRC32 (PCLMULQDQ)"
50528a936efSRobert Elliott	depends on X86
50628a936efSRobert Elliott	select CRYPTO_HASH
50728a936efSRobert Elliott	select CRC32
50828a936efSRobert Elliott	help
509ec84348dSRobert Elliott	  CRC32 CRC algorithm (IEEE 802.3)
510ec84348dSRobert Elliott
511ec84348dSRobert Elliott	  Architecture: x86 (32-bit and 64-bit) using:
512ec84348dSRobert Elliott	  - PCLMULQDQ (carry-less multiplication)
51328a936efSRobert Elliott
51428a936efSRobert Elliottconfig CRYPTO_CRCT10DIF_PCLMUL
515ec84348dSRobert Elliott	tristate "CRCT10DIF (PCLMULQDQ)"
51628a936efSRobert Elliott	depends on X86 && 64BIT && CRC_T10DIF
51728a936efSRobert Elliott	select CRYPTO_HASH
51828a936efSRobert Elliott	help
519ec84348dSRobert Elliott	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
520ec84348dSRobert Elliott
521ec84348dSRobert Elliott	  Architecture: x86_64 using:
522ec84348dSRobert Elliott	  - PCLMULQDQ (carry-less multiplication)
52328a936efSRobert Elliott
52428a936efSRobert Elliottendmenu
525