GNU Linux-libre 6.1.24-gnu
[releases.git] / arch / x86 / crypto / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2
3 menu "Accelerated Cryptographic Algorithms for CPU (x86)"
4
5 config CRYPTO_CURVE25519_X86
6         tristate "Public key crypto: Curve25519 (ADX)"
7         depends on X86 && 64BIT
8         select CRYPTO_LIB_CURVE25519_GENERIC
9         select CRYPTO_ARCH_HAVE_LIB_CURVE25519
10         help
11           Curve25519 algorithm
12
13           Architecture: x86_64 using:
14           - ADX (large integer arithmetic)
15
16 config CRYPTO_AES_NI_INTEL
17         tristate "Ciphers: AES, modes: ECB, CBC, CTS, CTR, XTR, XTS, GCM (AES-NI)"
18         depends on X86
19         select CRYPTO_AEAD
20         select CRYPTO_LIB_AES
21         select CRYPTO_ALGAPI
22         select CRYPTO_SKCIPHER
23         select CRYPTO_SIMD
24         help
25           Block cipher: AES cipher algorithms
26           AEAD cipher: AES with GCM
27           Length-preserving ciphers: AES with ECB, CBC, CTS, CTR, XTR, XTS
28
29           Architecture: x86 (32-bit and 64-bit) using:
30           - AES-NI (AES new instructions)
31
32 config CRYPTO_BLOWFISH_X86_64
33         tristate "Ciphers: Blowfish, modes: ECB, CBC"
34         depends on X86 && 64BIT
35         select CRYPTO_SKCIPHER
36         select CRYPTO_BLOWFISH_COMMON
37         imply CRYPTO_CTR
38         help
39           Block cipher: Blowfish cipher algorithm
40           Length-preserving ciphers: Blowfish with ECB and CBC modes
41
42           Architecture: x86_64
43
44 config CRYPTO_CAMELLIA_X86_64
45         tristate "Ciphers: Camellia with modes: ECB, CBC"
46         depends on X86 && 64BIT
47         select CRYPTO_SKCIPHER
48         imply CRYPTO_CTR
49         help
50           Block cipher: Camellia cipher algorithms
51           Length-preserving ciphers: Camellia with ECB and CBC modes
52
53           Architecture: x86_64
54
55 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
56         tristate "Ciphers: Camellia with modes: ECB, CBC (AES-NI/AVX)"
57         depends on X86 && 64BIT
58         select CRYPTO_SKCIPHER
59         select CRYPTO_CAMELLIA_X86_64
60         select CRYPTO_SIMD
61         imply CRYPTO_XTS
62         help
63           Length-preserving ciphers: Camellia with ECB and CBC modes
64
65           Architecture: x86_64 using:
66           - AES-NI (AES New Instructions)
67           - AVX (Advanced Vector Extensions)
68
69 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
70         tristate "Ciphers: Camellia with modes: ECB, CBC (AES-NI/AVX2)"
71         depends on X86 && 64BIT
72         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
73         help
74           Length-preserving ciphers: Camellia with ECB and CBC modes
75
76           Architecture: x86_64 using:
77           - AES-NI (AES New Instructions)
78           - AVX2 (Advanced Vector Extensions 2)
79
80 config CRYPTO_CAST5_AVX_X86_64
81         tristate "Ciphers: CAST5 with modes: ECB, CBC (AVX)"
82         depends on X86 && 64BIT
83         select CRYPTO_SKCIPHER
84         select CRYPTO_CAST5
85         select CRYPTO_CAST_COMMON
86         select CRYPTO_SIMD
87         imply CRYPTO_CTR
88         help
89           Length-preserving ciphers: CAST5 (CAST-128) cipher algorithm
90           (RFC2144) with ECB and CBC modes
91
92           Architecture: x86_64 using:
93           - AVX (Advanced Vector Extensions)
94
95           Processes 16 blocks in parallel.
96
97 config CRYPTO_CAST6_AVX_X86_64
98         tristate "Ciphers: CAST6 with modes: ECB, CBC (AVX)"
99         depends on X86 && 64BIT
100         select CRYPTO_SKCIPHER
101         select CRYPTO_CAST6
102         select CRYPTO_CAST_COMMON
103         select CRYPTO_SIMD
104         imply CRYPTO_XTS
105         imply CRYPTO_CTR
106         help
107           Length-preserving ciphers: CAST6 (CAST-256) cipher algorithm
108           (RFC2612) with ECB and CBC modes
109
110           Architecture: x86_64 using:
111           - AVX (Advanced Vector Extensions)
112
113           Processes eight blocks in parallel.
114
115 config CRYPTO_DES3_EDE_X86_64
116         tristate "Ciphers: Triple DES EDE with modes: ECB, CBC"
117         depends on X86 && 64BIT
118         select CRYPTO_SKCIPHER
119         select CRYPTO_LIB_DES
120         imply CRYPTO_CTR
121         help
122           Block cipher: Triple DES EDE (FIPS 46-3) cipher algorithm
123           Length-preserving ciphers: Triple DES EDE with ECB and CBC modes
124
125           Architecture: x86_64
126
127           Processes one or three blocks in parallel.
128
129 config CRYPTO_SERPENT_SSE2_X86_64
130         tristate "Ciphers: Serpent with modes: ECB, CBC (SSE2)"
131         depends on X86 && 64BIT
132         select CRYPTO_SKCIPHER
133         select CRYPTO_SERPENT
134         select CRYPTO_SIMD
135         imply CRYPTO_CTR
136         help
137           Length-preserving ciphers: Serpent cipher algorithm
138           with ECB and CBC modes
139
140           Architecture: x86_64 using:
141           - SSE2 (Streaming SIMD Extensions 2)
142
143           Processes eight blocks in parallel.
144
145 config CRYPTO_SERPENT_SSE2_586
146         tristate "Ciphers: Serpent with modes: ECB, CBC (32-bit with SSE2)"
147         depends on X86 && !64BIT
148         select CRYPTO_SKCIPHER
149         select CRYPTO_SERPENT
150         select CRYPTO_SIMD
151         imply CRYPTO_CTR
152         help
153           Length-preserving ciphers: Serpent cipher algorithm
154           with ECB and CBC modes
155
156           Architecture: x86 (32-bit) using:
157           - SSE2 (Streaming SIMD Extensions 2)
158
159           Processes four blocks in parallel.
160
161 config CRYPTO_SERPENT_AVX_X86_64
162         tristate "Ciphers: Serpent with modes: ECB, CBC (AVX)"
163         depends on X86 && 64BIT
164         select CRYPTO_SKCIPHER
165         select CRYPTO_SERPENT
166         select CRYPTO_SIMD
167         imply CRYPTO_XTS
168         imply CRYPTO_CTR
169         help
170           Length-preserving ciphers: Serpent cipher algorithm
171           with ECB and CBC modes
172
173           Architecture: x86_64 using:
174           - AVX (Advanced Vector Extensions)
175
176           Processes eight blocks in parallel.
177
178 config CRYPTO_SERPENT_AVX2_X86_64
179         tristate "Ciphers: Serpent with modes: ECB, CBC (AVX2)"
180         depends on X86 && 64BIT
181         select CRYPTO_SERPENT_AVX_X86_64
182         help
183           Length-preserving ciphers: Serpent cipher algorithm
184           with ECB and CBC modes
185
186           Architecture: x86_64 using:
187           - AVX2 (Advanced Vector Extensions 2)
188
189           Processes 16 blocks in parallel.
190
191 config CRYPTO_SM4_AESNI_AVX_X86_64
192         tristate "Ciphers: SM4 with modes: ECB, CBC, CFB, CTR (AES-NI/AVX)"
193         depends on X86 && 64BIT
194         select CRYPTO_SKCIPHER
195         select CRYPTO_SIMD
196         select CRYPTO_ALGAPI
197         select CRYPTO_SM4
198         help
199           Length-preserving ciphers: SM4 cipher algorithms
200           (OSCCA GB/T 32907-2016) with ECB, CBC, CFB, and CTR modes
201
202           Architecture: x86_64 using:
203           - AES-NI (AES New Instructions)
204           - AVX (Advanced Vector Extensions)
205
206           Through two affine transforms,
207           we can use the AES S-Box to simulate the SM4 S-Box to achieve the
208           effect of instruction acceleration.
209
210           If unsure, say N.
211
212 config CRYPTO_SM4_AESNI_AVX2_X86_64
213         tristate "Ciphers: SM4 with modes: ECB, CBC, CFB, CTR (AES-NI/AVX2)"
214         depends on X86 && 64BIT
215         select CRYPTO_SKCIPHER
216         select CRYPTO_SIMD
217         select CRYPTO_ALGAPI
218         select CRYPTO_SM4
219         select CRYPTO_SM4_AESNI_AVX_X86_64
220         help
221           Length-preserving ciphers: SM4 cipher algorithms
222           (OSCCA GB/T 32907-2016) with ECB, CBC, CFB, and CTR modes
223
224           Architecture: x86_64 using:
225           - AES-NI (AES New Instructions)
226           - AVX2 (Advanced Vector Extensions 2)
227
228           Through two affine transforms,
229           we can use the AES S-Box to simulate the SM4 S-Box to achieve the
230           effect of instruction acceleration.
231
232           If unsure, say N.
233
234 config CRYPTO_TWOFISH_586
235         tristate "Ciphers: Twofish (32-bit)"
236         depends on (X86 || UML_X86) && !64BIT
237         select CRYPTO_ALGAPI
238         select CRYPTO_TWOFISH_COMMON
239         imply CRYPTO_CTR
240         help
241           Block cipher: Twofish cipher algorithm
242
243           Architecture: x86 (32-bit)
244
245 config CRYPTO_TWOFISH_X86_64
246         tristate "Ciphers: Twofish"
247         depends on (X86 || UML_X86) && 64BIT
248         select CRYPTO_ALGAPI
249         select CRYPTO_TWOFISH_COMMON
250         imply CRYPTO_CTR
251         help
252           Block cipher: Twofish cipher algorithm
253
254           Architecture: x86_64
255
256 config CRYPTO_TWOFISH_X86_64_3WAY
257         tristate "Ciphers: Twofish with modes: ECB, CBC (3-way parallel)"
258         depends on X86 && 64BIT
259         select CRYPTO_SKCIPHER
260         select CRYPTO_TWOFISH_COMMON
261         select CRYPTO_TWOFISH_X86_64
262         help
263           Length-preserving cipher: Twofish cipher algorithm
264           with ECB and CBC modes
265
266           Architecture: x86_64
267
268           Processes three blocks in parallel, better utilizing resources of
269           out-of-order CPUs.
270
271 config CRYPTO_TWOFISH_AVX_X86_64
272         tristate "Ciphers: Twofish with modes: ECB, CBC (AVX)"
273         depends on X86 && 64BIT
274         select CRYPTO_SKCIPHER
275         select CRYPTO_SIMD
276         select CRYPTO_TWOFISH_COMMON
277         select CRYPTO_TWOFISH_X86_64
278         select CRYPTO_TWOFISH_X86_64_3WAY
279         imply CRYPTO_XTS
280         help
281           Length-preserving cipher: Twofish cipher algorithm
282           with ECB and CBC modes
283
284           Architecture: x86_64 using:
285           - AVX (Advanced Vector Extensions)
286
287           Processes eight blocks in parallel.
288
289 config CRYPTO_ARIA_AESNI_AVX_X86_64
290         tristate "Ciphers: ARIA with modes: ECB, CTR (AES-NI/AVX/GFNI)"
291         depends on X86 && 64BIT
292         select CRYPTO_SKCIPHER
293         select CRYPTO_SIMD
294         select CRYPTO_ALGAPI
295         select CRYPTO_ARIA
296         help
297           Length-preserving cipher: ARIA cipher algorithms
298           (RFC 5794) with ECB and CTR modes
299
300           Architecture: x86_64 using:
301           - AES-NI (AES New Instructions)
302           - AVX (Advanced Vector Extensions)
303           - GFNI (Galois Field New Instructions)
304
305           Processes 16 blocks in parallel.
306
307 config CRYPTO_CHACHA20_X86_64
308         tristate "Ciphers: ChaCha20, XChaCha20, XChaCha12 (SSSE3/AVX2/AVX-512VL)"
309         depends on X86 && 64BIT
310         select CRYPTO_SKCIPHER
311         select CRYPTO_LIB_CHACHA_GENERIC
312         select CRYPTO_ARCH_HAVE_LIB_CHACHA
313         help
314           Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
315           stream cipher algorithms
316
317           Architecture: x86_64 using:
318           - SSSE3 (Supplemental SSE3)
319           - AVX2 (Advanced Vector Extensions 2)
320           - AVX-512VL (Advanced Vector Extensions-512VL)
321
322 config CRYPTO_AEGIS128_AESNI_SSE2
323         tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)"
324         depends on X86 && 64BIT
325         select CRYPTO_AEAD
326         select CRYPTO_SIMD
327         help
328           AEGIS-128 AEAD algorithm
329
330           Architecture: x86_64 using:
331           - AES-NI (AES New Instructions)
332           - SSE2 (Streaming SIMD Extensions 2)
333
334 config CRYPTO_NHPOLY1305_SSE2
335         tristate "Hash functions: NHPoly1305 (SSE2)"
336         depends on X86 && 64BIT
337         select CRYPTO_NHPOLY1305
338         help
339           NHPoly1305 hash function for Adiantum
340
341           Architecture: x86_64 using:
342           - SSE2 (Streaming SIMD Extensions 2)
343
344 config CRYPTO_NHPOLY1305_AVX2
345         tristate "Hash functions: NHPoly1305 (AVX2)"
346         depends on X86 && 64BIT
347         select CRYPTO_NHPOLY1305
348         help
349           NHPoly1305 hash function for Adiantum
350
351           Architecture: x86_64 using:
352           - AVX2 (Advanced Vector Extensions 2)
353
354 config CRYPTO_BLAKE2S_X86
355         bool "Hash functions: BLAKE2s (SSSE3/AVX-512)"
356         depends on X86 && 64BIT
357         select CRYPTO_LIB_BLAKE2S_GENERIC
358         select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
359         help
360           BLAKE2s cryptographic hash function (RFC 7693)
361
362           Architecture: x86_64 using:
363           - SSSE3 (Supplemental SSE3)
364           - AVX-512 (Advanced Vector Extensions-512)
365
366 config CRYPTO_POLYVAL_CLMUL_NI
367         tristate "Hash functions: POLYVAL (CLMUL-NI)"
368         depends on X86 && 64BIT
369         select CRYPTO_POLYVAL
370         help
371           POLYVAL hash function for HCTR2
372
373           Architecture: x86_64 using:
374           - CLMUL-NI (carry-less multiplication new instructions)
375
376 config CRYPTO_POLY1305_X86_64
377         tristate "Hash functions: Poly1305 (SSE2/AVX2)"
378         depends on X86 && 64BIT
379         select CRYPTO_LIB_POLY1305_GENERIC
380         select CRYPTO_ARCH_HAVE_LIB_POLY1305
381         help
382           Poly1305 authenticator algorithm (RFC7539)
383
384           Architecture: x86_64 using:
385           - SSE2 (Streaming SIMD Extensions 2)
386           - AVX2 (Advanced Vector Extensions 2)
387
388 config CRYPTO_SHA1_SSSE3
389         tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)"
390         depends on X86 && 64BIT
391         select CRYPTO_SHA1
392         select CRYPTO_HASH
393         help
394           SHA-1 secure hash algorithm (FIPS 180)
395
396           Architecture: x86_64 using:
397           - SSSE3 (Supplemental SSE3)
398           - AVX (Advanced Vector Extensions)
399           - AVX2 (Advanced Vector Extensions 2)
400           - SHA-NI (SHA Extensions New Instructions)
401
402 config CRYPTO_SHA256_SSSE3
403         tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)"
404         depends on X86 && 64BIT
405         select CRYPTO_SHA256
406         select CRYPTO_HASH
407         help
408           SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
409
410           Architecture: x86_64 using:
411           - SSSE3 (Supplemental SSE3)
412           - AVX (Advanced Vector Extensions)
413           - AVX2 (Advanced Vector Extensions 2)
414           - SHA-NI (SHA Extensions New Instructions)
415
416 config CRYPTO_SHA512_SSSE3
417         tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)"
418         depends on X86 && 64BIT
419         select CRYPTO_SHA512
420         select CRYPTO_HASH
421         help
422           SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
423
424           Architecture: x86_64 using:
425           - SSSE3 (Supplemental SSE3)
426           - AVX (Advanced Vector Extensions)
427           - AVX2 (Advanced Vector Extensions 2)
428
429 config CRYPTO_SM3_AVX_X86_64
430         tristate "Hash functions: SM3 (AVX)"
431         depends on X86 && 64BIT
432         select CRYPTO_HASH
433         select CRYPTO_SM3
434         help
435           SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3
436
437           Architecture: x86_64 using:
438           - AVX (Advanced Vector Extensions)
439
440           If unsure, say N.
441
442 config CRYPTO_GHASH_CLMUL_NI_INTEL
443         tristate "Hash functions: GHASH (CLMUL-NI)"
444         depends on X86 && 64BIT
445         select CRYPTO_CRYPTD
446         help
447           GCM GHASH hash function (NIST SP800-38D)
448
449           Architecture: x86_64 using:
450           - CLMUL-NI (carry-less multiplication new instructions)
451
452 config CRYPTO_CRC32C_INTEL
453         tristate "CRC32c (SSE4.2/PCLMULQDQ)"
454         depends on X86
455         select CRYPTO_HASH
456         help
457           CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
458
459           Architecture: x86 (32-bit and 64-bit) using:
460           - SSE4.2 (Streaming SIMD Extensions 4.2) CRC32 instruction
461           - PCLMULQDQ (carry-less multiplication)
462
463 config CRYPTO_CRC32_PCLMUL
464         tristate "CRC32 (PCLMULQDQ)"
465         depends on X86
466         select CRYPTO_HASH
467         select CRC32
468         help
469           CRC32 CRC algorithm (IEEE 802.3)
470
471           Architecture: x86 (32-bit and 64-bit) using:
472           - PCLMULQDQ (carry-less multiplication)
473
474 config CRYPTO_CRCT10DIF_PCLMUL
475         tristate "CRCT10DIF (PCLMULQDQ)"
476         depends on X86 && 64BIT && CRC_T10DIF
477         select CRYPTO_HASH
478         help
479           CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
480
481           Architecture: x86_64 using:
482           - PCLMULQDQ (carry-less multiplication)
483
484 endmenu