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