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, 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 32config 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 44config 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 55config 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 69config 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 80config 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 97config 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 115config 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 129config 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 145config 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 161config 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 178config 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 191config 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 212config 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 234config 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 245config 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 256config 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 271config 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 289config 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 307config 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 326config 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 345config 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 360config 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 372config 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 382config 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 392config 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 404config 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 414config 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 426config 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 440config 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 454config 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 467config 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 480config 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 490config 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 501config 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 512config 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 522endmenu 523