1 # SPDX-License-Identifier: GPL-2.0
3 menu "Accelerated Cryptographic Algorithms for CPU (x86)"
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
13 Architecture: x86_64 using:
14 - ADX (large integer arithmetic)
16 config CRYPTO_AES_NI_INTEL
17 tristate "Ciphers: AES, modes: ECB, CBC, CTS, CTR, XTR, XTS, GCM (AES-NI)"
22 select CRYPTO_SKCIPHER
25 Block cipher: AES cipher algorithms
26 AEAD cipher: AES with GCM
27 Length-preserving ciphers: AES with ECB, CBC, CTS, CTR, XTR, XTS
29 Architecture: x86 (32-bit and 64-bit) using:
30 - AES-NI (AES new instructions)
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
39 Block cipher: Blowfish cipher algorithm
40 Length-preserving ciphers: Blowfish with ECB and CBC modes
44 config CRYPTO_CAMELLIA_X86_64
45 tristate "Ciphers: Camellia with modes: ECB, CBC"
46 depends on X86 && 64BIT
47 select CRYPTO_SKCIPHER
50 Block cipher: Camellia cipher algorithms
51 Length-preserving ciphers: Camellia with ECB and CBC modes
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
63 Length-preserving ciphers: Camellia with ECB and CBC modes
65 Architecture: x86_64 using:
66 - AES-NI (AES New Instructions)
67 - AVX (Advanced Vector Extensions)
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
74 Length-preserving ciphers: Camellia with ECB and CBC modes
76 Architecture: x86_64 using:
77 - AES-NI (AES New Instructions)
78 - AVX2 (Advanced Vector Extensions 2)
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
85 select CRYPTO_CAST_COMMON
89 Length-preserving ciphers: CAST5 (CAST-128) cipher algorithm
90 (RFC2144) with ECB and CBC modes
92 Architecture: x86_64 using:
93 - AVX (Advanced Vector Extensions)
95 Processes 16 blocks in parallel.
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
102 select CRYPTO_CAST_COMMON
107 Length-preserving ciphers: CAST6 (CAST-256) cipher algorithm
108 (RFC2612) with ECB and CBC modes
110 Architecture: x86_64 using:
111 - AVX (Advanced Vector Extensions)
113 Processes eight blocks in parallel.
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
122 Block cipher: Triple DES EDE (FIPS 46-3) cipher algorithm
123 Length-preserving ciphers: Triple DES EDE with ECB and CBC modes
127 Processes one or three blocks in parallel.
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
137 Length-preserving ciphers: Serpent cipher algorithm
138 with ECB and CBC modes
140 Architecture: x86_64 using:
141 - SSE2 (Streaming SIMD Extensions 2)
143 Processes eight blocks in parallel.
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
153 Length-preserving ciphers: Serpent cipher algorithm
154 with ECB and CBC modes
156 Architecture: x86 (32-bit) using:
157 - SSE2 (Streaming SIMD Extensions 2)
159 Processes four blocks in parallel.
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
170 Length-preserving ciphers: Serpent cipher algorithm
171 with ECB and CBC modes
173 Architecture: x86_64 using:
174 - AVX (Advanced Vector Extensions)
176 Processes eight blocks in parallel.
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
183 Length-preserving ciphers: Serpent cipher algorithm
184 with ECB and CBC modes
186 Architecture: x86_64 using:
187 - AVX2 (Advanced Vector Extensions 2)
189 Processes 16 blocks in parallel.
191 config CRYPTO_SM4_AESNI_AVX_X86_64
192 tristate "Ciphers: SM4 with modes: ECB, CBC, CTR (AES-NI/AVX)"
193 depends on X86 && 64BIT
194 select CRYPTO_SKCIPHER
199 Length-preserving ciphers: SM4 cipher algorithms
200 (OSCCA GB/T 32907-2016) with ECB, CBC, and CTR modes
202 Architecture: x86_64 using:
203 - AES-NI (AES New Instructions)
204 - AVX (Advanced Vector Extensions)
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.
212 config CRYPTO_SM4_AESNI_AVX2_X86_64
213 tristate "Ciphers: SM4 with modes: ECB, CBC, CTR (AES-NI/AVX2)"
214 depends on X86 && 64BIT
215 select CRYPTO_SKCIPHER
219 select CRYPTO_SM4_AESNI_AVX_X86_64
221 Length-preserving ciphers: SM4 cipher algorithms
222 (OSCCA GB/T 32907-2016) with ECB, CBC, and CTR modes
224 Architecture: x86_64 using:
225 - AES-NI (AES New Instructions)
226 - AVX2 (Advanced Vector Extensions 2)
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.
234 config CRYPTO_TWOFISH_586
235 tristate "Ciphers: Twofish (32-bit)"
236 depends on (X86 || UML_X86) && !64BIT
238 select CRYPTO_TWOFISH_COMMON
241 Block cipher: Twofish cipher algorithm
243 Architecture: x86 (32-bit)
245 config CRYPTO_TWOFISH_X86_64
246 tristate "Ciphers: Twofish"
247 depends on (X86 || UML_X86) && 64BIT
249 select CRYPTO_TWOFISH_COMMON
252 Block cipher: Twofish cipher algorithm
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
263 Length-preserving cipher: Twofish cipher algorithm
264 with ECB and CBC modes
268 Processes three blocks in parallel, better utilizing resources of
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
276 select CRYPTO_TWOFISH_COMMON
277 select CRYPTO_TWOFISH_X86_64
278 select CRYPTO_TWOFISH_X86_64_3WAY
281 Length-preserving cipher: Twofish cipher algorithm
282 with ECB and CBC modes
284 Architecture: x86_64 using:
285 - AVX (Advanced Vector Extensions)
287 Processes eight blocks in parallel.
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
297 Length-preserving cipher: ARIA cipher algorithms
298 (RFC 5794) with ECB and CTR modes
300 Architecture: x86_64 using:
301 - AES-NI (AES New Instructions)
302 - AVX (Advanced Vector Extensions)
303 - GFNI (Galois Field New Instructions)
305 Processes 16 blocks in parallel.
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
314 select CRYPTO_ARIA_AESNI_AVX_X86_64
316 Length-preserving cipher: ARIA cipher algorithms
317 (RFC 5794) with ECB and CTR modes
319 Architecture: x86_64 using:
320 - AES-NI (AES New Instructions)
321 - AVX2 (Advanced Vector Extensions)
322 - GFNI (Galois Field New Instructions)
324 Processes 32 blocks in parallel.
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
333 select CRYPTO_ARIA_AESNI_AVX_X86_64
334 select CRYPTO_ARIA_AESNI_AVX2_X86_64
336 Length-preserving cipher: ARIA cipher algorithms
337 (RFC 5794) with ECB and CTR modes
339 Architecture: x86_64 using:
340 - AVX512 (Advanced Vector Extensions)
341 - GFNI (Galois Field New Instructions)
343 Processes 64 blocks in parallel.
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
352 Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
353 stream cipher algorithms
355 Architecture: x86_64 using:
356 - SSSE3 (Supplemental SSE3)
357 - AVX2 (Advanced Vector Extensions 2)
358 - AVX-512VL (Advanced Vector Extensions-512VL)
360 config CRYPTO_AEGIS128_AESNI_SSE2
361 tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)"
362 depends on X86 && 64BIT
366 AEGIS-128 AEAD algorithm
368 Architecture: x86_64 using:
369 - AES-NI (AES New Instructions)
370 - SSE2 (Streaming SIMD Extensions 2)
372 config CRYPTO_NHPOLY1305_SSE2
373 tristate "Hash functions: NHPoly1305 (SSE2)"
374 depends on X86 && 64BIT
375 select CRYPTO_NHPOLY1305
377 NHPoly1305 hash function for Adiantum
379 Architecture: x86_64 using:
380 - SSE2 (Streaming SIMD Extensions 2)
382 config CRYPTO_NHPOLY1305_AVX2
383 tristate "Hash functions: NHPoly1305 (AVX2)"
384 depends on X86 && 64BIT
385 select CRYPTO_NHPOLY1305
387 NHPoly1305 hash function for Adiantum
389 Architecture: x86_64 using:
390 - AVX2 (Advanced Vector Extensions 2)
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
398 BLAKE2s cryptographic hash function (RFC 7693)
400 Architecture: x86_64 using:
401 - SSSE3 (Supplemental SSE3)
402 - AVX-512 (Advanced Vector Extensions-512)
404 config CRYPTO_POLYVAL_CLMUL_NI
405 tristate "Hash functions: POLYVAL (CLMUL-NI)"
406 depends on X86 && 64BIT
407 select CRYPTO_POLYVAL
409 POLYVAL hash function for HCTR2
411 Architecture: x86_64 using:
412 - CLMUL-NI (carry-less multiplication new instructions)
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
420 Poly1305 authenticator algorithm (RFC7539)
422 Architecture: x86_64 using:
423 - SSE2 (Streaming SIMD Extensions 2)
424 - AVX2 (Advanced Vector Extensions 2)
426 config CRYPTO_SHA1_SSSE3
427 tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)"
428 depends on X86 && 64BIT
432 SHA-1 secure hash algorithm (FIPS 180)
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)
440 config CRYPTO_SHA256_SSSE3
441 tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)"
442 depends on X86 && 64BIT
446 SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
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)
454 config CRYPTO_SHA512_SSSE3
455 tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)"
456 depends on X86 && 64BIT
460 SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
462 Architecture: x86_64 using:
463 - SSSE3 (Supplemental SSE3)
464 - AVX (Advanced Vector Extensions)
465 - AVX2 (Advanced Vector Extensions 2)
467 config CRYPTO_SM3_AVX_X86_64
468 tristate "Hash functions: SM3 (AVX)"
469 depends on X86 && 64BIT
473 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3
475 Architecture: x86_64 using:
476 - AVX (Advanced Vector Extensions)
480 config CRYPTO_GHASH_CLMUL_NI_INTEL
481 tristate "Hash functions: GHASH (CLMUL-NI)"
482 depends on X86 && 64BIT
485 GCM GHASH hash function (NIST SP800-38D)
487 Architecture: x86_64 using:
488 - CLMUL-NI (carry-less multiplication new instructions)
490 config CRYPTO_CRC32C_INTEL
491 tristate "CRC32c (SSE4.2/PCLMULQDQ)"
495 CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
497 Architecture: x86 (32-bit and 64-bit) using:
498 - SSE4.2 (Streaming SIMD Extensions 4.2) CRC32 instruction
499 - PCLMULQDQ (carry-less multiplication)
501 config CRYPTO_CRC32_PCLMUL
502 tristate "CRC32 (PCLMULQDQ)"
507 CRC32 CRC algorithm (IEEE 802.3)
509 Architecture: x86 (32-bit and 64-bit) using:
510 - PCLMULQDQ (carry-less multiplication)
512 config CRYPTO_CRCT10DIF_PCLMUL
513 tristate "CRCT10DIF (PCLMULQDQ)"
514 depends on X86 && 64BIT && CRC_T10DIF
517 CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
519 Architecture: x86_64 using:
520 - PCLMULQDQ (carry-less multiplication)