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