1# SPDX-License-Identifier: GPL-2.0 2# 3# Generic algorithms support 4# 5config XOR_BLOCKS 6 tristate 7 8# 9# async_tx api: hardware offloaded memory transfer/transform support 10# 11source "crypto/async_tx/Kconfig" 12 13# 14# Cryptographic API Configuration 15# 16menuconfig CRYPTO 17 tristate "Cryptographic API" 18 help 19 This option provides the core Cryptographic API. 20 21if CRYPTO 22 23comment "Crypto core or helper" 24 25config CRYPTO_FIPS 26 bool "FIPS 200 compliance" 27 depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS 28 depends on (MODULE_SIG || !MODULES) 29 help 30 This options enables the fips boot option which is 31 required if you want to system to operate in a FIPS 200 32 certification. You should say no unless you know what 33 this is. 34 35config CRYPTO_ALGAPI 36 tristate 37 select CRYPTO_ALGAPI2 38 help 39 This option provides the API for cryptographic algorithms. 40 41config CRYPTO_ALGAPI2 42 tristate 43 44config CRYPTO_AEAD 45 tristate 46 select CRYPTO_AEAD2 47 select CRYPTO_ALGAPI 48 49config CRYPTO_AEAD2 50 tristate 51 select CRYPTO_ALGAPI2 52 select CRYPTO_NULL2 53 select CRYPTO_RNG2 54 55config CRYPTO_BLKCIPHER 56 tristate 57 select CRYPTO_BLKCIPHER2 58 select CRYPTO_ALGAPI 59 60config CRYPTO_BLKCIPHER2 61 tristate 62 select CRYPTO_ALGAPI2 63 select CRYPTO_RNG2 64 select CRYPTO_WORKQUEUE 65 66config CRYPTO_HASH 67 tristate 68 select CRYPTO_HASH2 69 select CRYPTO_ALGAPI 70 71config CRYPTO_HASH2 72 tristate 73 select CRYPTO_ALGAPI2 74 75config CRYPTO_RNG 76 tristate 77 select CRYPTO_RNG2 78 select CRYPTO_ALGAPI 79 80config CRYPTO_RNG2 81 tristate 82 select CRYPTO_ALGAPI2 83 84config CRYPTO_RNG_DEFAULT 85 tristate 86 select CRYPTO_DRBG_MENU 87 88config CRYPTO_AKCIPHER2 89 tristate 90 select CRYPTO_ALGAPI2 91 92config CRYPTO_AKCIPHER 93 tristate 94 select CRYPTO_AKCIPHER2 95 select CRYPTO_ALGAPI 96 97config CRYPTO_KPP2 98 tristate 99 select CRYPTO_ALGAPI2 100 101config CRYPTO_KPP 102 tristate 103 select CRYPTO_ALGAPI 104 select CRYPTO_KPP2 105 106config CRYPTO_ACOMP2 107 tristate 108 select CRYPTO_ALGAPI2 109 select SGL_ALLOC 110 111config CRYPTO_ACOMP 112 tristate 113 select CRYPTO_ALGAPI 114 select CRYPTO_ACOMP2 115 116config CRYPTO_RSA 117 tristate "RSA algorithm" 118 select CRYPTO_AKCIPHER 119 select CRYPTO_MANAGER 120 select MPILIB 121 select ASN1 122 help 123 Generic implementation of the RSA public key algorithm. 124 125config CRYPTO_DH 126 tristate "Diffie-Hellman algorithm" 127 select CRYPTO_KPP 128 select MPILIB 129 help 130 Generic implementation of the Diffie-Hellman algorithm. 131 132config CRYPTO_ECDH 133 tristate "ECDH algorithm" 134 select CRYPTO_KPP 135 select CRYPTO_RNG_DEFAULT 136 help 137 Generic implementation of the ECDH algorithm 138 139config CRYPTO_MANAGER 140 tristate "Cryptographic algorithm manager" 141 select CRYPTO_MANAGER2 142 help 143 Create default cryptographic template instantiations such as 144 cbc(aes). 145 146config CRYPTO_MANAGER2 147 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y) 148 select CRYPTO_AEAD2 149 select CRYPTO_HASH2 150 select CRYPTO_BLKCIPHER2 151 select CRYPTO_AKCIPHER2 152 select CRYPTO_KPP2 153 select CRYPTO_ACOMP2 154 155config CRYPTO_USER 156 tristate "Userspace cryptographic algorithm configuration" 157 depends on NET 158 select CRYPTO_MANAGER 159 help 160 Userspace configuration for cryptographic instantiations such as 161 cbc(aes). 162 163config CRYPTO_MANAGER_DISABLE_TESTS 164 bool "Disable run-time self tests" 165 default y 166 depends on CRYPTO_MANAGER2 167 help 168 Disable run-time self tests that normally take place at 169 algorithm registration. 170 171config CRYPTO_GF128MUL 172 tristate "GF(2^128) multiplication functions" 173 help 174 Efficient table driven implementation of multiplications in the 175 field GF(2^128). This is needed by some cypher modes. This 176 option will be selected automatically if you select such a 177 cipher mode. Only select this option by hand if you expect to load 178 an external module that requires these functions. 179 180config CRYPTO_NULL 181 tristate "Null algorithms" 182 select CRYPTO_NULL2 183 help 184 These are 'Null' algorithms, used by IPsec, which do nothing. 185 186config CRYPTO_NULL2 187 tristate 188 select CRYPTO_ALGAPI2 189 select CRYPTO_BLKCIPHER2 190 select CRYPTO_HASH2 191 192config CRYPTO_PCRYPT 193 tristate "Parallel crypto engine" 194 depends on SMP 195 select PADATA 196 select CRYPTO_MANAGER 197 select CRYPTO_AEAD 198 help 199 This converts an arbitrary crypto algorithm into a parallel 200 algorithm that executes in kernel threads. 201 202config CRYPTO_WORKQUEUE 203 tristate 204 205config CRYPTO_CRYPTD 206 tristate "Software async crypto daemon" 207 select CRYPTO_BLKCIPHER 208 select CRYPTO_HASH 209 select CRYPTO_MANAGER 210 select CRYPTO_WORKQUEUE 211 help 212 This is a generic software asynchronous crypto daemon that 213 converts an arbitrary synchronous software crypto algorithm 214 into an asynchronous algorithm that executes in a kernel thread. 215 216config CRYPTO_AUTHENC 217 tristate "Authenc support" 218 select CRYPTO_AEAD 219 select CRYPTO_BLKCIPHER 220 select CRYPTO_MANAGER 221 select CRYPTO_HASH 222 select CRYPTO_NULL 223 help 224 Authenc: Combined mode wrapper for IPsec. 225 This is required for IPSec. 226 227config CRYPTO_TEST 228 tristate "Testing module" 229 depends on m 230 select CRYPTO_MANAGER 231 help 232 Quick & dirty crypto test module. 233 234config CRYPTO_SIMD 235 tristate 236 select CRYPTO_CRYPTD 237 238config CRYPTO_GLUE_HELPER_X86 239 tristate 240 depends on X86 241 select CRYPTO_BLKCIPHER 242 243config CRYPTO_ENGINE 244 tristate 245 246comment "Authenticated Encryption with Associated Data" 247 248config CRYPTO_CCM 249 tristate "CCM support" 250 select CRYPTO_CTR 251 select CRYPTO_HASH 252 select CRYPTO_AEAD 253 help 254 Support for Counter with CBC MAC. Required for IPsec. 255 256config CRYPTO_GCM 257 tristate "GCM/GMAC support" 258 select CRYPTO_CTR 259 select CRYPTO_AEAD 260 select CRYPTO_GHASH 261 select CRYPTO_NULL 262 help 263 Support for Galois/Counter Mode (GCM) and Galois Message 264 Authentication Code (GMAC). Required for IPSec. 265 266config CRYPTO_CHACHA20POLY1305 267 tristate "ChaCha20-Poly1305 AEAD support" 268 select CRYPTO_CHACHA20 269 select CRYPTO_POLY1305 270 select CRYPTO_AEAD 271 help 272 ChaCha20-Poly1305 AEAD support, RFC7539. 273 274 Support for the AEAD wrapper using the ChaCha20 stream cipher combined 275 with the Poly1305 authenticator. It is defined in RFC7539 for use in 276 IETF protocols. 277 278config CRYPTO_AEGIS128 279 tristate "AEGIS-128 AEAD algorithm" 280 select CRYPTO_AEAD 281 select CRYPTO_AES # for AES S-box tables 282 help 283 Support for the AEGIS-128 dedicated AEAD algorithm. 284 285config CRYPTO_AEGIS128L 286 tristate "AEGIS-128L AEAD algorithm" 287 select CRYPTO_AEAD 288 select CRYPTO_AES # for AES S-box tables 289 help 290 Support for the AEGIS-128L dedicated AEAD algorithm. 291 292config CRYPTO_AEGIS256 293 tristate "AEGIS-256 AEAD algorithm" 294 select CRYPTO_AEAD 295 select CRYPTO_AES # for AES S-box tables 296 help 297 Support for the AEGIS-256 dedicated AEAD algorithm. 298 299config CRYPTO_AEGIS128_AESNI_SSE2 300 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" 301 depends on X86 && 64BIT 302 select CRYPTO_AEAD 303 select CRYPTO_CRYPTD 304 help 305 AESNI+SSE2 implementation of the AEGSI-128 dedicated AEAD algorithm. 306 307config CRYPTO_AEGIS128L_AESNI_SSE2 308 tristate "AEGIS-128L AEAD algorithm (x86_64 AESNI+SSE2 implementation)" 309 depends on X86 && 64BIT 310 select CRYPTO_AEAD 311 select CRYPTO_CRYPTD 312 help 313 AESNI+SSE2 implementation of the AEGSI-128L dedicated AEAD algorithm. 314 315config CRYPTO_AEGIS256_AESNI_SSE2 316 tristate "AEGIS-256 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" 317 depends on X86 && 64BIT 318 select CRYPTO_AEAD 319 select CRYPTO_CRYPTD 320 help 321 AESNI+SSE2 implementation of the AEGSI-256 dedicated AEAD algorithm. 322 323config CRYPTO_MORUS640 324 tristate "MORUS-640 AEAD algorithm" 325 select CRYPTO_AEAD 326 help 327 Support for the MORUS-640 dedicated AEAD algorithm. 328 329config CRYPTO_MORUS640_GLUE 330 tristate 331 depends on X86 332 select CRYPTO_AEAD 333 select CRYPTO_CRYPTD 334 help 335 Common glue for SIMD optimizations of the MORUS-640 dedicated AEAD 336 algorithm. 337 338config CRYPTO_MORUS640_SSE2 339 tristate "MORUS-640 AEAD algorithm (x86_64 SSE2 implementation)" 340 depends on X86 && 64BIT 341 select CRYPTO_AEAD 342 select CRYPTO_MORUS640_GLUE 343 help 344 SSE2 implementation of the MORUS-640 dedicated AEAD algorithm. 345 346config CRYPTO_MORUS1280 347 tristate "MORUS-1280 AEAD algorithm" 348 select CRYPTO_AEAD 349 help 350 Support for the MORUS-1280 dedicated AEAD algorithm. 351 352config CRYPTO_MORUS1280_GLUE 353 tristate 354 depends on X86 355 select CRYPTO_AEAD 356 select CRYPTO_CRYPTD 357 help 358 Common glue for SIMD optimizations of the MORUS-1280 dedicated AEAD 359 algorithm. 360 361config CRYPTO_MORUS1280_SSE2 362 tristate "MORUS-1280 AEAD algorithm (x86_64 SSE2 implementation)" 363 depends on X86 && 64BIT 364 select CRYPTO_AEAD 365 select CRYPTO_MORUS1280_GLUE 366 help 367 SSE2 optimizedimplementation of the MORUS-1280 dedicated AEAD 368 algorithm. 369 370config CRYPTO_MORUS1280_AVX2 371 tristate "MORUS-1280 AEAD algorithm (x86_64 AVX2 implementation)" 372 depends on X86 && 64BIT 373 select CRYPTO_AEAD 374 select CRYPTO_MORUS1280_GLUE 375 help 376 AVX2 optimized implementation of the MORUS-1280 dedicated AEAD 377 algorithm. 378 379config CRYPTO_SEQIV 380 tristate "Sequence Number IV Generator" 381 select CRYPTO_AEAD 382 select CRYPTO_BLKCIPHER 383 select CRYPTO_NULL 384 select CRYPTO_RNG_DEFAULT 385 help 386 This IV generator generates an IV based on a sequence number by 387 xoring it with a salt. This algorithm is mainly useful for CTR 388 389config CRYPTO_ECHAINIV 390 tristate "Encrypted Chain IV Generator" 391 select CRYPTO_AEAD 392 select CRYPTO_NULL 393 select CRYPTO_RNG_DEFAULT 394 default m 395 help 396 This IV generator generates an IV based on the encryption of 397 a sequence number xored with a salt. This is the default 398 algorithm for CBC. 399 400comment "Block modes" 401 402config CRYPTO_CBC 403 tristate "CBC support" 404 select CRYPTO_BLKCIPHER 405 select CRYPTO_MANAGER 406 help 407 CBC: Cipher Block Chaining mode 408 This block cipher algorithm is required for IPSec. 409 410config CRYPTO_CFB 411 tristate "CFB support" 412 select CRYPTO_BLKCIPHER 413 select CRYPTO_MANAGER 414 help 415 CFB: Cipher FeedBack mode 416 This block cipher algorithm is required for TPM2 Cryptography. 417 418config CRYPTO_CTR 419 tristate "CTR support" 420 select CRYPTO_BLKCIPHER 421 select CRYPTO_SEQIV 422 select CRYPTO_MANAGER 423 help 424 CTR: Counter mode 425 This block cipher algorithm is required for IPSec. 426 427config CRYPTO_CTS 428 tristate "CTS support" 429 select CRYPTO_BLKCIPHER 430 help 431 CTS: Cipher Text Stealing 432 This is the Cipher Text Stealing mode as described by 433 Section 8 of rfc2040 and referenced by rfc3962 434 (rfc3962 includes errata information in its Appendix A) or 435 CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010. 436 This mode is required for Kerberos gss mechanism support 437 for AES encryption. 438 439 See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final 440 441config CRYPTO_ECB 442 tristate "ECB support" 443 select CRYPTO_BLKCIPHER 444 select CRYPTO_MANAGER 445 help 446 ECB: Electronic CodeBook mode 447 This is the simplest block cipher algorithm. It simply encrypts 448 the input block by block. 449 450config CRYPTO_LRW 451 tristate "LRW support" 452 select CRYPTO_BLKCIPHER 453 select CRYPTO_MANAGER 454 select CRYPTO_GF128MUL 455 help 456 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable 457 narrow block cipher mode for dm-crypt. Use it with cipher 458 specification string aes-lrw-benbi, the key must be 256, 320 or 384. 459 The first 128, 192 or 256 bits in the key are used for AES and the 460 rest is used to tie each cipher block to its logical position. 461 462config CRYPTO_OFB 463 tristate "OFB support" 464 select CRYPTO_BLKCIPHER 465 select CRYPTO_MANAGER 466 help 467 OFB: the Output Feedback mode makes a block cipher into a synchronous 468 stream cipher. It generates keystream blocks, which are then XORed 469 with the plaintext blocks to get the ciphertext. Flipping a bit in the 470 ciphertext produces a flipped bit in the plaintext at the same 471 location. This property allows many error correcting codes to function 472 normally even when applied before encryption. 473 474config CRYPTO_PCBC 475 tristate "PCBC support" 476 select CRYPTO_BLKCIPHER 477 select CRYPTO_MANAGER 478 help 479 PCBC: Propagating Cipher Block Chaining mode 480 This block cipher algorithm is required for RxRPC. 481 482config CRYPTO_XTS 483 tristate "XTS support" 484 select CRYPTO_BLKCIPHER 485 select CRYPTO_MANAGER 486 select CRYPTO_ECB 487 help 488 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain, 489 key size 256, 384 or 512 bits. This implementation currently 490 can't handle a sectorsize which is not a multiple of 16 bytes. 491 492config CRYPTO_KEYWRAP 493 tristate "Key wrapping support" 494 select CRYPTO_BLKCIPHER 495 help 496 Support for key wrapping (NIST SP800-38F / RFC3394) without 497 padding. 498 499config CRYPTO_NHPOLY1305 500 tristate 501 select CRYPTO_HASH 502 select CRYPTO_POLY1305 503 504config CRYPTO_ADIANTUM 505 tristate "Adiantum support" 506 select CRYPTO_CHACHA20 507 select CRYPTO_POLY1305 508 select CRYPTO_NHPOLY1305 509 help 510 Adiantum is a tweakable, length-preserving encryption mode 511 designed for fast and secure disk encryption, especially on 512 CPUs without dedicated crypto instructions. It encrypts 513 each sector using the XChaCha12 stream cipher, two passes of 514 an ε-almost-∆-universal hash function, and an invocation of 515 the AES-256 block cipher on a single 16-byte block. On CPUs 516 without AES instructions, Adiantum is much faster than 517 AES-XTS. 518 519 Adiantum's security is provably reducible to that of its 520 underlying stream and block ciphers, subject to a security 521 bound. Unlike XTS, Adiantum is a true wide-block encryption 522 mode, so it actually provides an even stronger notion of 523 security than XTS, subject to the security bound. 524 525 If unsure, say N. 526 527comment "Hash modes" 528 529config CRYPTO_CMAC 530 tristate "CMAC support" 531 select CRYPTO_HASH 532 select CRYPTO_MANAGER 533 help 534 Cipher-based Message Authentication Code (CMAC) specified by 535 The National Institute of Standards and Technology (NIST). 536 537 https://tools.ietf.org/html/rfc4493 538 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf 539 540config CRYPTO_HMAC 541 tristate "HMAC support" 542 select CRYPTO_HASH 543 select CRYPTO_MANAGER 544 help 545 HMAC: Keyed-Hashing for Message Authentication (RFC2104). 546 This is required for IPSec. 547 548config CRYPTO_XCBC 549 tristate "XCBC support" 550 select CRYPTO_HASH 551 select CRYPTO_MANAGER 552 help 553 XCBC: Keyed-Hashing with encryption algorithm 554 http://www.ietf.org/rfc/rfc3566.txt 555 http://csrc.nist.gov/encryption/modes/proposedmodes/ 556 xcbc-mac/xcbc-mac-spec.pdf 557 558config CRYPTO_VMAC 559 tristate "VMAC support" 560 select CRYPTO_HASH 561 select CRYPTO_MANAGER 562 help 563 VMAC is a message authentication algorithm designed for 564 very high speed on 64-bit architectures. 565 566 See also: 567 <http://fastcrypto.org/vmac> 568 569comment "Digest" 570 571config CRYPTO_CRC32C 572 tristate "CRC32c CRC algorithm" 573 select CRYPTO_HASH 574 select CRC32 575 help 576 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used 577 by iSCSI for header and data digests and by others. 578 See Castagnoli93. Module will be crc32c. 579 580config CRYPTO_CRC32C_INTEL 581 tristate "CRC32c INTEL hardware acceleration" 582 depends on X86 583 select CRYPTO_HASH 584 help 585 In Intel processor with SSE4.2 supported, the processor will 586 support CRC32C implementation using hardware accelerated CRC32 587 instruction. This option will create 'crc32c-intel' module, 588 which will enable any routine to use the CRC32 instruction to 589 gain performance compared with software implementation. 590 Module will be crc32c-intel. 591 592config CRYPTO_CRC32C_VPMSUM 593 tristate "CRC32c CRC algorithm (powerpc64)" 594 depends on PPC64 && ALTIVEC 595 select CRYPTO_HASH 596 select CRC32 597 help 598 CRC32c algorithm implemented using vector polynomial multiply-sum 599 (vpmsum) instructions, introduced in POWER8. Enable on POWER8 600 and newer processors for improved performance. 601 602 603config CRYPTO_CRC32C_SPARC64 604 tristate "CRC32c CRC algorithm (SPARC64)" 605 depends on SPARC64 606 select CRYPTO_HASH 607 select CRC32 608 help 609 CRC32c CRC algorithm implemented using sparc64 crypto instructions, 610 when available. 611 612config CRYPTO_CRC32 613 tristate "CRC32 CRC algorithm" 614 select CRYPTO_HASH 615 select CRC32 616 help 617 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm. 618 Shash crypto api wrappers to crc32_le function. 619 620config CRYPTO_CRC32_PCLMUL 621 tristate "CRC32 PCLMULQDQ hardware acceleration" 622 depends on X86 623 select CRYPTO_HASH 624 select CRC32 625 help 626 From Intel Westmere and AMD Bulldozer processor with SSE4.2 627 and PCLMULQDQ supported, the processor will support 628 CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ 629 instruction. This option will create 'crc32-plcmul' module, 630 which will enable any routine to use the CRC-32-IEEE 802.3 checksum 631 and gain better performance as compared with the table implementation. 632 633config CRYPTO_CRC32_MIPS 634 tristate "CRC32c and CRC32 CRC algorithm (MIPS)" 635 depends on MIPS_CRC_SUPPORT 636 select CRYPTO_HASH 637 help 638 CRC32c and CRC32 CRC algorithms implemented using mips crypto 639 instructions, when available. 640 641 642config CRYPTO_CRCT10DIF 643 tristate "CRCT10DIF algorithm" 644 select CRYPTO_HASH 645 help 646 CRC T10 Data Integrity Field computation is being cast as 647 a crypto transform. This allows for faster crc t10 diff 648 transforms to be used if they are available. 649 650config CRYPTO_CRCT10DIF_PCLMUL 651 tristate "CRCT10DIF PCLMULQDQ hardware acceleration" 652 depends on X86 && 64BIT && CRC_T10DIF 653 select CRYPTO_HASH 654 help 655 For x86_64 processors with SSE4.2 and PCLMULQDQ supported, 656 CRC T10 DIF PCLMULQDQ computation can be hardware 657 accelerated PCLMULQDQ instruction. This option will create 658 'crct10dif-plcmul' module, which is faster when computing the 659 crct10dif checksum as compared with the generic table implementation. 660 661config CRYPTO_CRCT10DIF_VPMSUM 662 tristate "CRC32T10DIF powerpc64 hardware acceleration" 663 depends on PPC64 && ALTIVEC && CRC_T10DIF 664 select CRYPTO_HASH 665 help 666 CRC10T10DIF algorithm implemented using vector polynomial 667 multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on 668 POWER8 and newer processors for improved performance. 669 670config CRYPTO_VPMSUM_TESTER 671 tristate "Powerpc64 vpmsum hardware acceleration tester" 672 depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM 673 help 674 Stress test for CRC32c and CRC-T10DIF algorithms implemented with 675 POWER8 vpmsum instructions. 676 Unless you are testing these algorithms, you don't need this. 677 678config CRYPTO_GHASH 679 tristate "GHASH digest algorithm" 680 select CRYPTO_GF128MUL 681 select CRYPTO_HASH 682 help 683 GHASH is message digest algorithm for GCM (Galois/Counter Mode). 684 685config CRYPTO_POLY1305 686 tristate "Poly1305 authenticator algorithm" 687 select CRYPTO_HASH 688 help 689 Poly1305 authenticator algorithm, RFC7539. 690 691 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein. 692 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use 693 in IETF protocols. This is the portable C implementation of Poly1305. 694 695config CRYPTO_POLY1305_X86_64 696 tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)" 697 depends on X86 && 64BIT 698 select CRYPTO_POLY1305 699 help 700 Poly1305 authenticator algorithm, RFC7539. 701 702 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein. 703 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use 704 in IETF protocols. This is the x86_64 assembler implementation using SIMD 705 instructions. 706 707config CRYPTO_MD4 708 tristate "MD4 digest algorithm" 709 select CRYPTO_HASH 710 help 711 MD4 message digest algorithm (RFC1320). 712 713config CRYPTO_MD5 714 tristate "MD5 digest algorithm" 715 select CRYPTO_HASH 716 help 717 MD5 message digest algorithm (RFC1321). 718 719config CRYPTO_MD5_OCTEON 720 tristate "MD5 digest algorithm (OCTEON)" 721 depends on CPU_CAVIUM_OCTEON 722 select CRYPTO_MD5 723 select CRYPTO_HASH 724 help 725 MD5 message digest algorithm (RFC1321) implemented 726 using OCTEON crypto instructions, when available. 727 728config CRYPTO_MD5_PPC 729 tristate "MD5 digest algorithm (PPC)" 730 depends on PPC 731 select CRYPTO_HASH 732 help 733 MD5 message digest algorithm (RFC1321) implemented 734 in PPC assembler. 735 736config CRYPTO_MD5_SPARC64 737 tristate "MD5 digest algorithm (SPARC64)" 738 depends on SPARC64 739 select CRYPTO_MD5 740 select CRYPTO_HASH 741 help 742 MD5 message digest algorithm (RFC1321) implemented 743 using sparc64 crypto instructions, when available. 744 745config CRYPTO_MICHAEL_MIC 746 tristate "Michael MIC keyed digest algorithm" 747 select CRYPTO_HASH 748 help 749 Michael MIC is used for message integrity protection in TKIP 750 (IEEE 802.11i). This algorithm is required for TKIP, but it 751 should not be used for other purposes because of the weakness 752 of the algorithm. 753 754config CRYPTO_RMD128 755 tristate "RIPEMD-128 digest algorithm" 756 select CRYPTO_HASH 757 help 758 RIPEMD-128 (ISO/IEC 10118-3:2004). 759 760 RIPEMD-128 is a 128-bit cryptographic hash function. It should only 761 be used as a secure replacement for RIPEMD. For other use cases, 762 RIPEMD-160 should be used. 763 764 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 765 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html> 766 767config CRYPTO_RMD160 768 tristate "RIPEMD-160 digest algorithm" 769 select CRYPTO_HASH 770 help 771 RIPEMD-160 (ISO/IEC 10118-3:2004). 772 773 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended 774 to be used as a secure replacement for the 128-bit hash functions 775 MD4, MD5 and it's predecessor RIPEMD 776 (not to be confused with RIPEMD-128). 777 778 It's speed is comparable to SHA1 and there are no known attacks 779 against RIPEMD-160. 780 781 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 782 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html> 783 784config CRYPTO_RMD256 785 tristate "RIPEMD-256 digest algorithm" 786 select CRYPTO_HASH 787 help 788 RIPEMD-256 is an optional extension of RIPEMD-128 with a 789 256 bit hash. It is intended for applications that require 790 longer hash-results, without needing a larger security level 791 (than RIPEMD-128). 792 793 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 794 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html> 795 796config CRYPTO_RMD320 797 tristate "RIPEMD-320 digest algorithm" 798 select CRYPTO_HASH 799 help 800 RIPEMD-320 is an optional extension of RIPEMD-160 with a 801 320 bit hash. It is intended for applications that require 802 longer hash-results, without needing a larger security level 803 (than RIPEMD-160). 804 805 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 806 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html> 807 808config CRYPTO_SHA1 809 tristate "SHA1 digest algorithm" 810 select CRYPTO_HASH 811 help 812 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 813 814config CRYPTO_SHA1_SSSE3 815 tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 816 depends on X86 && 64BIT 817 select CRYPTO_SHA1 818 select CRYPTO_HASH 819 help 820 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 821 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector 822 Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions), 823 when available. 824 825config CRYPTO_SHA256_SSSE3 826 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 827 depends on X86 && 64BIT 828 select CRYPTO_SHA256 829 select CRYPTO_HASH 830 help 831 SHA-256 secure hash standard (DFIPS 180-2) implemented 832 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 833 Extensions version 1 (AVX1), or Advanced Vector Extensions 834 version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New 835 Instructions) when available. 836 837config CRYPTO_SHA512_SSSE3 838 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)" 839 depends on X86 && 64BIT 840 select CRYPTO_SHA512 841 select CRYPTO_HASH 842 help 843 SHA-512 secure hash standard (DFIPS 180-2) implemented 844 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 845 Extensions version 1 (AVX1), or Advanced Vector Extensions 846 version 2 (AVX2) instructions, when available. 847 848config CRYPTO_SHA1_OCTEON 849 tristate "SHA1 digest algorithm (OCTEON)" 850 depends on CPU_CAVIUM_OCTEON 851 select CRYPTO_SHA1 852 select CRYPTO_HASH 853 help 854 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 855 using OCTEON crypto instructions, when available. 856 857config CRYPTO_SHA1_SPARC64 858 tristate "SHA1 digest algorithm (SPARC64)" 859 depends on SPARC64 860 select CRYPTO_SHA1 861 select CRYPTO_HASH 862 help 863 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 864 using sparc64 crypto instructions, when available. 865 866config CRYPTO_SHA1_PPC 867 tristate "SHA1 digest algorithm (powerpc)" 868 depends on PPC 869 help 870 This is the powerpc hardware accelerated implementation of the 871 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 872 873config CRYPTO_SHA1_PPC_SPE 874 tristate "SHA1 digest algorithm (PPC SPE)" 875 depends on PPC && SPE 876 help 877 SHA-1 secure hash standard (DFIPS 180-4) implemented 878 using powerpc SPE SIMD instruction set. 879 880config CRYPTO_SHA256 881 tristate "SHA224 and SHA256 digest algorithm" 882 select CRYPTO_HASH 883 help 884 SHA256 secure hash standard (DFIPS 180-2). 885 886 This version of SHA implements a 256 bit hash with 128 bits of 887 security against collision attacks. 888 889 This code also includes SHA-224, a 224 bit hash with 112 bits 890 of security against collision attacks. 891 892config CRYPTO_SHA256_PPC_SPE 893 tristate "SHA224 and SHA256 digest algorithm (PPC SPE)" 894 depends on PPC && SPE 895 select CRYPTO_SHA256 896 select CRYPTO_HASH 897 help 898 SHA224 and SHA256 secure hash standard (DFIPS 180-2) 899 implemented using powerpc SPE SIMD instruction set. 900 901config CRYPTO_SHA256_OCTEON 902 tristate "SHA224 and SHA256 digest algorithm (OCTEON)" 903 depends on CPU_CAVIUM_OCTEON 904 select CRYPTO_SHA256 905 select CRYPTO_HASH 906 help 907 SHA-256 secure hash standard (DFIPS 180-2) implemented 908 using OCTEON crypto instructions, when available. 909 910config CRYPTO_SHA256_SPARC64 911 tristate "SHA224 and SHA256 digest algorithm (SPARC64)" 912 depends on SPARC64 913 select CRYPTO_SHA256 914 select CRYPTO_HASH 915 help 916 SHA-256 secure hash standard (DFIPS 180-2) implemented 917 using sparc64 crypto instructions, when available. 918 919config CRYPTO_SHA512 920 tristate "SHA384 and SHA512 digest algorithms" 921 select CRYPTO_HASH 922 help 923 SHA512 secure hash standard (DFIPS 180-2). 924 925 This version of SHA implements a 512 bit hash with 256 bits of 926 security against collision attacks. 927 928 This code also includes SHA-384, a 384 bit hash with 192 bits 929 of security against collision attacks. 930 931config CRYPTO_SHA512_OCTEON 932 tristate "SHA384 and SHA512 digest algorithms (OCTEON)" 933 depends on CPU_CAVIUM_OCTEON 934 select CRYPTO_SHA512 935 select CRYPTO_HASH 936 help 937 SHA-512 secure hash standard (DFIPS 180-2) implemented 938 using OCTEON crypto instructions, when available. 939 940config CRYPTO_SHA512_SPARC64 941 tristate "SHA384 and SHA512 digest algorithm (SPARC64)" 942 depends on SPARC64 943 select CRYPTO_SHA512 944 select CRYPTO_HASH 945 help 946 SHA-512 secure hash standard (DFIPS 180-2) implemented 947 using sparc64 crypto instructions, when available. 948 949config CRYPTO_SHA3 950 tristate "SHA3 digest algorithm" 951 select CRYPTO_HASH 952 help 953 SHA-3 secure hash standard (DFIPS 202). It's based on 954 cryptographic sponge function family called Keccak. 955 956 References: 957 http://keccak.noekeon.org/ 958 959config CRYPTO_SM3 960 tristate "SM3 digest algorithm" 961 select CRYPTO_HASH 962 help 963 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3). 964 It is part of the Chinese Commercial Cryptography suite. 965 966 References: 967 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf 968 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash 969 970config CRYPTO_STREEBOG 971 tristate "Streebog Hash Function" 972 select CRYPTO_HASH 973 help 974 Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian 975 cryptographic standard algorithms (called GOST algorithms). 976 This setting enables two hash algorithms with 256 and 512 bits output. 977 978 References: 979 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf 980 https://tools.ietf.org/html/rfc6986 981 982config CRYPTO_TGR192 983 tristate "Tiger digest algorithms" 984 select CRYPTO_HASH 985 help 986 Tiger hash algorithm 192, 160 and 128-bit hashes 987 988 Tiger is a hash function optimized for 64-bit processors while 989 still having decent performance on 32-bit processors. 990 Tiger was developed by Ross Anderson and Eli Biham. 991 992 See also: 993 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>. 994 995config CRYPTO_WP512 996 tristate "Whirlpool digest algorithms" 997 select CRYPTO_HASH 998 help 999 Whirlpool hash algorithm 512, 384 and 256-bit hashes 1000 1001 Whirlpool-512 is part of the NESSIE cryptographic primitives. 1002 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard 1003 1004 See also: 1005 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html> 1006 1007config CRYPTO_GHASH_CLMUL_NI_INTEL 1008 tristate "GHASH digest algorithm (CLMUL-NI accelerated)" 1009 depends on X86 && 64BIT 1010 select CRYPTO_CRYPTD 1011 help 1012 GHASH is message digest algorithm for GCM (Galois/Counter Mode). 1013 The implementation is accelerated by CLMUL-NI of Intel. 1014 1015comment "Ciphers" 1016 1017config CRYPTO_AES 1018 tristate "AES cipher algorithms" 1019 select CRYPTO_ALGAPI 1020 help 1021 AES cipher algorithms (FIPS-197). AES uses the Rijndael 1022 algorithm. 1023 1024 Rijndael appears to be consistently a very good performer in 1025 both hardware and software across a wide range of computing 1026 environments regardless of its use in feedback or non-feedback 1027 modes. Its key setup time is excellent, and its key agility is 1028 good. Rijndael's very low memory requirements make it very well 1029 suited for restricted-space environments, in which it also 1030 demonstrates excellent performance. Rijndael's operations are 1031 among the easiest to defend against power and timing attacks. 1032 1033 The AES specifies three key sizes: 128, 192 and 256 bits 1034 1035 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information. 1036 1037config CRYPTO_AES_TI 1038 tristate "Fixed time AES cipher" 1039 select CRYPTO_ALGAPI 1040 help 1041 This is a generic implementation of AES that attempts to eliminate 1042 data dependent latencies as much as possible without affecting 1043 performance too much. It is intended for use by the generic CCM 1044 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely 1045 solely on encryption (although decryption is supported as well, but 1046 with a more dramatic performance hit) 1047 1048 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and 1049 8 for decryption), this implementation only uses just two S-boxes of 1050 256 bytes each, and attempts to eliminate data dependent latencies by 1051 prefetching the entire table into the cache at the start of each 1052 block. Interrupts are also disabled to avoid races where cachelines 1053 are evicted when the CPU is interrupted to do something else. 1054 1055config CRYPTO_AES_586 1056 tristate "AES cipher algorithms (i586)" 1057 depends on (X86 || UML_X86) && !64BIT 1058 select CRYPTO_ALGAPI 1059 select CRYPTO_AES 1060 help 1061 AES cipher algorithms (FIPS-197). AES uses the Rijndael 1062 algorithm. 1063 1064 Rijndael appears to be consistently a very good performer in 1065 both hardware and software across a wide range of computing 1066 environments regardless of its use in feedback or non-feedback 1067 modes. Its key setup time is excellent, and its key agility is 1068 good. Rijndael's very low memory requirements make it very well 1069 suited for restricted-space environments, in which it also 1070 demonstrates excellent performance. Rijndael's operations are 1071 among the easiest to defend against power and timing attacks. 1072 1073 The AES specifies three key sizes: 128, 192 and 256 bits 1074 1075 See <http://csrc.nist.gov/encryption/aes/> for more information. 1076 1077config CRYPTO_AES_X86_64 1078 tristate "AES cipher algorithms (x86_64)" 1079 depends on (X86 || UML_X86) && 64BIT 1080 select CRYPTO_ALGAPI 1081 select CRYPTO_AES 1082 help 1083 AES cipher algorithms (FIPS-197). AES uses the Rijndael 1084 algorithm. 1085 1086 Rijndael appears to be consistently a very good performer in 1087 both hardware and software across a wide range of computing 1088 environments regardless of its use in feedback or non-feedback 1089 modes. Its key setup time is excellent, and its key agility is 1090 good. Rijndael's very low memory requirements make it very well 1091 suited for restricted-space environments, in which it also 1092 demonstrates excellent performance. Rijndael's operations are 1093 among the easiest to defend against power and timing attacks. 1094 1095 The AES specifies three key sizes: 128, 192 and 256 bits 1096 1097 See <http://csrc.nist.gov/encryption/aes/> for more information. 1098 1099config CRYPTO_AES_NI_INTEL 1100 tristate "AES cipher algorithms (AES-NI)" 1101 depends on X86 1102 select CRYPTO_AEAD 1103 select CRYPTO_AES_X86_64 if 64BIT 1104 select CRYPTO_AES_586 if !64BIT 1105 select CRYPTO_ALGAPI 1106 select CRYPTO_BLKCIPHER 1107 select CRYPTO_GLUE_HELPER_X86 if 64BIT 1108 select CRYPTO_SIMD 1109 help 1110 Use Intel AES-NI instructions for AES algorithm. 1111 1112 AES cipher algorithms (FIPS-197). AES uses the Rijndael 1113 algorithm. 1114 1115 Rijndael appears to be consistently a very good performer in 1116 both hardware and software across a wide range of computing 1117 environments regardless of its use in feedback or non-feedback 1118 modes. Its key setup time is excellent, and its key agility is 1119 good. Rijndael's very low memory requirements make it very well 1120 suited for restricted-space environments, in which it also 1121 demonstrates excellent performance. Rijndael's operations are 1122 among the easiest to defend against power and timing attacks. 1123 1124 The AES specifies three key sizes: 128, 192 and 256 bits 1125 1126 See <http://csrc.nist.gov/encryption/aes/> for more information. 1127 1128 In addition to AES cipher algorithm support, the acceleration 1129 for some popular block cipher mode is supported too, including 1130 ECB, CBC, LRW, XTS. The 64 bit version has additional 1131 acceleration for CTR. 1132 1133config CRYPTO_AES_SPARC64 1134 tristate "AES cipher algorithms (SPARC64)" 1135 depends on SPARC64 1136 select CRYPTO_CRYPTD 1137 select CRYPTO_ALGAPI 1138 help 1139 Use SPARC64 crypto opcodes for AES algorithm. 1140 1141 AES cipher algorithms (FIPS-197). AES uses the Rijndael 1142 algorithm. 1143 1144 Rijndael appears to be consistently a very good performer in 1145 both hardware and software across a wide range of computing 1146 environments regardless of its use in feedback or non-feedback 1147 modes. Its key setup time is excellent, and its key agility is 1148 good. Rijndael's very low memory requirements make it very well 1149 suited for restricted-space environments, in which it also 1150 demonstrates excellent performance. Rijndael's operations are 1151 among the easiest to defend against power and timing attacks. 1152 1153 The AES specifies three key sizes: 128, 192 and 256 bits 1154 1155 See <http://csrc.nist.gov/encryption/aes/> for more information. 1156 1157 In addition to AES cipher algorithm support, the acceleration 1158 for some popular block cipher mode is supported too, including 1159 ECB and CBC. 1160 1161config CRYPTO_AES_PPC_SPE 1162 tristate "AES cipher algorithms (PPC SPE)" 1163 depends on PPC && SPE 1164 help 1165 AES cipher algorithms (FIPS-197). Additionally the acceleration 1166 for popular block cipher modes ECB, CBC, CTR and XTS is supported. 1167 This module should only be used for low power (router) devices 1168 without hardware AES acceleration (e.g. caam crypto). It reduces the 1169 size of the AES tables from 16KB to 8KB + 256 bytes and mitigates 1170 timining attacks. Nevertheless it might be not as secure as other 1171 architecture specific assembler implementations that work on 1KB 1172 tables or 256 bytes S-boxes. 1173 1174config CRYPTO_ANUBIS 1175 tristate "Anubis cipher algorithm" 1176 select CRYPTO_ALGAPI 1177 help 1178 Anubis cipher algorithm. 1179 1180 Anubis is a variable key length cipher which can use keys from 1181 128 bits to 320 bits in length. It was evaluated as a entrant 1182 in the NESSIE competition. 1183 1184 See also: 1185 <https://www.cosic.esat.kuleuven.be/nessie/reports/> 1186 <http://www.larc.usp.br/~pbarreto/AnubisPage.html> 1187 1188config CRYPTO_ARC4 1189 tristate "ARC4 cipher algorithm" 1190 select CRYPTO_BLKCIPHER 1191 help 1192 ARC4 cipher algorithm. 1193 1194 ARC4 is a stream cipher using keys ranging from 8 bits to 2048 1195 bits in length. This algorithm is required for driver-based 1196 WEP, but it should not be for other purposes because of the 1197 weakness of the algorithm. 1198 1199config CRYPTO_BLOWFISH 1200 tristate "Blowfish cipher algorithm" 1201 select CRYPTO_ALGAPI 1202 select CRYPTO_BLOWFISH_COMMON 1203 help 1204 Blowfish cipher algorithm, by Bruce Schneier. 1205 1206 This is a variable key length cipher which can use keys from 32 1207 bits to 448 bits in length. It's fast, simple and specifically 1208 designed for use on "large microprocessors". 1209 1210 See also: 1211 <http://www.schneier.com/blowfish.html> 1212 1213config CRYPTO_BLOWFISH_COMMON 1214 tristate 1215 help 1216 Common parts of the Blowfish cipher algorithm shared by the 1217 generic c and the assembler implementations. 1218 1219 See also: 1220 <http://www.schneier.com/blowfish.html> 1221 1222config CRYPTO_BLOWFISH_X86_64 1223 tristate "Blowfish cipher algorithm (x86_64)" 1224 depends on X86 && 64BIT 1225 select CRYPTO_BLKCIPHER 1226 select CRYPTO_BLOWFISH_COMMON 1227 help 1228 Blowfish cipher algorithm (x86_64), by Bruce Schneier. 1229 1230 This is a variable key length cipher which can use keys from 32 1231 bits to 448 bits in length. It's fast, simple and specifically 1232 designed for use on "large microprocessors". 1233 1234 See also: 1235 <http://www.schneier.com/blowfish.html> 1236 1237config CRYPTO_CAMELLIA 1238 tristate "Camellia cipher algorithms" 1239 depends on CRYPTO 1240 select CRYPTO_ALGAPI 1241 help 1242 Camellia cipher algorithms module. 1243 1244 Camellia is a symmetric key block cipher developed jointly 1245 at NTT and Mitsubishi Electric Corporation. 1246 1247 The Camellia specifies three key sizes: 128, 192 and 256 bits. 1248 1249 See also: 1250 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 1251 1252config CRYPTO_CAMELLIA_X86_64 1253 tristate "Camellia cipher algorithm (x86_64)" 1254 depends on X86 && 64BIT 1255 depends on CRYPTO 1256 select CRYPTO_BLKCIPHER 1257 select CRYPTO_GLUE_HELPER_X86 1258 help 1259 Camellia cipher algorithm module (x86_64). 1260 1261 Camellia is a symmetric key block cipher developed jointly 1262 at NTT and Mitsubishi Electric Corporation. 1263 1264 The Camellia specifies three key sizes: 128, 192 and 256 bits. 1265 1266 See also: 1267 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 1268 1269config CRYPTO_CAMELLIA_AESNI_AVX_X86_64 1270 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)" 1271 depends on X86 && 64BIT 1272 depends on CRYPTO 1273 select CRYPTO_BLKCIPHER 1274 select CRYPTO_CAMELLIA_X86_64 1275 select CRYPTO_GLUE_HELPER_X86 1276 select CRYPTO_SIMD 1277 select CRYPTO_XTS 1278 help 1279 Camellia cipher algorithm module (x86_64/AES-NI/AVX). 1280 1281 Camellia is a symmetric key block cipher developed jointly 1282 at NTT and Mitsubishi Electric Corporation. 1283 1284 The Camellia specifies three key sizes: 128, 192 and 256 bits. 1285 1286 See also: 1287 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 1288 1289config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 1290 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)" 1291 depends on X86 && 64BIT 1292 depends on CRYPTO 1293 select CRYPTO_CAMELLIA_AESNI_AVX_X86_64 1294 help 1295 Camellia cipher algorithm module (x86_64/AES-NI/AVX2). 1296 1297 Camellia is a symmetric key block cipher developed jointly 1298 at NTT and Mitsubishi Electric Corporation. 1299 1300 The Camellia specifies three key sizes: 128, 192 and 256 bits. 1301 1302 See also: 1303 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 1304 1305config CRYPTO_CAMELLIA_SPARC64 1306 tristate "Camellia cipher algorithm (SPARC64)" 1307 depends on SPARC64 1308 depends on CRYPTO 1309 select CRYPTO_ALGAPI 1310 help 1311 Camellia cipher algorithm module (SPARC64). 1312 1313 Camellia is a symmetric key block cipher developed jointly 1314 at NTT and Mitsubishi Electric Corporation. 1315 1316 The Camellia specifies three key sizes: 128, 192 and 256 bits. 1317 1318 See also: 1319 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 1320 1321config CRYPTO_CAST_COMMON 1322 tristate 1323 help 1324 Common parts of the CAST cipher algorithms shared by the 1325 generic c and the assembler implementations. 1326 1327config CRYPTO_CAST5 1328 tristate "CAST5 (CAST-128) cipher algorithm" 1329 select CRYPTO_ALGAPI 1330 select CRYPTO_CAST_COMMON 1331 help 1332 The CAST5 encryption algorithm (synonymous with CAST-128) is 1333 described in RFC2144. 1334 1335config CRYPTO_CAST5_AVX_X86_64 1336 tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)" 1337 depends on X86 && 64BIT 1338 select CRYPTO_BLKCIPHER 1339 select CRYPTO_CAST5 1340 select CRYPTO_CAST_COMMON 1341 select CRYPTO_SIMD 1342 help 1343 The CAST5 encryption algorithm (synonymous with CAST-128) is 1344 described in RFC2144. 1345 1346 This module provides the Cast5 cipher algorithm that processes 1347 sixteen blocks parallel using the AVX instruction set. 1348 1349config CRYPTO_CAST6 1350 tristate "CAST6 (CAST-256) cipher algorithm" 1351 select CRYPTO_ALGAPI 1352 select CRYPTO_CAST_COMMON 1353 help 1354 The CAST6 encryption algorithm (synonymous with CAST-256) is 1355 described in RFC2612. 1356 1357config CRYPTO_CAST6_AVX_X86_64 1358 tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)" 1359 depends on X86 && 64BIT 1360 select CRYPTO_BLKCIPHER 1361 select CRYPTO_CAST6 1362 select CRYPTO_CAST_COMMON 1363 select CRYPTO_GLUE_HELPER_X86 1364 select CRYPTO_SIMD 1365 select CRYPTO_XTS 1366 help 1367 The CAST6 encryption algorithm (synonymous with CAST-256) is 1368 described in RFC2612. 1369 1370 This module provides the Cast6 cipher algorithm that processes 1371 eight blocks parallel using the AVX instruction set. 1372 1373config CRYPTO_DES 1374 tristate "DES and Triple DES EDE cipher algorithms" 1375 select CRYPTO_ALGAPI 1376 help 1377 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3). 1378 1379config CRYPTO_DES_SPARC64 1380 tristate "DES and Triple DES EDE cipher algorithms (SPARC64)" 1381 depends on SPARC64 1382 select CRYPTO_ALGAPI 1383 select CRYPTO_DES 1384 help 1385 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3), 1386 optimized using SPARC64 crypto opcodes. 1387 1388config CRYPTO_DES3_EDE_X86_64 1389 tristate "Triple DES EDE cipher algorithm (x86-64)" 1390 depends on X86 && 64BIT 1391 select CRYPTO_BLKCIPHER 1392 select CRYPTO_DES 1393 help 1394 Triple DES EDE (FIPS 46-3) algorithm. 1395 1396 This module provides implementation of the Triple DES EDE cipher 1397 algorithm that is optimized for x86-64 processors. Two versions of 1398 algorithm are provided; regular processing one input block and 1399 one that processes three blocks parallel. 1400 1401config CRYPTO_FCRYPT 1402 tristate "FCrypt cipher algorithm" 1403 select CRYPTO_ALGAPI 1404 select CRYPTO_BLKCIPHER 1405 help 1406 FCrypt algorithm used by RxRPC. 1407 1408config CRYPTO_KHAZAD 1409 tristate "Khazad cipher algorithm" 1410 select CRYPTO_ALGAPI 1411 help 1412 Khazad cipher algorithm. 1413 1414 Khazad was a finalist in the initial NESSIE competition. It is 1415 an algorithm optimized for 64-bit processors with good performance 1416 on 32-bit processors. Khazad uses an 128 bit key size. 1417 1418 See also: 1419 <http://www.larc.usp.br/~pbarreto/KhazadPage.html> 1420 1421config CRYPTO_SALSA20 1422 tristate "Salsa20 stream cipher algorithm" 1423 select CRYPTO_BLKCIPHER 1424 help 1425 Salsa20 stream cipher algorithm. 1426 1427 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT 1428 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/> 1429 1430 The Salsa20 stream cipher algorithm is designed by Daniel J. 1431 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html> 1432 1433config CRYPTO_CHACHA20 1434 tristate "ChaCha stream cipher algorithms" 1435 select CRYPTO_BLKCIPHER 1436 help 1437 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms. 1438 1439 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J. 1440 Bernstein and further specified in RFC7539 for use in IETF protocols. 1441 This is the portable C implementation of ChaCha20. See also: 1442 <http://cr.yp.to/chacha/chacha-20080128.pdf> 1443 1444 XChaCha20 is the application of the XSalsa20 construction to ChaCha20 1445 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length 1446 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits, 1447 while provably retaining ChaCha20's security. See also: 1448 <https://cr.yp.to/snuffle/xsalsa-20081128.pdf> 1449 1450 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly 1451 reduced security margin but increased performance. It can be needed 1452 in some performance-sensitive scenarios. 1453 1454config CRYPTO_CHACHA20_X86_64 1455 tristate "ChaCha20 cipher algorithm (x86_64/SSSE3/AVX2)" 1456 depends on X86 && 64BIT 1457 select CRYPTO_BLKCIPHER 1458 select CRYPTO_CHACHA20 1459 help 1460 ChaCha20 cipher algorithm, RFC7539. 1461 1462 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J. 1463 Bernstein and further specified in RFC7539 for use in IETF protocols. 1464 This is the x86_64 assembler implementation using SIMD instructions. 1465 1466 See also: 1467 <http://cr.yp.to/chacha/chacha-20080128.pdf> 1468 1469config CRYPTO_SEED 1470 tristate "SEED cipher algorithm" 1471 select CRYPTO_ALGAPI 1472 help 1473 SEED cipher algorithm (RFC4269). 1474 1475 SEED is a 128-bit symmetric key block cipher that has been 1476 developed by KISA (Korea Information Security Agency) as a 1477 national standard encryption algorithm of the Republic of Korea. 1478 It is a 16 round block cipher with the key size of 128 bit. 1479 1480 See also: 1481 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp> 1482 1483config CRYPTO_SERPENT 1484 tristate "Serpent cipher algorithm" 1485 select CRYPTO_ALGAPI 1486 help 1487 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1488 1489 Keys are allowed to be from 0 to 256 bits in length, in steps 1490 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed 1491 variant of Serpent for compatibility with old kerneli.org code. 1492 1493 See also: 1494 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1495 1496config CRYPTO_SERPENT_SSE2_X86_64 1497 tristate "Serpent cipher algorithm (x86_64/SSE2)" 1498 depends on X86 && 64BIT 1499 select CRYPTO_BLKCIPHER 1500 select CRYPTO_GLUE_HELPER_X86 1501 select CRYPTO_SERPENT 1502 select CRYPTO_SIMD 1503 help 1504 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1505 1506 Keys are allowed to be from 0 to 256 bits in length, in steps 1507 of 8 bits. 1508 1509 This module provides Serpent cipher algorithm that processes eight 1510 blocks parallel using SSE2 instruction set. 1511 1512 See also: 1513 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1514 1515config CRYPTO_SERPENT_SSE2_586 1516 tristate "Serpent cipher algorithm (i586/SSE2)" 1517 depends on X86 && !64BIT 1518 select CRYPTO_BLKCIPHER 1519 select CRYPTO_GLUE_HELPER_X86 1520 select CRYPTO_SERPENT 1521 select CRYPTO_SIMD 1522 help 1523 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1524 1525 Keys are allowed to be from 0 to 256 bits in length, in steps 1526 of 8 bits. 1527 1528 This module provides Serpent cipher algorithm that processes four 1529 blocks parallel using SSE2 instruction set. 1530 1531 See also: 1532 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1533 1534config CRYPTO_SERPENT_AVX_X86_64 1535 tristate "Serpent cipher algorithm (x86_64/AVX)" 1536 depends on X86 && 64BIT 1537 select CRYPTO_BLKCIPHER 1538 select CRYPTO_GLUE_HELPER_X86 1539 select CRYPTO_SERPENT 1540 select CRYPTO_SIMD 1541 select CRYPTO_XTS 1542 help 1543 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1544 1545 Keys are allowed to be from 0 to 256 bits in length, in steps 1546 of 8 bits. 1547 1548 This module provides the Serpent cipher algorithm that processes 1549 eight blocks parallel using the AVX instruction set. 1550 1551 See also: 1552 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1553 1554config CRYPTO_SERPENT_AVX2_X86_64 1555 tristate "Serpent cipher algorithm (x86_64/AVX2)" 1556 depends on X86 && 64BIT 1557 select CRYPTO_SERPENT_AVX_X86_64 1558 help 1559 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1560 1561 Keys are allowed to be from 0 to 256 bits in length, in steps 1562 of 8 bits. 1563 1564 This module provides Serpent cipher algorithm that processes 16 1565 blocks parallel using AVX2 instruction set. 1566 1567 See also: 1568 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1569 1570config CRYPTO_SM4 1571 tristate "SM4 cipher algorithm" 1572 select CRYPTO_ALGAPI 1573 help 1574 SM4 cipher algorithms (OSCCA GB/T 32907-2016). 1575 1576 SM4 (GBT.32907-2016) is a cryptographic standard issued by the 1577 Organization of State Commercial Administration of China (OSCCA) 1578 as an authorized cryptographic algorithms for the use within China. 1579 1580 SMS4 was originally created for use in protecting wireless 1581 networks, and is mandated in the Chinese National Standard for 1582 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure) 1583 (GB.15629.11-2003). 1584 1585 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and 1586 standardized through TC 260 of the Standardization Administration 1587 of the People's Republic of China (SAC). 1588 1589 The input, output, and key of SMS4 are each 128 bits. 1590 1591 See also: <https://eprint.iacr.org/2008/329.pdf> 1592 1593 If unsure, say N. 1594 1595config CRYPTO_TEA 1596 tristate "TEA, XTEA and XETA cipher algorithms" 1597 select CRYPTO_ALGAPI 1598 help 1599 TEA cipher algorithm. 1600 1601 Tiny Encryption Algorithm is a simple cipher that uses 1602 many rounds for security. It is very fast and uses 1603 little memory. 1604 1605 Xtendend Tiny Encryption Algorithm is a modification to 1606 the TEA algorithm to address a potential key weakness 1607 in the TEA algorithm. 1608 1609 Xtendend Encryption Tiny Algorithm is a mis-implementation 1610 of the XTEA algorithm for compatibility purposes. 1611 1612config CRYPTO_TWOFISH 1613 tristate "Twofish cipher algorithm" 1614 select CRYPTO_ALGAPI 1615 select CRYPTO_TWOFISH_COMMON 1616 help 1617 Twofish cipher algorithm. 1618 1619 Twofish was submitted as an AES (Advanced Encryption Standard) 1620 candidate cipher by researchers at CounterPane Systems. It is a 1621 16 round block cipher supporting key sizes of 128, 192, and 256 1622 bits. 1623 1624 See also: 1625 <http://www.schneier.com/twofish.html> 1626 1627config CRYPTO_TWOFISH_COMMON 1628 tristate 1629 help 1630 Common parts of the Twofish cipher algorithm shared by the 1631 generic c and the assembler implementations. 1632 1633config CRYPTO_TWOFISH_586 1634 tristate "Twofish cipher algorithms (i586)" 1635 depends on (X86 || UML_X86) && !64BIT 1636 select CRYPTO_ALGAPI 1637 select CRYPTO_TWOFISH_COMMON 1638 help 1639 Twofish cipher algorithm. 1640 1641 Twofish was submitted as an AES (Advanced Encryption Standard) 1642 candidate cipher by researchers at CounterPane Systems. It is a 1643 16 round block cipher supporting key sizes of 128, 192, and 256 1644 bits. 1645 1646 See also: 1647 <http://www.schneier.com/twofish.html> 1648 1649config CRYPTO_TWOFISH_X86_64 1650 tristate "Twofish cipher algorithm (x86_64)" 1651 depends on (X86 || UML_X86) && 64BIT 1652 select CRYPTO_ALGAPI 1653 select CRYPTO_TWOFISH_COMMON 1654 help 1655 Twofish cipher algorithm (x86_64). 1656 1657 Twofish was submitted as an AES (Advanced Encryption Standard) 1658 candidate cipher by researchers at CounterPane Systems. It is a 1659 16 round block cipher supporting key sizes of 128, 192, and 256 1660 bits. 1661 1662 See also: 1663 <http://www.schneier.com/twofish.html> 1664 1665config CRYPTO_TWOFISH_X86_64_3WAY 1666 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)" 1667 depends on X86 && 64BIT 1668 select CRYPTO_BLKCIPHER 1669 select CRYPTO_TWOFISH_COMMON 1670 select CRYPTO_TWOFISH_X86_64 1671 select CRYPTO_GLUE_HELPER_X86 1672 help 1673 Twofish cipher algorithm (x86_64, 3-way parallel). 1674 1675 Twofish was submitted as an AES (Advanced Encryption Standard) 1676 candidate cipher by researchers at CounterPane Systems. It is a 1677 16 round block cipher supporting key sizes of 128, 192, and 256 1678 bits. 1679 1680 This module provides Twofish cipher algorithm that processes three 1681 blocks parallel, utilizing resources of out-of-order CPUs better. 1682 1683 See also: 1684 <http://www.schneier.com/twofish.html> 1685 1686config CRYPTO_TWOFISH_AVX_X86_64 1687 tristate "Twofish cipher algorithm (x86_64/AVX)" 1688 depends on X86 && 64BIT 1689 select CRYPTO_BLKCIPHER 1690 select CRYPTO_GLUE_HELPER_X86 1691 select CRYPTO_SIMD 1692 select CRYPTO_TWOFISH_COMMON 1693 select CRYPTO_TWOFISH_X86_64 1694 select CRYPTO_TWOFISH_X86_64_3WAY 1695 help 1696 Twofish cipher algorithm (x86_64/AVX). 1697 1698 Twofish was submitted as an AES (Advanced Encryption Standard) 1699 candidate cipher by researchers at CounterPane Systems. It is a 1700 16 round block cipher supporting key sizes of 128, 192, and 256 1701 bits. 1702 1703 This module provides the Twofish cipher algorithm that processes 1704 eight blocks parallel using the AVX Instruction Set. 1705 1706 See also: 1707 <http://www.schneier.com/twofish.html> 1708 1709comment "Compression" 1710 1711config CRYPTO_DEFLATE 1712 tristate "Deflate compression algorithm" 1713 select CRYPTO_ALGAPI 1714 select CRYPTO_ACOMP2 1715 select ZLIB_INFLATE 1716 select ZLIB_DEFLATE 1717 help 1718 This is the Deflate algorithm (RFC1951), specified for use in 1719 IPSec with the IPCOMP protocol (RFC3173, RFC2394). 1720 1721 You will most probably want this if using IPSec. 1722 1723config CRYPTO_LZO 1724 tristate "LZO compression algorithm" 1725 select CRYPTO_ALGAPI 1726 select CRYPTO_ACOMP2 1727 select LZO_COMPRESS 1728 select LZO_DECOMPRESS 1729 help 1730 This is the LZO algorithm. 1731 1732config CRYPTO_842 1733 tristate "842 compression algorithm" 1734 select CRYPTO_ALGAPI 1735 select CRYPTO_ACOMP2 1736 select 842_COMPRESS 1737 select 842_DECOMPRESS 1738 help 1739 This is the 842 algorithm. 1740 1741config CRYPTO_LZ4 1742 tristate "LZ4 compression algorithm" 1743 select CRYPTO_ALGAPI 1744 select CRYPTO_ACOMP2 1745 select LZ4_COMPRESS 1746 select LZ4_DECOMPRESS 1747 help 1748 This is the LZ4 algorithm. 1749 1750config CRYPTO_LZ4HC 1751 tristate "LZ4HC compression algorithm" 1752 select CRYPTO_ALGAPI 1753 select CRYPTO_ACOMP2 1754 select LZ4HC_COMPRESS 1755 select LZ4_DECOMPRESS 1756 help 1757 This is the LZ4 high compression mode algorithm. 1758 1759config CRYPTO_ZSTD 1760 tristate "Zstd compression algorithm" 1761 select CRYPTO_ALGAPI 1762 select CRYPTO_ACOMP2 1763 select ZSTD_COMPRESS 1764 select ZSTD_DECOMPRESS 1765 help 1766 This is the zstd algorithm. 1767 1768comment "Random Number Generation" 1769 1770config CRYPTO_ANSI_CPRNG 1771 tristate "Pseudo Random Number Generation for Cryptographic modules" 1772 select CRYPTO_AES 1773 select CRYPTO_RNG 1774 help 1775 This option enables the generic pseudo random number generator 1776 for cryptographic modules. Uses the Algorithm specified in 1777 ANSI X9.31 A.2.4. Note that this option must be enabled if 1778 CRYPTO_FIPS is selected 1779 1780menuconfig CRYPTO_DRBG_MENU 1781 tristate "NIST SP800-90A DRBG" 1782 help 1783 NIST SP800-90A compliant DRBG. In the following submenu, one or 1784 more of the DRBG types must be selected. 1785 1786if CRYPTO_DRBG_MENU 1787 1788config CRYPTO_DRBG_HMAC 1789 bool 1790 default y 1791 select CRYPTO_HMAC 1792 select CRYPTO_SHA256 1793 1794config CRYPTO_DRBG_HASH 1795 bool "Enable Hash DRBG" 1796 select CRYPTO_SHA256 1797 help 1798 Enable the Hash DRBG variant as defined in NIST SP800-90A. 1799 1800config CRYPTO_DRBG_CTR 1801 bool "Enable CTR DRBG" 1802 select CRYPTO_AES 1803 depends on CRYPTO_CTR 1804 help 1805 Enable the CTR DRBG variant as defined in NIST SP800-90A. 1806 1807config CRYPTO_DRBG 1808 tristate 1809 default CRYPTO_DRBG_MENU 1810 select CRYPTO_RNG 1811 select CRYPTO_JITTERENTROPY 1812 1813endif # if CRYPTO_DRBG_MENU 1814 1815config CRYPTO_JITTERENTROPY 1816 tristate "Jitterentropy Non-Deterministic Random Number Generator" 1817 select CRYPTO_RNG 1818 help 1819 The Jitterentropy RNG is a noise that is intended 1820 to provide seed to another RNG. The RNG does not 1821 perform any cryptographic whitening of the generated 1822 random numbers. This Jitterentropy RNG registers with 1823 the kernel crypto API and can be used by any caller. 1824 1825config CRYPTO_USER_API 1826 tristate 1827 1828config CRYPTO_USER_API_HASH 1829 tristate "User-space interface for hash algorithms" 1830 depends on NET 1831 select CRYPTO_HASH 1832 select CRYPTO_USER_API 1833 help 1834 This option enables the user-spaces interface for hash 1835 algorithms. 1836 1837config CRYPTO_USER_API_SKCIPHER 1838 tristate "User-space interface for symmetric key cipher algorithms" 1839 depends on NET 1840 select CRYPTO_BLKCIPHER 1841 select CRYPTO_USER_API 1842 help 1843 This option enables the user-spaces interface for symmetric 1844 key cipher algorithms. 1845 1846config CRYPTO_USER_API_RNG 1847 tristate "User-space interface for random number generator algorithms" 1848 depends on NET 1849 select CRYPTO_RNG 1850 select CRYPTO_USER_API 1851 help 1852 This option enables the user-spaces interface for random 1853 number generator algorithms. 1854 1855config CRYPTO_USER_API_AEAD 1856 tristate "User-space interface for AEAD cipher algorithms" 1857 depends on NET 1858 select CRYPTO_AEAD 1859 select CRYPTO_BLKCIPHER 1860 select CRYPTO_NULL 1861 select CRYPTO_USER_API 1862 help 1863 This option enables the user-spaces interface for AEAD 1864 cipher algorithms. 1865 1866config CRYPTO_STATS 1867 bool "Crypto usage statistics for User-space" 1868 depends on CRYPTO_USER 1869 help 1870 This option enables the gathering of crypto stats. 1871 This will collect: 1872 - encrypt/decrypt size and numbers of symmeric operations 1873 - compress/decompress size and numbers of compress operations 1874 - size and numbers of hash operations 1875 - encrypt/decrypt/sign/verify numbers for asymmetric operations 1876 - generate/seed numbers for rng operations 1877 1878config CRYPTO_HASH_INFO 1879 bool 1880 1881source "drivers/crypto/Kconfig" 1882source crypto/asymmetric_keys/Kconfig 1883source certs/Kconfig 1884 1885endif # if CRYPTO 1886