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