xref: /linux/arch/x86/crypto/Kconfig (revision 28a936ef44e12b4d2b38f45ff767262763b60a20)
1*28a936efSRobert Elliott# SPDX-License-Identifier: GPL-2.0
2*28a936efSRobert Elliott
3*28a936efSRobert Elliottmenu "Accelerated Cryptographic Algorithms for CPU (x86)"
4*28a936efSRobert Elliott
5*28a936efSRobert Elliottconfig CRYPTO_CURVE25519_X86
6*28a936efSRobert Elliott	tristate "x86_64 accelerated Curve25519 scalar multiplication library"
7*28a936efSRobert Elliott	depends on X86 && 64BIT
8*28a936efSRobert Elliott	select CRYPTO_LIB_CURVE25519_GENERIC
9*28a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
10*28a936efSRobert Elliott
11*28a936efSRobert Elliottconfig CRYPTO_AES_NI_INTEL
12*28a936efSRobert Elliott	tristate "AES cipher algorithms (AES-NI)"
13*28a936efSRobert Elliott	depends on X86
14*28a936efSRobert Elliott	select CRYPTO_AEAD
15*28a936efSRobert Elliott	select CRYPTO_LIB_AES
16*28a936efSRobert Elliott	select CRYPTO_ALGAPI
17*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
18*28a936efSRobert Elliott	select CRYPTO_SIMD
19*28a936efSRobert Elliott	help
20*28a936efSRobert Elliott	  Use Intel AES-NI instructions for AES algorithm.
21*28a936efSRobert Elliott
22*28a936efSRobert Elliott	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
23*28a936efSRobert Elliott	  algorithm.
24*28a936efSRobert Elliott
25*28a936efSRobert Elliott	  Rijndael appears to be consistently a very good performer in
26*28a936efSRobert Elliott	  both hardware and software across a wide range of computing
27*28a936efSRobert Elliott	  environments regardless of its use in feedback or non-feedback
28*28a936efSRobert Elliott	  modes. Its key setup time is excellent, and its key agility is
29*28a936efSRobert Elliott	  good. Rijndael's very low memory requirements make it very well
30*28a936efSRobert Elliott	  suited for restricted-space environments, in which it also
31*28a936efSRobert Elliott	  demonstrates excellent performance. Rijndael's operations are
32*28a936efSRobert Elliott	  among the easiest to defend against power and timing attacks.
33*28a936efSRobert Elliott
34*28a936efSRobert Elliott	  The AES specifies three key sizes: 128, 192 and 256 bits
35*28a936efSRobert Elliott
36*28a936efSRobert Elliott	  See <http://csrc.nist.gov/encryption/aes/> for more information.
37*28a936efSRobert Elliott
38*28a936efSRobert Elliott	  In addition to AES cipher algorithm support, the acceleration
39*28a936efSRobert Elliott	  for some popular block cipher mode is supported too, including
40*28a936efSRobert Elliott	  ECB, CBC, LRW, XTS. The 64 bit version has additional
41*28a936efSRobert Elliott	  acceleration for CTR and XCTR.
42*28a936efSRobert Elliott
43*28a936efSRobert Elliottconfig CRYPTO_BLOWFISH_X86_64
44*28a936efSRobert Elliott	tristate "Blowfish cipher algorithm (x86_64)"
45*28a936efSRobert Elliott	depends on X86 && 64BIT
46*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
47*28a936efSRobert Elliott	select CRYPTO_BLOWFISH_COMMON
48*28a936efSRobert Elliott	imply CRYPTO_CTR
49*28a936efSRobert Elliott	help
50*28a936efSRobert Elliott	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
51*28a936efSRobert Elliott
52*28a936efSRobert Elliott	  This is a variable key length cipher which can use keys from 32
53*28a936efSRobert Elliott	  bits to 448 bits in length.  It's fast, simple and specifically
54*28a936efSRobert Elliott	  designed for use on "large microprocessors".
55*28a936efSRobert Elliott
56*28a936efSRobert Elliott	  See also:
57*28a936efSRobert Elliott	  <https://www.schneier.com/blowfish.html>
58*28a936efSRobert Elliott
59*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_X86_64
60*28a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64)"
61*28a936efSRobert Elliott	depends on X86 && 64BIT
62*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
63*28a936efSRobert Elliott	imply CRYPTO_CTR
64*28a936efSRobert Elliott	help
65*28a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64).
66*28a936efSRobert Elliott
67*28a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
68*28a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
69*28a936efSRobert Elliott
70*28a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
71*28a936efSRobert Elliott
72*28a936efSRobert Elliott	  See also:
73*28a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
74*28a936efSRobert Elliott
75*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX_X86_64
76*28a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
77*28a936efSRobert Elliott	depends on X86 && 64BIT
78*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
79*28a936efSRobert Elliott	select CRYPTO_CAMELLIA_X86_64
80*28a936efSRobert Elliott	select CRYPTO_SIMD
81*28a936efSRobert Elliott	imply CRYPTO_XTS
82*28a936efSRobert Elliott	help
83*28a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64/AES-NI/AVX).
84*28a936efSRobert Elliott
85*28a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
86*28a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
87*28a936efSRobert Elliott
88*28a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
89*28a936efSRobert Elliott
90*28a936efSRobert Elliott	  See also:
91*28a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
92*28a936efSRobert Elliott
93*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
94*28a936efSRobert Elliott	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
95*28a936efSRobert Elliott	depends on X86 && 64BIT
96*28a936efSRobert Elliott	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
97*28a936efSRobert Elliott	help
98*28a936efSRobert Elliott	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
99*28a936efSRobert Elliott
100*28a936efSRobert Elliott	  Camellia is a symmetric key block cipher developed jointly
101*28a936efSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
102*28a936efSRobert Elliott
103*28a936efSRobert Elliott	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
104*28a936efSRobert Elliott
105*28a936efSRobert Elliott	  See also:
106*28a936efSRobert Elliott	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
107*28a936efSRobert Elliott
108*28a936efSRobert Elliottconfig CRYPTO_CAST5_AVX_X86_64
109*28a936efSRobert Elliott	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
110*28a936efSRobert Elliott	depends on X86 && 64BIT
111*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
112*28a936efSRobert Elliott	select CRYPTO_CAST5
113*28a936efSRobert Elliott	select CRYPTO_CAST_COMMON
114*28a936efSRobert Elliott	select CRYPTO_SIMD
115*28a936efSRobert Elliott	imply CRYPTO_CTR
116*28a936efSRobert Elliott	help
117*28a936efSRobert Elliott	  The CAST5 encryption algorithm (synonymous with CAST-128) is
118*28a936efSRobert Elliott	  described in RFC2144.
119*28a936efSRobert Elliott
120*28a936efSRobert Elliott	  This module provides the Cast5 cipher algorithm that processes
121*28a936efSRobert Elliott	  sixteen blocks parallel using the AVX instruction set.
122*28a936efSRobert Elliott
123*28a936efSRobert Elliottconfig CRYPTO_CAST6_AVX_X86_64
124*28a936efSRobert Elliott	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
125*28a936efSRobert Elliott	depends on X86 && 64BIT
126*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
127*28a936efSRobert Elliott	select CRYPTO_CAST6
128*28a936efSRobert Elliott	select CRYPTO_CAST_COMMON
129*28a936efSRobert Elliott	select CRYPTO_SIMD
130*28a936efSRobert Elliott	imply CRYPTO_XTS
131*28a936efSRobert Elliott	imply CRYPTO_CTR
132*28a936efSRobert Elliott	help
133*28a936efSRobert Elliott	  The CAST6 encryption algorithm (synonymous with CAST-256) is
134*28a936efSRobert Elliott	  described in RFC2612.
135*28a936efSRobert Elliott
136*28a936efSRobert Elliott	  This module provides the Cast6 cipher algorithm that processes
137*28a936efSRobert Elliott	  eight blocks parallel using the AVX instruction set.
138*28a936efSRobert Elliott
139*28a936efSRobert Elliottconfig CRYPTO_DES3_EDE_X86_64
140*28a936efSRobert Elliott	tristate "Triple DES EDE cipher algorithm (x86-64)"
141*28a936efSRobert Elliott	depends on X86 && 64BIT
142*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
143*28a936efSRobert Elliott	select CRYPTO_LIB_DES
144*28a936efSRobert Elliott	imply CRYPTO_CTR
145*28a936efSRobert Elliott	help
146*28a936efSRobert Elliott	  Triple DES EDE (FIPS 46-3) algorithm.
147*28a936efSRobert Elliott
148*28a936efSRobert Elliott	  This module provides implementation of the Triple DES EDE cipher
149*28a936efSRobert Elliott	  algorithm that is optimized for x86-64 processors. Two versions of
150*28a936efSRobert Elliott	  algorithm are provided; regular processing one input block and
151*28a936efSRobert Elliott	  one that processes three blocks parallel.
152*28a936efSRobert Elliott
153*28a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_X86_64
154*28a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/SSE2)"
155*28a936efSRobert Elliott	depends on X86 && 64BIT
156*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
157*28a936efSRobert Elliott	select CRYPTO_SERPENT
158*28a936efSRobert Elliott	select CRYPTO_SIMD
159*28a936efSRobert Elliott	imply CRYPTO_CTR
160*28a936efSRobert Elliott	help
161*28a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
162*28a936efSRobert Elliott
163*28a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
164*28a936efSRobert Elliott	  of 8 bits.
165*28a936efSRobert Elliott
166*28a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes eight
167*28a936efSRobert Elliott	  blocks parallel using SSE2 instruction set.
168*28a936efSRobert Elliott
169*28a936efSRobert Elliott	  See also:
170*28a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
171*28a936efSRobert Elliott
172*28a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_586
173*28a936efSRobert Elliott	tristate "Serpent cipher algorithm (i586/SSE2)"
174*28a936efSRobert Elliott	depends on X86 && !64BIT
175*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
176*28a936efSRobert Elliott	select CRYPTO_SERPENT
177*28a936efSRobert Elliott	select CRYPTO_SIMD
178*28a936efSRobert Elliott	imply CRYPTO_CTR
179*28a936efSRobert Elliott	help
180*28a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
181*28a936efSRobert Elliott
182*28a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
183*28a936efSRobert Elliott	  of 8 bits.
184*28a936efSRobert Elliott
185*28a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes four
186*28a936efSRobert Elliott	  blocks parallel using SSE2 instruction set.
187*28a936efSRobert Elliott
188*28a936efSRobert Elliott	  See also:
189*28a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
190*28a936efSRobert Elliott
191*28a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX_X86_64
192*28a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/AVX)"
193*28a936efSRobert Elliott	depends on X86 && 64BIT
194*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
195*28a936efSRobert Elliott	select CRYPTO_SERPENT
196*28a936efSRobert Elliott	select CRYPTO_SIMD
197*28a936efSRobert Elliott	imply CRYPTO_XTS
198*28a936efSRobert Elliott	imply CRYPTO_CTR
199*28a936efSRobert Elliott	help
200*28a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
201*28a936efSRobert Elliott
202*28a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
203*28a936efSRobert Elliott	  of 8 bits.
204*28a936efSRobert Elliott
205*28a936efSRobert Elliott	  This module provides the Serpent cipher algorithm that processes
206*28a936efSRobert Elliott	  eight blocks parallel using the AVX instruction set.
207*28a936efSRobert Elliott
208*28a936efSRobert Elliott	  See also:
209*28a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
210*28a936efSRobert Elliott
211*28a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX2_X86_64
212*28a936efSRobert Elliott	tristate "Serpent cipher algorithm (x86_64/AVX2)"
213*28a936efSRobert Elliott	depends on X86 && 64BIT
214*28a936efSRobert Elliott	select CRYPTO_SERPENT_AVX_X86_64
215*28a936efSRobert Elliott	help
216*28a936efSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
217*28a936efSRobert Elliott
218*28a936efSRobert Elliott	  Keys are allowed to be from 0 to 256 bits in length, in steps
219*28a936efSRobert Elliott	  of 8 bits.
220*28a936efSRobert Elliott
221*28a936efSRobert Elliott	  This module provides Serpent cipher algorithm that processes 16
222*28a936efSRobert Elliott	  blocks parallel using AVX2 instruction set.
223*28a936efSRobert Elliott
224*28a936efSRobert Elliott	  See also:
225*28a936efSRobert Elliott	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
226*28a936efSRobert Elliott
227*28a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX_X86_64
228*28a936efSRobert Elliott	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)"
229*28a936efSRobert Elliott	depends on X86 && 64BIT
230*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
231*28a936efSRobert Elliott	select CRYPTO_SIMD
232*28a936efSRobert Elliott	select CRYPTO_ALGAPI
233*28a936efSRobert Elliott	select CRYPTO_SM4
234*28a936efSRobert Elliott	help
235*28a936efSRobert Elliott	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX).
236*28a936efSRobert Elliott
237*28a936efSRobert Elliott	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
238*28a936efSRobert Elliott	  Organization of State Commercial Administration of China (OSCCA)
239*28a936efSRobert Elliott	  as an authorized cryptographic algorithms for the use within China.
240*28a936efSRobert Elliott
241*28a936efSRobert Elliott	  This is SM4 optimized implementation using AES-NI/AVX/x86_64
242*28a936efSRobert Elliott	  instruction set for block cipher. Through two affine transforms,
243*28a936efSRobert Elliott	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
244*28a936efSRobert Elliott	  effect of instruction acceleration.
245*28a936efSRobert Elliott
246*28a936efSRobert Elliott	  If unsure, say N.
247*28a936efSRobert Elliott
248*28a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX2_X86_64
249*28a936efSRobert Elliott	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)"
250*28a936efSRobert Elliott	depends on X86 && 64BIT
251*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
252*28a936efSRobert Elliott	select CRYPTO_SIMD
253*28a936efSRobert Elliott	select CRYPTO_ALGAPI
254*28a936efSRobert Elliott	select CRYPTO_SM4
255*28a936efSRobert Elliott	select CRYPTO_SM4_AESNI_AVX_X86_64
256*28a936efSRobert Elliott	help
257*28a936efSRobert Elliott	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2).
258*28a936efSRobert Elliott
259*28a936efSRobert Elliott	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
260*28a936efSRobert Elliott	  Organization of State Commercial Administration of China (OSCCA)
261*28a936efSRobert Elliott	  as an authorized cryptographic algorithms for the use within China.
262*28a936efSRobert Elliott
263*28a936efSRobert Elliott	  This is SM4 optimized implementation using AES-NI/AVX2/x86_64
264*28a936efSRobert Elliott	  instruction set for block cipher. Through two affine transforms,
265*28a936efSRobert Elliott	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
266*28a936efSRobert Elliott	  effect of instruction acceleration.
267*28a936efSRobert Elliott
268*28a936efSRobert Elliott	  If unsure, say N.
269*28a936efSRobert Elliott
270*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_586
271*28a936efSRobert Elliott	tristate "Twofish cipher algorithms (i586)"
272*28a936efSRobert Elliott	depends on (X86 || UML_X86) && !64BIT
273*28a936efSRobert Elliott	select CRYPTO_ALGAPI
274*28a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
275*28a936efSRobert Elliott	imply CRYPTO_CTR
276*28a936efSRobert Elliott	help
277*28a936efSRobert Elliott	  Twofish cipher algorithm.
278*28a936efSRobert Elliott
279*28a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
280*28a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
281*28a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
282*28a936efSRobert Elliott	  bits.
283*28a936efSRobert Elliott
284*28a936efSRobert Elliott	  See also:
285*28a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
286*28a936efSRobert Elliott
287*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64
288*28a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64)"
289*28a936efSRobert Elliott	depends on (X86 || UML_X86) && 64BIT
290*28a936efSRobert Elliott	select CRYPTO_ALGAPI
291*28a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
292*28a936efSRobert Elliott	imply CRYPTO_CTR
293*28a936efSRobert Elliott	help
294*28a936efSRobert Elliott	  Twofish cipher algorithm (x86_64).
295*28a936efSRobert Elliott
296*28a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
297*28a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
298*28a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
299*28a936efSRobert Elliott	  bits.
300*28a936efSRobert Elliott
301*28a936efSRobert Elliott	  See also:
302*28a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
303*28a936efSRobert Elliott
304*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64_3WAY
305*28a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
306*28a936efSRobert Elliott	depends on X86 && 64BIT
307*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
308*28a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
309*28a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64
310*28a936efSRobert Elliott	help
311*28a936efSRobert Elliott	  Twofish cipher algorithm (x86_64, 3-way parallel).
312*28a936efSRobert Elliott
313*28a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
314*28a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
315*28a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
316*28a936efSRobert Elliott	  bits.
317*28a936efSRobert Elliott
318*28a936efSRobert Elliott	  This module provides Twofish cipher algorithm that processes three
319*28a936efSRobert Elliott	  blocks parallel, utilizing resources of out-of-order CPUs better.
320*28a936efSRobert Elliott
321*28a936efSRobert Elliott	  See also:
322*28a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
323*28a936efSRobert Elliott
324*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_AVX_X86_64
325*28a936efSRobert Elliott	tristate "Twofish cipher algorithm (x86_64/AVX)"
326*28a936efSRobert Elliott	depends on X86 && 64BIT
327*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
328*28a936efSRobert Elliott	select CRYPTO_SIMD
329*28a936efSRobert Elliott	select CRYPTO_TWOFISH_COMMON
330*28a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64
331*28a936efSRobert Elliott	select CRYPTO_TWOFISH_X86_64_3WAY
332*28a936efSRobert Elliott	imply CRYPTO_XTS
333*28a936efSRobert Elliott	help
334*28a936efSRobert Elliott	  Twofish cipher algorithm (x86_64/AVX).
335*28a936efSRobert Elliott
336*28a936efSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
337*28a936efSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
338*28a936efSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
339*28a936efSRobert Elliott	  bits.
340*28a936efSRobert Elliott
341*28a936efSRobert Elliott	  This module provides the Twofish cipher algorithm that processes
342*28a936efSRobert Elliott	  eight blocks parallel using the AVX Instruction Set.
343*28a936efSRobert Elliott
344*28a936efSRobert Elliott	  See also:
345*28a936efSRobert Elliott	  <https://www.schneier.com/twofish.html>
346*28a936efSRobert Elliott
347*28a936efSRobert Elliottconfig CRYPTO_CHACHA20_X86_64
348*28a936efSRobert Elliott	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
349*28a936efSRobert Elliott	depends on X86 && 64BIT
350*28a936efSRobert Elliott	select CRYPTO_SKCIPHER
351*28a936efSRobert Elliott	select CRYPTO_LIB_CHACHA_GENERIC
352*28a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_CHACHA
353*28a936efSRobert Elliott	help
354*28a936efSRobert Elliott	  SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
355*28a936efSRobert Elliott	  XChaCha20, and XChaCha12 stream ciphers.
356*28a936efSRobert Elliott
357*28a936efSRobert Elliottconfig CRYPTO_AEGIS128_AESNI_SSE2
358*28a936efSRobert Elliott	tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
359*28a936efSRobert Elliott	depends on X86 && 64BIT
360*28a936efSRobert Elliott	select CRYPTO_AEAD
361*28a936efSRobert Elliott	select CRYPTO_SIMD
362*28a936efSRobert Elliott	help
363*28a936efSRobert Elliott	 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
364*28a936efSRobert Elliott
365*28a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_SSE2
366*28a936efSRobert Elliott	tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
367*28a936efSRobert Elliott	depends on X86 && 64BIT
368*28a936efSRobert Elliott	select CRYPTO_NHPOLY1305
369*28a936efSRobert Elliott	help
370*28a936efSRobert Elliott	  SSE2 optimized implementation of the hash function used by the
371*28a936efSRobert Elliott	  Adiantum encryption mode.
372*28a936efSRobert Elliott
373*28a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_AVX2
374*28a936efSRobert Elliott	tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
375*28a936efSRobert Elliott	depends on X86 && 64BIT
376*28a936efSRobert Elliott	select CRYPTO_NHPOLY1305
377*28a936efSRobert Elliott	help
378*28a936efSRobert Elliott	  AVX2 optimized implementation of the hash function used by the
379*28a936efSRobert Elliott	  Adiantum encryption mode.
380*28a936efSRobert Elliott
381*28a936efSRobert Elliottconfig CRYPTO_BLAKE2S_X86
382*28a936efSRobert Elliott	bool "BLAKE2s digest algorithm (x86 accelerated version)"
383*28a936efSRobert Elliott	depends on X86 && 64BIT
384*28a936efSRobert Elliott	select CRYPTO_LIB_BLAKE2S_GENERIC
385*28a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
386*28a936efSRobert Elliott
387*28a936efSRobert Elliottconfig CRYPTO_POLYVAL_CLMUL_NI
388*28a936efSRobert Elliott	tristate "POLYVAL hash function (CLMUL-NI accelerated)"
389*28a936efSRobert Elliott	depends on X86 && 64BIT
390*28a936efSRobert Elliott	select CRYPTO_POLYVAL
391*28a936efSRobert Elliott	help
392*28a936efSRobert Elliott	  This is the x86_64 CLMUL-NI accelerated implementation of POLYVAL. It is
393*28a936efSRobert Elliott	  used to efficiently implement HCTR2 on x86-64 processors that support
394*28a936efSRobert Elliott	  carry-less multiplication instructions.
395*28a936efSRobert Elliott
396*28a936efSRobert Elliottconfig CRYPTO_POLY1305_X86_64
397*28a936efSRobert Elliott	tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
398*28a936efSRobert Elliott	depends on X86 && 64BIT
399*28a936efSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
400*28a936efSRobert Elliott	select CRYPTO_ARCH_HAVE_LIB_POLY1305
401*28a936efSRobert Elliott	help
402*28a936efSRobert Elliott	  Poly1305 authenticator algorithm, RFC7539.
403*28a936efSRobert Elliott
404*28a936efSRobert Elliott	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
405*28a936efSRobert Elliott	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
406*28a936efSRobert Elliott	  in IETF protocols. This is the x86_64 assembler implementation using SIMD
407*28a936efSRobert Elliott	  instructions.
408*28a936efSRobert Elliott
409*28a936efSRobert Elliottconfig CRYPTO_SHA1_SSSE3
410*28a936efSRobert Elliott	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
411*28a936efSRobert Elliott	depends on X86 && 64BIT
412*28a936efSRobert Elliott	select CRYPTO_SHA1
413*28a936efSRobert Elliott	select CRYPTO_HASH
414*28a936efSRobert Elliott	help
415*28a936efSRobert Elliott	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
416*28a936efSRobert Elliott	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
417*28a936efSRobert Elliott	  Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
418*28a936efSRobert Elliott	  when available.
419*28a936efSRobert Elliott
420*28a936efSRobert Elliottconfig CRYPTO_SHA256_SSSE3
421*28a936efSRobert Elliott	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
422*28a936efSRobert Elliott	depends on X86 && 64BIT
423*28a936efSRobert Elliott	select CRYPTO_SHA256
424*28a936efSRobert Elliott	select CRYPTO_HASH
425*28a936efSRobert Elliott	help
426*28a936efSRobert Elliott	  SHA-256 secure hash standard (DFIPS 180-2) implemented
427*28a936efSRobert Elliott	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
428*28a936efSRobert Elliott	  Extensions version 1 (AVX1), or Advanced Vector Extensions
429*28a936efSRobert Elliott	  version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
430*28a936efSRobert Elliott	  Instructions) when available.
431*28a936efSRobert Elliott
432*28a936efSRobert Elliottconfig CRYPTO_SHA512_SSSE3
433*28a936efSRobert Elliott	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
434*28a936efSRobert Elliott	depends on X86 && 64BIT
435*28a936efSRobert Elliott	select CRYPTO_SHA512
436*28a936efSRobert Elliott	select CRYPTO_HASH
437*28a936efSRobert Elliott	help
438*28a936efSRobert Elliott	  SHA-512 secure hash standard (DFIPS 180-2) implemented
439*28a936efSRobert Elliott	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
440*28a936efSRobert Elliott	  Extensions version 1 (AVX1), or Advanced Vector Extensions
441*28a936efSRobert Elliott	  version 2 (AVX2) instructions, when available.
442*28a936efSRobert Elliott
443*28a936efSRobert Elliottconfig CRYPTO_SM3_AVX_X86_64
444*28a936efSRobert Elliott	tristate "SM3 digest algorithm (x86_64/AVX)"
445*28a936efSRobert Elliott	depends on X86 && 64BIT
446*28a936efSRobert Elliott	select CRYPTO_HASH
447*28a936efSRobert Elliott	select CRYPTO_SM3
448*28a936efSRobert Elliott	help
449*28a936efSRobert Elliott	  SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
450*28a936efSRobert Elliott	  It is part of the Chinese Commercial Cryptography suite. This is
451*28a936efSRobert Elliott	  SM3 optimized implementation using Advanced Vector Extensions (AVX)
452*28a936efSRobert Elliott	  when available.
453*28a936efSRobert Elliott
454*28a936efSRobert Elliott	  If unsure, say N.
455*28a936efSRobert Elliott
456*28a936efSRobert Elliottconfig CRYPTO_GHASH_CLMUL_NI_INTEL
457*28a936efSRobert Elliott	tristate "GHASH hash function (CLMUL-NI accelerated)"
458*28a936efSRobert Elliott	depends on X86 && 64BIT
459*28a936efSRobert Elliott	select CRYPTO_CRYPTD
460*28a936efSRobert Elliott	help
461*28a936efSRobert Elliott	  This is the x86_64 CLMUL-NI accelerated implementation of
462*28a936efSRobert Elliott	  GHASH, the hash function used in GCM (Galois/Counter mode).
463*28a936efSRobert Elliott
464*28a936efSRobert Elliottconfig CRYPTO_CRC32C_INTEL
465*28a936efSRobert Elliott	tristate "CRC32c INTEL hardware acceleration"
466*28a936efSRobert Elliott	depends on X86
467*28a936efSRobert Elliott	select CRYPTO_HASH
468*28a936efSRobert Elliott	help
469*28a936efSRobert Elliott	  In Intel processor with SSE4.2 supported, the processor will
470*28a936efSRobert Elliott	  support CRC32C implementation using hardware accelerated CRC32
471*28a936efSRobert Elliott	  instruction. This option will create 'crc32c-intel' module,
472*28a936efSRobert Elliott	  which will enable any routine to use the CRC32 instruction to
473*28a936efSRobert Elliott	  gain performance compared with software implementation.
474*28a936efSRobert Elliott	  Module will be crc32c-intel.
475*28a936efSRobert Elliott
476*28a936efSRobert Elliottconfig CRYPTO_CRC32_PCLMUL
477*28a936efSRobert Elliott	tristate "CRC32 PCLMULQDQ hardware acceleration"
478*28a936efSRobert Elliott	depends on X86
479*28a936efSRobert Elliott	select CRYPTO_HASH
480*28a936efSRobert Elliott	select CRC32
481*28a936efSRobert Elliott	help
482*28a936efSRobert Elliott	  From Intel Westmere and AMD Bulldozer processor with SSE4.2
483*28a936efSRobert Elliott	  and PCLMULQDQ supported, the processor will support
484*28a936efSRobert Elliott	  CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
485*28a936efSRobert Elliott	  instruction. This option will create 'crc32-pclmul' module,
486*28a936efSRobert Elliott	  which will enable any routine to use the CRC-32-IEEE 802.3 checksum
487*28a936efSRobert Elliott	  and gain better performance as compared with the table implementation.
488*28a936efSRobert Elliott
489*28a936efSRobert Elliottconfig CRYPTO_CRCT10DIF_PCLMUL
490*28a936efSRobert Elliott	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
491*28a936efSRobert Elliott	depends on X86 && 64BIT && CRC_T10DIF
492*28a936efSRobert Elliott	select CRYPTO_HASH
493*28a936efSRobert Elliott	help
494*28a936efSRobert Elliott	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
495*28a936efSRobert Elliott	  CRC T10 DIF PCLMULQDQ computation can be hardware
496*28a936efSRobert Elliott	  accelerated PCLMULQDQ instruction. This option will create
497*28a936efSRobert Elliott	  'crct10dif-pclmul' module, which is faster when computing the
498*28a936efSRobert Elliott	  crct10dif checksum as compared with the generic table implementation.
499*28a936efSRobert Elliott
500*28a936efSRobert Elliottendmenu
501