1*28a936efSRobert Elliott# SPDX-License-Identifier: GPL-2.0 2*28a936efSRobert Elliott 3*28a936efSRobert Elliottmenu "Accelerated Cryptographic Algorithms for CPU (x86)" 4*28a936efSRobert Elliott 5*28a936efSRobert Elliottconfig CRYPTO_CURVE25519_X86 6*28a936efSRobert Elliott tristate "x86_64 accelerated Curve25519 scalar multiplication library" 7*28a936efSRobert Elliott depends on X86 && 64BIT 8*28a936efSRobert Elliott select CRYPTO_LIB_CURVE25519_GENERIC 9*28a936efSRobert Elliott select CRYPTO_ARCH_HAVE_LIB_CURVE25519 10*28a936efSRobert Elliott 11*28a936efSRobert Elliottconfig CRYPTO_AES_NI_INTEL 12*28a936efSRobert Elliott tristate "AES cipher algorithms (AES-NI)" 13*28a936efSRobert Elliott depends on X86 14*28a936efSRobert Elliott select CRYPTO_AEAD 15*28a936efSRobert Elliott select CRYPTO_LIB_AES 16*28a936efSRobert Elliott select CRYPTO_ALGAPI 17*28a936efSRobert Elliott select CRYPTO_SKCIPHER 18*28a936efSRobert Elliott select CRYPTO_SIMD 19*28a936efSRobert Elliott help 20*28a936efSRobert Elliott Use Intel AES-NI instructions for AES algorithm. 21*28a936efSRobert Elliott 22*28a936efSRobert Elliott AES cipher algorithms (FIPS-197). AES uses the Rijndael 23*28a936efSRobert Elliott algorithm. 24*28a936efSRobert Elliott 25*28a936efSRobert Elliott Rijndael appears to be consistently a very good performer in 26*28a936efSRobert Elliott both hardware and software across a wide range of computing 27*28a936efSRobert Elliott environments regardless of its use in feedback or non-feedback 28*28a936efSRobert Elliott modes. Its key setup time is excellent, and its key agility is 29*28a936efSRobert Elliott good. Rijndael's very low memory requirements make it very well 30*28a936efSRobert Elliott suited for restricted-space environments, in which it also 31*28a936efSRobert Elliott demonstrates excellent performance. Rijndael's operations are 32*28a936efSRobert Elliott among the easiest to defend against power and timing attacks. 33*28a936efSRobert Elliott 34*28a936efSRobert Elliott The AES specifies three key sizes: 128, 192 and 256 bits 35*28a936efSRobert Elliott 36*28a936efSRobert Elliott See <http://csrc.nist.gov/encryption/aes/> for more information. 37*28a936efSRobert Elliott 38*28a936efSRobert Elliott In addition to AES cipher algorithm support, the acceleration 39*28a936efSRobert Elliott for some popular block cipher mode is supported too, including 40*28a936efSRobert Elliott ECB, CBC, LRW, XTS. The 64 bit version has additional 41*28a936efSRobert Elliott acceleration for CTR and XCTR. 42*28a936efSRobert Elliott 43*28a936efSRobert Elliottconfig CRYPTO_BLOWFISH_X86_64 44*28a936efSRobert Elliott tristate "Blowfish cipher algorithm (x86_64)" 45*28a936efSRobert Elliott depends on X86 && 64BIT 46*28a936efSRobert Elliott select CRYPTO_SKCIPHER 47*28a936efSRobert Elliott select CRYPTO_BLOWFISH_COMMON 48*28a936efSRobert Elliott imply CRYPTO_CTR 49*28a936efSRobert Elliott help 50*28a936efSRobert Elliott Blowfish cipher algorithm (x86_64), by Bruce Schneier. 51*28a936efSRobert Elliott 52*28a936efSRobert Elliott This is a variable key length cipher which can use keys from 32 53*28a936efSRobert Elliott bits to 448 bits in length. It's fast, simple and specifically 54*28a936efSRobert Elliott designed for use on "large microprocessors". 55*28a936efSRobert Elliott 56*28a936efSRobert Elliott See also: 57*28a936efSRobert Elliott <https://www.schneier.com/blowfish.html> 58*28a936efSRobert Elliott 59*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_X86_64 60*28a936efSRobert Elliott tristate "Camellia cipher algorithm (x86_64)" 61*28a936efSRobert Elliott depends on X86 && 64BIT 62*28a936efSRobert Elliott select CRYPTO_SKCIPHER 63*28a936efSRobert Elliott imply CRYPTO_CTR 64*28a936efSRobert Elliott help 65*28a936efSRobert Elliott Camellia cipher algorithm module (x86_64). 66*28a936efSRobert Elliott 67*28a936efSRobert Elliott Camellia is a symmetric key block cipher developed jointly 68*28a936efSRobert Elliott at NTT and Mitsubishi Electric Corporation. 69*28a936efSRobert Elliott 70*28a936efSRobert Elliott The Camellia specifies three key sizes: 128, 192 and 256 bits. 71*28a936efSRobert Elliott 72*28a936efSRobert Elliott See also: 73*28a936efSRobert Elliott <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 74*28a936efSRobert Elliott 75*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX_X86_64 76*28a936efSRobert Elliott tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)" 77*28a936efSRobert Elliott depends on X86 && 64BIT 78*28a936efSRobert Elliott select CRYPTO_SKCIPHER 79*28a936efSRobert Elliott select CRYPTO_CAMELLIA_X86_64 80*28a936efSRobert Elliott select CRYPTO_SIMD 81*28a936efSRobert Elliott imply CRYPTO_XTS 82*28a936efSRobert Elliott help 83*28a936efSRobert Elliott Camellia cipher algorithm module (x86_64/AES-NI/AVX). 84*28a936efSRobert Elliott 85*28a936efSRobert Elliott Camellia is a symmetric key block cipher developed jointly 86*28a936efSRobert Elliott at NTT and Mitsubishi Electric Corporation. 87*28a936efSRobert Elliott 88*28a936efSRobert Elliott The Camellia specifies three key sizes: 128, 192 and 256 bits. 89*28a936efSRobert Elliott 90*28a936efSRobert Elliott See also: 91*28a936efSRobert Elliott <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 92*28a936efSRobert Elliott 93*28a936efSRobert Elliottconfig CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 94*28a936efSRobert Elliott tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)" 95*28a936efSRobert Elliott depends on X86 && 64BIT 96*28a936efSRobert Elliott select CRYPTO_CAMELLIA_AESNI_AVX_X86_64 97*28a936efSRobert Elliott help 98*28a936efSRobert Elliott Camellia cipher algorithm module (x86_64/AES-NI/AVX2). 99*28a936efSRobert Elliott 100*28a936efSRobert Elliott Camellia is a symmetric key block cipher developed jointly 101*28a936efSRobert Elliott at NTT and Mitsubishi Electric Corporation. 102*28a936efSRobert Elliott 103*28a936efSRobert Elliott The Camellia specifies three key sizes: 128, 192 and 256 bits. 104*28a936efSRobert Elliott 105*28a936efSRobert Elliott See also: 106*28a936efSRobert Elliott <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 107*28a936efSRobert Elliott 108*28a936efSRobert Elliottconfig CRYPTO_CAST5_AVX_X86_64 109*28a936efSRobert Elliott tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)" 110*28a936efSRobert Elliott depends on X86 && 64BIT 111*28a936efSRobert Elliott select CRYPTO_SKCIPHER 112*28a936efSRobert Elliott select CRYPTO_CAST5 113*28a936efSRobert Elliott select CRYPTO_CAST_COMMON 114*28a936efSRobert Elliott select CRYPTO_SIMD 115*28a936efSRobert Elliott imply CRYPTO_CTR 116*28a936efSRobert Elliott help 117*28a936efSRobert Elliott The CAST5 encryption algorithm (synonymous with CAST-128) is 118*28a936efSRobert Elliott described in RFC2144. 119*28a936efSRobert Elliott 120*28a936efSRobert Elliott This module provides the Cast5 cipher algorithm that processes 121*28a936efSRobert Elliott sixteen blocks parallel using the AVX instruction set. 122*28a936efSRobert Elliott 123*28a936efSRobert Elliottconfig CRYPTO_CAST6_AVX_X86_64 124*28a936efSRobert Elliott tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)" 125*28a936efSRobert Elliott depends on X86 && 64BIT 126*28a936efSRobert Elliott select CRYPTO_SKCIPHER 127*28a936efSRobert Elliott select CRYPTO_CAST6 128*28a936efSRobert Elliott select CRYPTO_CAST_COMMON 129*28a936efSRobert Elliott select CRYPTO_SIMD 130*28a936efSRobert Elliott imply CRYPTO_XTS 131*28a936efSRobert Elliott imply CRYPTO_CTR 132*28a936efSRobert Elliott help 133*28a936efSRobert Elliott The CAST6 encryption algorithm (synonymous with CAST-256) is 134*28a936efSRobert Elliott described in RFC2612. 135*28a936efSRobert Elliott 136*28a936efSRobert Elliott This module provides the Cast6 cipher algorithm that processes 137*28a936efSRobert Elliott eight blocks parallel using the AVX instruction set. 138*28a936efSRobert Elliott 139*28a936efSRobert Elliottconfig CRYPTO_DES3_EDE_X86_64 140*28a936efSRobert Elliott tristate "Triple DES EDE cipher algorithm (x86-64)" 141*28a936efSRobert Elliott depends on X86 && 64BIT 142*28a936efSRobert Elliott select CRYPTO_SKCIPHER 143*28a936efSRobert Elliott select CRYPTO_LIB_DES 144*28a936efSRobert Elliott imply CRYPTO_CTR 145*28a936efSRobert Elliott help 146*28a936efSRobert Elliott Triple DES EDE (FIPS 46-3) algorithm. 147*28a936efSRobert Elliott 148*28a936efSRobert Elliott This module provides implementation of the Triple DES EDE cipher 149*28a936efSRobert Elliott algorithm that is optimized for x86-64 processors. Two versions of 150*28a936efSRobert Elliott algorithm are provided; regular processing one input block and 151*28a936efSRobert Elliott one that processes three blocks parallel. 152*28a936efSRobert Elliott 153*28a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_X86_64 154*28a936efSRobert Elliott tristate "Serpent cipher algorithm (x86_64/SSE2)" 155*28a936efSRobert Elliott depends on X86 && 64BIT 156*28a936efSRobert Elliott select CRYPTO_SKCIPHER 157*28a936efSRobert Elliott select CRYPTO_SERPENT 158*28a936efSRobert Elliott select CRYPTO_SIMD 159*28a936efSRobert Elliott imply CRYPTO_CTR 160*28a936efSRobert Elliott help 161*28a936efSRobert Elliott Serpent cipher algorithm, by Anderson, Biham & Knudsen. 162*28a936efSRobert Elliott 163*28a936efSRobert Elliott Keys are allowed to be from 0 to 256 bits in length, in steps 164*28a936efSRobert Elliott of 8 bits. 165*28a936efSRobert Elliott 166*28a936efSRobert Elliott This module provides Serpent cipher algorithm that processes eight 167*28a936efSRobert Elliott blocks parallel using SSE2 instruction set. 168*28a936efSRobert Elliott 169*28a936efSRobert Elliott See also: 170*28a936efSRobert Elliott <https://www.cl.cam.ac.uk/~rja14/serpent.html> 171*28a936efSRobert Elliott 172*28a936efSRobert Elliottconfig CRYPTO_SERPENT_SSE2_586 173*28a936efSRobert Elliott tristate "Serpent cipher algorithm (i586/SSE2)" 174*28a936efSRobert Elliott depends on X86 && !64BIT 175*28a936efSRobert Elliott select CRYPTO_SKCIPHER 176*28a936efSRobert Elliott select CRYPTO_SERPENT 177*28a936efSRobert Elliott select CRYPTO_SIMD 178*28a936efSRobert Elliott imply CRYPTO_CTR 179*28a936efSRobert Elliott help 180*28a936efSRobert Elliott Serpent cipher algorithm, by Anderson, Biham & Knudsen. 181*28a936efSRobert Elliott 182*28a936efSRobert Elliott Keys are allowed to be from 0 to 256 bits in length, in steps 183*28a936efSRobert Elliott of 8 bits. 184*28a936efSRobert Elliott 185*28a936efSRobert Elliott This module provides Serpent cipher algorithm that processes four 186*28a936efSRobert Elliott blocks parallel using SSE2 instruction set. 187*28a936efSRobert Elliott 188*28a936efSRobert Elliott See also: 189*28a936efSRobert Elliott <https://www.cl.cam.ac.uk/~rja14/serpent.html> 190*28a936efSRobert Elliott 191*28a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX_X86_64 192*28a936efSRobert Elliott tristate "Serpent cipher algorithm (x86_64/AVX)" 193*28a936efSRobert Elliott depends on X86 && 64BIT 194*28a936efSRobert Elliott select CRYPTO_SKCIPHER 195*28a936efSRobert Elliott select CRYPTO_SERPENT 196*28a936efSRobert Elliott select CRYPTO_SIMD 197*28a936efSRobert Elliott imply CRYPTO_XTS 198*28a936efSRobert Elliott imply CRYPTO_CTR 199*28a936efSRobert Elliott help 200*28a936efSRobert Elliott Serpent cipher algorithm, by Anderson, Biham & Knudsen. 201*28a936efSRobert Elliott 202*28a936efSRobert Elliott Keys are allowed to be from 0 to 256 bits in length, in steps 203*28a936efSRobert Elliott of 8 bits. 204*28a936efSRobert Elliott 205*28a936efSRobert Elliott This module provides the Serpent cipher algorithm that processes 206*28a936efSRobert Elliott eight blocks parallel using the AVX instruction set. 207*28a936efSRobert Elliott 208*28a936efSRobert Elliott See also: 209*28a936efSRobert Elliott <https://www.cl.cam.ac.uk/~rja14/serpent.html> 210*28a936efSRobert Elliott 211*28a936efSRobert Elliottconfig CRYPTO_SERPENT_AVX2_X86_64 212*28a936efSRobert Elliott tristate "Serpent cipher algorithm (x86_64/AVX2)" 213*28a936efSRobert Elliott depends on X86 && 64BIT 214*28a936efSRobert Elliott select CRYPTO_SERPENT_AVX_X86_64 215*28a936efSRobert Elliott help 216*28a936efSRobert Elliott Serpent cipher algorithm, by Anderson, Biham & Knudsen. 217*28a936efSRobert Elliott 218*28a936efSRobert Elliott Keys are allowed to be from 0 to 256 bits in length, in steps 219*28a936efSRobert Elliott of 8 bits. 220*28a936efSRobert Elliott 221*28a936efSRobert Elliott This module provides Serpent cipher algorithm that processes 16 222*28a936efSRobert Elliott blocks parallel using AVX2 instruction set. 223*28a936efSRobert Elliott 224*28a936efSRobert Elliott See also: 225*28a936efSRobert Elliott <https://www.cl.cam.ac.uk/~rja14/serpent.html> 226*28a936efSRobert Elliott 227*28a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX_X86_64 228*28a936efSRobert Elliott tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)" 229*28a936efSRobert Elliott depends on X86 && 64BIT 230*28a936efSRobert Elliott select CRYPTO_SKCIPHER 231*28a936efSRobert Elliott select CRYPTO_SIMD 232*28a936efSRobert Elliott select CRYPTO_ALGAPI 233*28a936efSRobert Elliott select CRYPTO_SM4 234*28a936efSRobert Elliott help 235*28a936efSRobert Elliott SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX). 236*28a936efSRobert Elliott 237*28a936efSRobert Elliott SM4 (GBT.32907-2016) is a cryptographic standard issued by the 238*28a936efSRobert Elliott Organization of State Commercial Administration of China (OSCCA) 239*28a936efSRobert Elliott as an authorized cryptographic algorithms for the use within China. 240*28a936efSRobert Elliott 241*28a936efSRobert Elliott This is SM4 optimized implementation using AES-NI/AVX/x86_64 242*28a936efSRobert Elliott instruction set for block cipher. Through two affine transforms, 243*28a936efSRobert Elliott we can use the AES S-Box to simulate the SM4 S-Box to achieve the 244*28a936efSRobert Elliott effect of instruction acceleration. 245*28a936efSRobert Elliott 246*28a936efSRobert Elliott If unsure, say N. 247*28a936efSRobert Elliott 248*28a936efSRobert Elliottconfig CRYPTO_SM4_AESNI_AVX2_X86_64 249*28a936efSRobert Elliott tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)" 250*28a936efSRobert Elliott depends on X86 && 64BIT 251*28a936efSRobert Elliott select CRYPTO_SKCIPHER 252*28a936efSRobert Elliott select CRYPTO_SIMD 253*28a936efSRobert Elliott select CRYPTO_ALGAPI 254*28a936efSRobert Elliott select CRYPTO_SM4 255*28a936efSRobert Elliott select CRYPTO_SM4_AESNI_AVX_X86_64 256*28a936efSRobert Elliott help 257*28a936efSRobert Elliott SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2). 258*28a936efSRobert Elliott 259*28a936efSRobert Elliott SM4 (GBT.32907-2016) is a cryptographic standard issued by the 260*28a936efSRobert Elliott Organization of State Commercial Administration of China (OSCCA) 261*28a936efSRobert Elliott as an authorized cryptographic algorithms for the use within China. 262*28a936efSRobert Elliott 263*28a936efSRobert Elliott This is SM4 optimized implementation using AES-NI/AVX2/x86_64 264*28a936efSRobert Elliott instruction set for block cipher. Through two affine transforms, 265*28a936efSRobert Elliott we can use the AES S-Box to simulate the SM4 S-Box to achieve the 266*28a936efSRobert Elliott effect of instruction acceleration. 267*28a936efSRobert Elliott 268*28a936efSRobert Elliott If unsure, say N. 269*28a936efSRobert Elliott 270*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_586 271*28a936efSRobert Elliott tristate "Twofish cipher algorithms (i586)" 272*28a936efSRobert Elliott depends on (X86 || UML_X86) && !64BIT 273*28a936efSRobert Elliott select CRYPTO_ALGAPI 274*28a936efSRobert Elliott select CRYPTO_TWOFISH_COMMON 275*28a936efSRobert Elliott imply CRYPTO_CTR 276*28a936efSRobert Elliott help 277*28a936efSRobert Elliott Twofish cipher algorithm. 278*28a936efSRobert Elliott 279*28a936efSRobert Elliott Twofish was submitted as an AES (Advanced Encryption Standard) 280*28a936efSRobert Elliott candidate cipher by researchers at CounterPane Systems. It is a 281*28a936efSRobert Elliott 16 round block cipher supporting key sizes of 128, 192, and 256 282*28a936efSRobert Elliott bits. 283*28a936efSRobert Elliott 284*28a936efSRobert Elliott See also: 285*28a936efSRobert Elliott <https://www.schneier.com/twofish.html> 286*28a936efSRobert Elliott 287*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64 288*28a936efSRobert Elliott tristate "Twofish cipher algorithm (x86_64)" 289*28a936efSRobert Elliott depends on (X86 || UML_X86) && 64BIT 290*28a936efSRobert Elliott select CRYPTO_ALGAPI 291*28a936efSRobert Elliott select CRYPTO_TWOFISH_COMMON 292*28a936efSRobert Elliott imply CRYPTO_CTR 293*28a936efSRobert Elliott help 294*28a936efSRobert Elliott Twofish cipher algorithm (x86_64). 295*28a936efSRobert Elliott 296*28a936efSRobert Elliott Twofish was submitted as an AES (Advanced Encryption Standard) 297*28a936efSRobert Elliott candidate cipher by researchers at CounterPane Systems. It is a 298*28a936efSRobert Elliott 16 round block cipher supporting key sizes of 128, 192, and 256 299*28a936efSRobert Elliott bits. 300*28a936efSRobert Elliott 301*28a936efSRobert Elliott See also: 302*28a936efSRobert Elliott <https://www.schneier.com/twofish.html> 303*28a936efSRobert Elliott 304*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_X86_64_3WAY 305*28a936efSRobert Elliott tristate "Twofish cipher algorithm (x86_64, 3-way parallel)" 306*28a936efSRobert Elliott depends on X86 && 64BIT 307*28a936efSRobert Elliott select CRYPTO_SKCIPHER 308*28a936efSRobert Elliott select CRYPTO_TWOFISH_COMMON 309*28a936efSRobert Elliott select CRYPTO_TWOFISH_X86_64 310*28a936efSRobert Elliott help 311*28a936efSRobert Elliott Twofish cipher algorithm (x86_64, 3-way parallel). 312*28a936efSRobert Elliott 313*28a936efSRobert Elliott Twofish was submitted as an AES (Advanced Encryption Standard) 314*28a936efSRobert Elliott candidate cipher by researchers at CounterPane Systems. It is a 315*28a936efSRobert Elliott 16 round block cipher supporting key sizes of 128, 192, and 256 316*28a936efSRobert Elliott bits. 317*28a936efSRobert Elliott 318*28a936efSRobert Elliott This module provides Twofish cipher algorithm that processes three 319*28a936efSRobert Elliott blocks parallel, utilizing resources of out-of-order CPUs better. 320*28a936efSRobert Elliott 321*28a936efSRobert Elliott See also: 322*28a936efSRobert Elliott <https://www.schneier.com/twofish.html> 323*28a936efSRobert Elliott 324*28a936efSRobert Elliottconfig CRYPTO_TWOFISH_AVX_X86_64 325*28a936efSRobert Elliott tristate "Twofish cipher algorithm (x86_64/AVX)" 326*28a936efSRobert Elliott depends on X86 && 64BIT 327*28a936efSRobert Elliott select CRYPTO_SKCIPHER 328*28a936efSRobert Elliott select CRYPTO_SIMD 329*28a936efSRobert Elliott select CRYPTO_TWOFISH_COMMON 330*28a936efSRobert Elliott select CRYPTO_TWOFISH_X86_64 331*28a936efSRobert Elliott select CRYPTO_TWOFISH_X86_64_3WAY 332*28a936efSRobert Elliott imply CRYPTO_XTS 333*28a936efSRobert Elliott help 334*28a936efSRobert Elliott Twofish cipher algorithm (x86_64/AVX). 335*28a936efSRobert Elliott 336*28a936efSRobert Elliott Twofish was submitted as an AES (Advanced Encryption Standard) 337*28a936efSRobert Elliott candidate cipher by researchers at CounterPane Systems. It is a 338*28a936efSRobert Elliott 16 round block cipher supporting key sizes of 128, 192, and 256 339*28a936efSRobert Elliott bits. 340*28a936efSRobert Elliott 341*28a936efSRobert Elliott This module provides the Twofish cipher algorithm that processes 342*28a936efSRobert Elliott eight blocks parallel using the AVX Instruction Set. 343*28a936efSRobert Elliott 344*28a936efSRobert Elliott See also: 345*28a936efSRobert Elliott <https://www.schneier.com/twofish.html> 346*28a936efSRobert Elliott 347*28a936efSRobert Elliottconfig CRYPTO_CHACHA20_X86_64 348*28a936efSRobert Elliott tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)" 349*28a936efSRobert Elliott depends on X86 && 64BIT 350*28a936efSRobert Elliott select CRYPTO_SKCIPHER 351*28a936efSRobert Elliott select CRYPTO_LIB_CHACHA_GENERIC 352*28a936efSRobert Elliott select CRYPTO_ARCH_HAVE_LIB_CHACHA 353*28a936efSRobert Elliott help 354*28a936efSRobert Elliott SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20, 355*28a936efSRobert Elliott XChaCha20, and XChaCha12 stream ciphers. 356*28a936efSRobert Elliott 357*28a936efSRobert Elliottconfig CRYPTO_AEGIS128_AESNI_SSE2 358*28a936efSRobert Elliott tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" 359*28a936efSRobert Elliott depends on X86 && 64BIT 360*28a936efSRobert Elliott select CRYPTO_AEAD 361*28a936efSRobert Elliott select CRYPTO_SIMD 362*28a936efSRobert Elliott help 363*28a936efSRobert Elliott AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm. 364*28a936efSRobert Elliott 365*28a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_SSE2 366*28a936efSRobert Elliott tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)" 367*28a936efSRobert Elliott depends on X86 && 64BIT 368*28a936efSRobert Elliott select CRYPTO_NHPOLY1305 369*28a936efSRobert Elliott help 370*28a936efSRobert Elliott SSE2 optimized implementation of the hash function used by the 371*28a936efSRobert Elliott Adiantum encryption mode. 372*28a936efSRobert Elliott 373*28a936efSRobert Elliottconfig CRYPTO_NHPOLY1305_AVX2 374*28a936efSRobert Elliott tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)" 375*28a936efSRobert Elliott depends on X86 && 64BIT 376*28a936efSRobert Elliott select CRYPTO_NHPOLY1305 377*28a936efSRobert Elliott help 378*28a936efSRobert Elliott AVX2 optimized implementation of the hash function used by the 379*28a936efSRobert Elliott Adiantum encryption mode. 380*28a936efSRobert Elliott 381*28a936efSRobert Elliottconfig CRYPTO_BLAKE2S_X86 382*28a936efSRobert Elliott bool "BLAKE2s digest algorithm (x86 accelerated version)" 383*28a936efSRobert Elliott depends on X86 && 64BIT 384*28a936efSRobert Elliott select CRYPTO_LIB_BLAKE2S_GENERIC 385*28a936efSRobert Elliott select CRYPTO_ARCH_HAVE_LIB_BLAKE2S 386*28a936efSRobert Elliott 387*28a936efSRobert Elliottconfig CRYPTO_POLYVAL_CLMUL_NI 388*28a936efSRobert Elliott tristate "POLYVAL hash function (CLMUL-NI accelerated)" 389*28a936efSRobert Elliott depends on X86 && 64BIT 390*28a936efSRobert Elliott select CRYPTO_POLYVAL 391*28a936efSRobert Elliott help 392*28a936efSRobert Elliott This is the x86_64 CLMUL-NI accelerated implementation of POLYVAL. It is 393*28a936efSRobert Elliott used to efficiently implement HCTR2 on x86-64 processors that support 394*28a936efSRobert Elliott carry-less multiplication instructions. 395*28a936efSRobert Elliott 396*28a936efSRobert Elliottconfig CRYPTO_POLY1305_X86_64 397*28a936efSRobert Elliott tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)" 398*28a936efSRobert Elliott depends on X86 && 64BIT 399*28a936efSRobert Elliott select CRYPTO_LIB_POLY1305_GENERIC 400*28a936efSRobert Elliott select CRYPTO_ARCH_HAVE_LIB_POLY1305 401*28a936efSRobert Elliott help 402*28a936efSRobert Elliott Poly1305 authenticator algorithm, RFC7539. 403*28a936efSRobert Elliott 404*28a936efSRobert Elliott Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein. 405*28a936efSRobert Elliott It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use 406*28a936efSRobert Elliott in IETF protocols. This is the x86_64 assembler implementation using SIMD 407*28a936efSRobert Elliott instructions. 408*28a936efSRobert Elliott 409*28a936efSRobert Elliottconfig CRYPTO_SHA1_SSSE3 410*28a936efSRobert Elliott tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 411*28a936efSRobert Elliott depends on X86 && 64BIT 412*28a936efSRobert Elliott select CRYPTO_SHA1 413*28a936efSRobert Elliott select CRYPTO_HASH 414*28a936efSRobert Elliott help 415*28a936efSRobert Elliott SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 416*28a936efSRobert Elliott using Supplemental SSE3 (SSSE3) instructions or Advanced Vector 417*28a936efSRobert Elliott Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions), 418*28a936efSRobert Elliott when available. 419*28a936efSRobert Elliott 420*28a936efSRobert Elliottconfig CRYPTO_SHA256_SSSE3 421*28a936efSRobert Elliott tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 422*28a936efSRobert Elliott depends on X86 && 64BIT 423*28a936efSRobert Elliott select CRYPTO_SHA256 424*28a936efSRobert Elliott select CRYPTO_HASH 425*28a936efSRobert Elliott help 426*28a936efSRobert Elliott SHA-256 secure hash standard (DFIPS 180-2) implemented 427*28a936efSRobert Elliott using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 428*28a936efSRobert Elliott Extensions version 1 (AVX1), or Advanced Vector Extensions 429*28a936efSRobert Elliott version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New 430*28a936efSRobert Elliott Instructions) when available. 431*28a936efSRobert Elliott 432*28a936efSRobert Elliottconfig CRYPTO_SHA512_SSSE3 433*28a936efSRobert Elliott tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)" 434*28a936efSRobert Elliott depends on X86 && 64BIT 435*28a936efSRobert Elliott select CRYPTO_SHA512 436*28a936efSRobert Elliott select CRYPTO_HASH 437*28a936efSRobert Elliott help 438*28a936efSRobert Elliott SHA-512 secure hash standard (DFIPS 180-2) implemented 439*28a936efSRobert Elliott using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 440*28a936efSRobert Elliott Extensions version 1 (AVX1), or Advanced Vector Extensions 441*28a936efSRobert Elliott version 2 (AVX2) instructions, when available. 442*28a936efSRobert Elliott 443*28a936efSRobert Elliottconfig CRYPTO_SM3_AVX_X86_64 444*28a936efSRobert Elliott tristate "SM3 digest algorithm (x86_64/AVX)" 445*28a936efSRobert Elliott depends on X86 && 64BIT 446*28a936efSRobert Elliott select CRYPTO_HASH 447*28a936efSRobert Elliott select CRYPTO_SM3 448*28a936efSRobert Elliott help 449*28a936efSRobert Elliott SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3). 450*28a936efSRobert Elliott It is part of the Chinese Commercial Cryptography suite. This is 451*28a936efSRobert Elliott SM3 optimized implementation using Advanced Vector Extensions (AVX) 452*28a936efSRobert Elliott when available. 453*28a936efSRobert Elliott 454*28a936efSRobert Elliott If unsure, say N. 455*28a936efSRobert Elliott 456*28a936efSRobert Elliottconfig CRYPTO_GHASH_CLMUL_NI_INTEL 457*28a936efSRobert Elliott tristate "GHASH hash function (CLMUL-NI accelerated)" 458*28a936efSRobert Elliott depends on X86 && 64BIT 459*28a936efSRobert Elliott select CRYPTO_CRYPTD 460*28a936efSRobert Elliott help 461*28a936efSRobert Elliott This is the x86_64 CLMUL-NI accelerated implementation of 462*28a936efSRobert Elliott GHASH, the hash function used in GCM (Galois/Counter mode). 463*28a936efSRobert Elliott 464*28a936efSRobert Elliottconfig CRYPTO_CRC32C_INTEL 465*28a936efSRobert Elliott tristate "CRC32c INTEL hardware acceleration" 466*28a936efSRobert Elliott depends on X86 467*28a936efSRobert Elliott select CRYPTO_HASH 468*28a936efSRobert Elliott help 469*28a936efSRobert Elliott In Intel processor with SSE4.2 supported, the processor will 470*28a936efSRobert Elliott support CRC32C implementation using hardware accelerated CRC32 471*28a936efSRobert Elliott instruction. This option will create 'crc32c-intel' module, 472*28a936efSRobert Elliott which will enable any routine to use the CRC32 instruction to 473*28a936efSRobert Elliott gain performance compared with software implementation. 474*28a936efSRobert Elliott Module will be crc32c-intel. 475*28a936efSRobert Elliott 476*28a936efSRobert Elliottconfig CRYPTO_CRC32_PCLMUL 477*28a936efSRobert Elliott tristate "CRC32 PCLMULQDQ hardware acceleration" 478*28a936efSRobert Elliott depends on X86 479*28a936efSRobert Elliott select CRYPTO_HASH 480*28a936efSRobert Elliott select CRC32 481*28a936efSRobert Elliott help 482*28a936efSRobert Elliott From Intel Westmere and AMD Bulldozer processor with SSE4.2 483*28a936efSRobert Elliott and PCLMULQDQ supported, the processor will support 484*28a936efSRobert Elliott CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ 485*28a936efSRobert Elliott instruction. This option will create 'crc32-pclmul' module, 486*28a936efSRobert Elliott which will enable any routine to use the CRC-32-IEEE 802.3 checksum 487*28a936efSRobert Elliott and gain better performance as compared with the table implementation. 488*28a936efSRobert Elliott 489*28a936efSRobert Elliottconfig CRYPTO_CRCT10DIF_PCLMUL 490*28a936efSRobert Elliott tristate "CRCT10DIF PCLMULQDQ hardware acceleration" 491*28a936efSRobert Elliott depends on X86 && 64BIT && CRC_T10DIF 492*28a936efSRobert Elliott select CRYPTO_HASH 493*28a936efSRobert Elliott help 494*28a936efSRobert Elliott For x86_64 processors with SSE4.2 and PCLMULQDQ supported, 495*28a936efSRobert Elliott CRC T10 DIF PCLMULQDQ computation can be hardware 496*28a936efSRobert Elliott accelerated PCLMULQDQ instruction. This option will create 497*28a936efSRobert Elliott 'crct10dif-pclmul' module, which is faster when computing the 498*28a936efSRobert Elliott crct10dif checksum as compared with the generic table implementation. 499*28a936efSRobert Elliott 500*28a936efSRobert Elliottendmenu 501