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, CFB, 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, CFB, 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, CFB, 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, CFB, 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_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
314 Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
315 stream cipher algorithms
317 Architecture: x86_64 using:
318 - SSSE3 (Supplemental SSE3)
319 - AVX2 (Advanced Vector Extensions 2)
320 - AVX-512VL (Advanced Vector Extensions-512VL)
322 config CRYPTO_AEGIS128_AESNI_SSE2
323 tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)"
324 depends on X86 && 64BIT
328 AEGIS-128 AEAD algorithm
330 Architecture: x86_64 using:
331 - AES-NI (AES New Instructions)
332 - SSE2 (Streaming SIMD Extensions 2)
334 config CRYPTO_NHPOLY1305_SSE2
335 tristate "Hash functions: NHPoly1305 (SSE2)"
336 depends on X86 && 64BIT
337 select CRYPTO_NHPOLY1305
339 NHPoly1305 hash function for Adiantum
341 Architecture: x86_64 using:
342 - SSE2 (Streaming SIMD Extensions 2)
344 config CRYPTO_NHPOLY1305_AVX2
345 tristate "Hash functions: NHPoly1305 (AVX2)"
346 depends on X86 && 64BIT
347 select CRYPTO_NHPOLY1305
349 NHPoly1305 hash function for Adiantum
351 Architecture: x86_64 using:
352 - AVX2 (Advanced Vector Extensions 2)
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
360 BLAKE2s cryptographic hash function (RFC 7693)
362 Architecture: x86_64 using:
363 - SSSE3 (Supplemental SSE3)
364 - AVX-512 (Advanced Vector Extensions-512)
366 config CRYPTO_POLYVAL_CLMUL_NI
367 tristate "Hash functions: POLYVAL (CLMUL-NI)"
368 depends on X86 && 64BIT
369 select CRYPTO_POLYVAL
371 POLYVAL hash function for HCTR2
373 Architecture: x86_64 using:
374 - CLMUL-NI (carry-less multiplication new instructions)
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
382 Poly1305 authenticator algorithm (RFC7539)
384 Architecture: x86_64 using:
385 - SSE2 (Streaming SIMD Extensions 2)
386 - AVX2 (Advanced Vector Extensions 2)
388 config CRYPTO_SHA1_SSSE3
389 tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)"
390 depends on X86 && 64BIT
394 SHA-1 secure hash algorithm (FIPS 180)
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)
402 config CRYPTO_SHA256_SSSE3
403 tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)"
404 depends on X86 && 64BIT
408 SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
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)
416 config CRYPTO_SHA512_SSSE3
417 tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)"
418 depends on X86 && 64BIT
422 SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
424 Architecture: x86_64 using:
425 - SSSE3 (Supplemental SSE3)
426 - AVX (Advanced Vector Extensions)
427 - AVX2 (Advanced Vector Extensions 2)
429 config CRYPTO_SM3_AVX_X86_64
430 tristate "Hash functions: SM3 (AVX)"
431 depends on X86 && 64BIT
435 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3
437 Architecture: x86_64 using:
438 - AVX (Advanced Vector Extensions)
442 config CRYPTO_GHASH_CLMUL_NI_INTEL
443 tristate "Hash functions: GHASH (CLMUL-NI)"
444 depends on X86 && 64BIT
447 GCM GHASH hash function (NIST SP800-38D)
449 Architecture: x86_64 using:
450 - CLMUL-NI (carry-less multiplication new instructions)
452 config CRYPTO_CRC32C_INTEL
453 tristate "CRC32c (SSE4.2/PCLMULQDQ)"
457 CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
459 Architecture: x86 (32-bit and 64-bit) using:
460 - SSE4.2 (Streaming SIMD Extensions 4.2) CRC32 instruction
461 - PCLMULQDQ (carry-less multiplication)
463 config CRYPTO_CRC32_PCLMUL
464 tristate "CRC32 (PCLMULQDQ)"
469 CRC32 CRC algorithm (IEEE 802.3)
471 Architecture: x86 (32-bit and 64-bit) using:
472 - PCLMULQDQ (carry-less multiplication)
474 config CRYPTO_CRCT10DIF_PCLMUL
475 tristate "CRCT10DIF (PCLMULQDQ)"
476 depends on X86 && 64BIT && CRC_T10DIF
479 CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
481 Architecture: x86_64 using:
482 - PCLMULQDQ (carry-less multiplication)