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