Merge tag 'drm-fixes-2023-10-20' of git://anongit.freedesktop.org/drm/drm
[platform/kernel/linux-starfive.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_ARIA_AESNI_AVX2_X86_64
308         tristate "Ciphers: ARIA with modes: ECB, CTR (AES-NI/AVX2/GFNI)"
309         depends on X86 && 64BIT
310         select CRYPTO_SKCIPHER
311         select CRYPTO_SIMD
312         select CRYPTO_ALGAPI
313         select CRYPTO_ARIA
314         select CRYPTO_ARIA_AESNI_AVX_X86_64
315         help
316           Length-preserving cipher: ARIA cipher algorithms
317           (RFC 5794) with ECB and CTR modes
318
319           Architecture: x86_64 using:
320           - AES-NI (AES New Instructions)
321           - AVX2 (Advanced Vector Extensions)
322           - GFNI (Galois Field New Instructions)
323
324           Processes 32 blocks in parallel.
325
326 config CRYPTO_ARIA_GFNI_AVX512_X86_64
327         tristate "Ciphers: ARIA with modes: ECB, CTR (AVX512/GFNI)"
328         depends on X86 && 64BIT && AS_AVX512 && AS_GFNI
329         select CRYPTO_SKCIPHER
330         select CRYPTO_SIMD
331         select CRYPTO_ALGAPI
332         select CRYPTO_ARIA
333         select CRYPTO_ARIA_AESNI_AVX_X86_64
334         select CRYPTO_ARIA_AESNI_AVX2_X86_64
335         help
336           Length-preserving cipher: ARIA cipher algorithms
337           (RFC 5794) with ECB and CTR modes
338
339           Architecture: x86_64 using:
340           - AVX512 (Advanced Vector Extensions)
341           - GFNI (Galois Field New Instructions)
342
343           Processes 64 blocks in parallel.
344
345 config CRYPTO_CHACHA20_X86_64
346         tristate "Ciphers: ChaCha20, XChaCha20, XChaCha12 (SSSE3/AVX2/AVX-512VL)"
347         depends on X86 && 64BIT
348         select CRYPTO_SKCIPHER
349         select CRYPTO_LIB_CHACHA_GENERIC
350         select CRYPTO_ARCH_HAVE_LIB_CHACHA
351         help
352           Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
353           stream cipher algorithms
354
355           Architecture: x86_64 using:
356           - SSSE3 (Supplemental SSE3)
357           - AVX2 (Advanced Vector Extensions 2)
358           - AVX-512VL (Advanced Vector Extensions-512VL)
359
360 config CRYPTO_AEGIS128_AESNI_SSE2
361         tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)"
362         depends on X86 && 64BIT
363         select CRYPTO_AEAD
364         select CRYPTO_SIMD
365         help
366           AEGIS-128 AEAD algorithm
367
368           Architecture: x86_64 using:
369           - AES-NI (AES New Instructions)
370           - SSE2 (Streaming SIMD Extensions 2)
371
372 config CRYPTO_NHPOLY1305_SSE2
373         tristate "Hash functions: NHPoly1305 (SSE2)"
374         depends on X86 && 64BIT
375         select CRYPTO_NHPOLY1305
376         help
377           NHPoly1305 hash function for Adiantum
378
379           Architecture: x86_64 using:
380           - SSE2 (Streaming SIMD Extensions 2)
381
382 config CRYPTO_NHPOLY1305_AVX2
383         tristate "Hash functions: NHPoly1305 (AVX2)"
384         depends on X86 && 64BIT
385         select CRYPTO_NHPOLY1305
386         help
387           NHPoly1305 hash function for Adiantum
388
389           Architecture: x86_64 using:
390           - AVX2 (Advanced Vector Extensions 2)
391
392 config CRYPTO_BLAKE2S_X86
393         bool "Hash functions: BLAKE2s (SSSE3/AVX-512)"
394         depends on X86 && 64BIT
395         select CRYPTO_LIB_BLAKE2S_GENERIC
396         select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
397         help
398           BLAKE2s cryptographic hash function (RFC 7693)
399
400           Architecture: x86_64 using:
401           - SSSE3 (Supplemental SSE3)
402           - AVX-512 (Advanced Vector Extensions-512)
403
404 config CRYPTO_POLYVAL_CLMUL_NI
405         tristate "Hash functions: POLYVAL (CLMUL-NI)"
406         depends on X86 && 64BIT
407         select CRYPTO_POLYVAL
408         help
409           POLYVAL hash function for HCTR2
410
411           Architecture: x86_64 using:
412           - CLMUL-NI (carry-less multiplication new instructions)
413
414 config CRYPTO_POLY1305_X86_64
415         tristate "Hash functions: Poly1305 (SSE2/AVX2)"
416         depends on X86 && 64BIT
417         select CRYPTO_LIB_POLY1305_GENERIC
418         select CRYPTO_ARCH_HAVE_LIB_POLY1305
419         help
420           Poly1305 authenticator algorithm (RFC7539)
421
422           Architecture: x86_64 using:
423           - SSE2 (Streaming SIMD Extensions 2)
424           - AVX2 (Advanced Vector Extensions 2)
425
426 config CRYPTO_SHA1_SSSE3
427         tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)"
428         depends on X86 && 64BIT
429         select CRYPTO_SHA1
430         select CRYPTO_HASH
431         help
432           SHA-1 secure hash algorithm (FIPS 180)
433
434           Architecture: x86_64 using:
435           - SSSE3 (Supplemental SSE3)
436           - AVX (Advanced Vector Extensions)
437           - AVX2 (Advanced Vector Extensions 2)
438           - SHA-NI (SHA Extensions New Instructions)
439
440 config CRYPTO_SHA256_SSSE3
441         tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)"
442         depends on X86 && 64BIT
443         select CRYPTO_SHA256
444         select CRYPTO_HASH
445         help
446           SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
447
448           Architecture: x86_64 using:
449           - SSSE3 (Supplemental SSE3)
450           - AVX (Advanced Vector Extensions)
451           - AVX2 (Advanced Vector Extensions 2)
452           - SHA-NI (SHA Extensions New Instructions)
453
454 config CRYPTO_SHA512_SSSE3
455         tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)"
456         depends on X86 && 64BIT
457         select CRYPTO_SHA512
458         select CRYPTO_HASH
459         help
460           SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
461
462           Architecture: x86_64 using:
463           - SSSE3 (Supplemental SSE3)
464           - AVX (Advanced Vector Extensions)
465           - AVX2 (Advanced Vector Extensions 2)
466
467 config CRYPTO_SM3_AVX_X86_64
468         tristate "Hash functions: SM3 (AVX)"
469         depends on X86 && 64BIT
470         select CRYPTO_HASH
471         select CRYPTO_SM3
472         help
473           SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3
474
475           Architecture: x86_64 using:
476           - AVX (Advanced Vector Extensions)
477
478           If unsure, say N.
479
480 config CRYPTO_GHASH_CLMUL_NI_INTEL
481         tristate "Hash functions: GHASH (CLMUL-NI)"
482         depends on X86 && 64BIT
483         select CRYPTO_CRYPTD
484         help
485           GCM GHASH hash function (NIST SP800-38D)
486
487           Architecture: x86_64 using:
488           - CLMUL-NI (carry-less multiplication new instructions)
489
490 config CRYPTO_CRC32C_INTEL
491         tristate "CRC32c (SSE4.2/PCLMULQDQ)"
492         depends on X86
493         select CRYPTO_HASH
494         help
495           CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
496
497           Architecture: x86 (32-bit and 64-bit) using:
498           - SSE4.2 (Streaming SIMD Extensions 4.2) CRC32 instruction
499           - PCLMULQDQ (carry-less multiplication)
500
501 config CRYPTO_CRC32_PCLMUL
502         tristate "CRC32 (PCLMULQDQ)"
503         depends on X86
504         select CRYPTO_HASH
505         select CRC32
506         help
507           CRC32 CRC algorithm (IEEE 802.3)
508
509           Architecture: x86 (32-bit and 64-bit) using:
510           - PCLMULQDQ (carry-less multiplication)
511
512 config CRYPTO_CRCT10DIF_PCLMUL
513         tristate "CRCT10DIF (PCLMULQDQ)"
514         depends on X86 && 64BIT && CRC_T10DIF
515         select CRYPTO_HASH
516         help
517           CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
518
519           Architecture: x86_64 using:
520           - PCLMULQDQ (carry-less multiplication)
521
522 endmenu