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_FIPS140_MOD 37 tristate "Enable FIPS 140 cryptographic module" 38 depends on ARM64 && ARM64_MODULE_PLTS 39 depends on m 40 help 41 This option enables building a loadable module fips140.ko, which 42 contains various crypto algorithms that are also built into vmlinux. 43 At load time, this module overrides the built-in implementations of 44 these algorithms with its implementations. It also runs self-tests on 45 these algorithms and verifies the integrity of its code and data. If 46 either of these steps fails, the kernel will panic. 47 48 This module is intended to be loaded at early boot time in order to 49 meet FIPS 140 and NIAP FPT_TST_EXT.1 requirements. It shouldn't be 50 used if you don't need to meet these requirements. 51 52config CRYPTO_FIPS140_MOD_EVAL_TESTING 53 bool "Enable evaluation testing features in FIPS 140 module" 54 depends on CRYPTO_FIPS140_MOD 55 help 56 This option adds some features to the FIPS 140 module which are needed 57 for lab evaluation testing of the module, e.g. support for injecting 58 errors and support for a userspace interface to some of the module's 59 services. This option should not be enabled in production builds. 60 61config CRYPTO_FIPS140_MOD_DEBUG_INTEGRITY_CHECK 62 bool "Debug the integrity check in FIPS 140 module" 63 depends on CRYPTO_FIPS140_MOD 64 help 65 This option makes the FIPS 140 module provide debugfs files containing 66 the text and rodata that were used for the integrity check, i.e. the 67 runtime text and rodata with relocations and code patches unapplied. 68 This option also makes the module load even if the integrity check 69 fails so that these files can be used to debug the failure. (A 70 possible failure mode is that the kernel has added a new type of code 71 patching and the module needs to be updated to disable or unapply it.) 72 73 This option must not be enabled in production builds. 74 75 Example commands for debugging an integrity check failure: 76 77 adb root 78 adb shell mount debugfs -t debugfs /sys/kernel/debug 79 adb shell cp /sys/kernel/debug/fips140/{text,rodata} /data/local/tmp/ 80 adb pull /data/local/tmp/text text.checked 81 adb pull /data/local/tmp/rodata rodata.checked 82 llvm-objcopy -O binary --only-section=.text fips140.ko text.orig 83 llvm-objcopy -O binary --only-section=.rodata fips140.ko rodata.orig 84 for f in {text,rodata}.{orig,checked}; do xxd -g1 $f > $f.xxd; done 85 vimdiff text.{orig,checked}.xxd 86 vimdiff rodata.{orig,checked}.xxd 87 88config CRYPTO_ALGAPI 89 tristate 90 select CRYPTO_ALGAPI2 91 help 92 This option provides the API for cryptographic algorithms. 93 94config CRYPTO_ALGAPI2 95 tristate 96 97config CRYPTO_AEAD 98 tristate 99 select CRYPTO_AEAD2 100 select CRYPTO_ALGAPI 101 102config CRYPTO_AEAD2 103 tristate 104 select CRYPTO_ALGAPI2 105 select CRYPTO_NULL2 106 select CRYPTO_RNG2 107 108config CRYPTO_SKCIPHER 109 tristate 110 select CRYPTO_SKCIPHER2 111 select CRYPTO_ALGAPI 112 113config CRYPTO_SKCIPHER2 114 tristate 115 select CRYPTO_ALGAPI2 116 select CRYPTO_RNG2 117 118config CRYPTO_HASH 119 tristate 120 select CRYPTO_HASH2 121 select CRYPTO_ALGAPI 122 123config CRYPTO_HASH2 124 tristate 125 select CRYPTO_ALGAPI2 126 127config CRYPTO_RNG 128 tristate 129 select CRYPTO_RNG2 130 select CRYPTO_ALGAPI 131 132config CRYPTO_RNG2 133 tristate 134 select CRYPTO_ALGAPI2 135 136config CRYPTO_RNG_DEFAULT 137 tristate 138 select CRYPTO_DRBG_MENU 139 140config CRYPTO_AKCIPHER2 141 tristate 142 select CRYPTO_ALGAPI2 143 144config CRYPTO_AKCIPHER 145 tristate 146 select CRYPTO_AKCIPHER2 147 select CRYPTO_ALGAPI 148 149config CRYPTO_KPP2 150 tristate 151 select CRYPTO_ALGAPI2 152 153config CRYPTO_KPP 154 tristate 155 select CRYPTO_ALGAPI 156 select CRYPTO_KPP2 157 158config CRYPTO_ACOMP2 159 tristate 160 select CRYPTO_ALGAPI2 161 select SGL_ALLOC 162 163config CRYPTO_ACOMP 164 tristate 165 select CRYPTO_ALGAPI 166 select CRYPTO_ACOMP2 167 168config CRYPTO_MANAGER 169 tristate "Cryptographic algorithm manager" 170 select CRYPTO_MANAGER2 171 help 172 Create default cryptographic template instantiations such as 173 cbc(aes). 174 175config CRYPTO_MANAGER2 176 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y) 177 select CRYPTO_AEAD2 178 select CRYPTO_HASH2 179 select CRYPTO_SKCIPHER2 180 select CRYPTO_AKCIPHER2 181 select CRYPTO_KPP2 182 select CRYPTO_ACOMP2 183 184config CRYPTO_USER 185 tristate "Userspace cryptographic algorithm configuration" 186 depends on NET 187 select CRYPTO_MANAGER 188 help 189 Userspace configuration for cryptographic instantiations such as 190 cbc(aes). 191 192config CRYPTO_MANAGER_DISABLE_TESTS 193 bool "Disable run-time self tests" 194 default y 195 help 196 Disable run-time self tests that normally take place at 197 algorithm registration. 198 199config CRYPTO_MANAGER_EXTRA_TESTS 200 bool "Enable extra run-time crypto self tests" 201 depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER 202 help 203 Enable extra run-time self tests of registered crypto algorithms, 204 including randomized fuzz tests. 205 206 This is intended for developer use only, as these tests take much 207 longer to run than the normal self tests. 208 209config CRYPTO_GF128MUL 210 tristate 211 212config CRYPTO_NULL 213 tristate "Null algorithms" 214 select CRYPTO_NULL2 215 help 216 These are 'Null' algorithms, used by IPsec, which do nothing. 217 218config CRYPTO_NULL2 219 tristate 220 select CRYPTO_ALGAPI2 221 select CRYPTO_SKCIPHER2 222 select CRYPTO_HASH2 223 224config CRYPTO_PCRYPT 225 tristate "Parallel crypto engine" 226 depends on SMP 227 select PADATA 228 select CRYPTO_MANAGER 229 select CRYPTO_AEAD 230 help 231 This converts an arbitrary crypto algorithm into a parallel 232 algorithm that executes in kernel threads. 233 234config CRYPTO_CRYPTD 235 tristate "Software async crypto daemon" 236 select CRYPTO_SKCIPHER 237 select CRYPTO_HASH 238 select CRYPTO_MANAGER 239 help 240 This is a generic software asynchronous crypto daemon that 241 converts an arbitrary synchronous software crypto algorithm 242 into an asynchronous algorithm that executes in a kernel thread. 243 244config CRYPTO_AUTHENC 245 tristate "Authenc support" 246 select CRYPTO_AEAD 247 select CRYPTO_SKCIPHER 248 select CRYPTO_MANAGER 249 select CRYPTO_HASH 250 select CRYPTO_NULL 251 help 252 Authenc: Combined mode wrapper for IPsec. 253 This is required for IPSec. 254 255config CRYPTO_TEST 256 tristate "Testing module" 257 depends on m || EXPERT 258 select CRYPTO_MANAGER 259 help 260 Quick & dirty crypto test module. 261 262config CRYPTO_SIMD 263 tristate 264 select CRYPTO_CRYPTD 265 266config CRYPTO_ENGINE 267 tristate 268 269comment "Public-key cryptography" 270 271config CRYPTO_RSA 272 tristate "RSA algorithm" 273 select CRYPTO_AKCIPHER 274 select CRYPTO_MANAGER 275 select MPILIB 276 select ASN1 277 help 278 Generic implementation of the RSA public key algorithm. 279 280config CRYPTO_DH 281 tristate "Diffie-Hellman algorithm" 282 select CRYPTO_KPP 283 select MPILIB 284 help 285 Generic implementation of the Diffie-Hellman algorithm. 286 287config CRYPTO_ECC 288 tristate 289 select CRYPTO_RNG_DEFAULT 290 291config CRYPTO_ECDH 292 tristate "ECDH algorithm" 293 select CRYPTO_ECC 294 select CRYPTO_KPP 295 help 296 Generic implementation of the ECDH algorithm 297 298config CRYPTO_ECDSA 299 tristate "ECDSA (NIST P192, P256 etc.) algorithm" 300 select CRYPTO_ECC 301 select CRYPTO_AKCIPHER 302 select ASN1 303 help 304 Elliptic Curve Digital Signature Algorithm (NIST P192, P256 etc.) 305 is A NIST cryptographic standard algorithm. Only signature verification 306 is implemented. 307 308config CRYPTO_ECRDSA 309 tristate "EC-RDSA (GOST 34.10) algorithm" 310 select CRYPTO_ECC 311 select CRYPTO_AKCIPHER 312 select CRYPTO_STREEBOG 313 select OID_REGISTRY 314 select ASN1 315 help 316 Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012, 317 RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic 318 standard algorithms (called GOST algorithms). Only signature verification 319 is implemented. 320 321config CRYPTO_SM2 322 tristate "SM2 algorithm" 323 select CRYPTO_SM3 324 select CRYPTO_AKCIPHER 325 select CRYPTO_MANAGER 326 select MPILIB 327 select ASN1 328 help 329 Generic implementation of the SM2 public key algorithm. It was 330 published by State Encryption Management Bureau, China. 331 as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012. 332 333 References: 334 https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02 335 http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml 336 http://www.gmbz.org.cn/main/bzlb.html 337 338config CRYPTO_CURVE25519 339 tristate "Curve25519 algorithm" 340 select CRYPTO_KPP 341 select CRYPTO_LIB_CURVE25519_GENERIC 342 343config CRYPTO_CURVE25519_X86 344 tristate "x86_64 accelerated Curve25519 scalar multiplication library" 345 depends on X86 && 64BIT 346 select CRYPTO_LIB_CURVE25519_GENERIC 347 select CRYPTO_ARCH_HAVE_LIB_CURVE25519 348 349comment "Authenticated Encryption with Associated Data" 350 351config CRYPTO_CCM 352 tristate "CCM support" 353 select CRYPTO_CTR 354 select CRYPTO_HASH 355 select CRYPTO_AEAD 356 select CRYPTO_MANAGER 357 help 358 Support for Counter with CBC MAC. Required for IPsec. 359 360config CRYPTO_GCM 361 tristate "GCM/GMAC support" 362 select CRYPTO_CTR 363 select CRYPTO_AEAD 364 select CRYPTO_GHASH 365 select CRYPTO_NULL 366 select CRYPTO_MANAGER 367 help 368 Support for Galois/Counter Mode (GCM) and Galois Message 369 Authentication Code (GMAC). Required for IPSec. 370 371config CRYPTO_CHACHA20POLY1305 372 tristate "ChaCha20-Poly1305 AEAD support" 373 select CRYPTO_CHACHA20 374 select CRYPTO_POLY1305 375 select CRYPTO_AEAD 376 select CRYPTO_MANAGER 377 help 378 ChaCha20-Poly1305 AEAD support, RFC7539. 379 380 Support for the AEAD wrapper using the ChaCha20 stream cipher combined 381 with the Poly1305 authenticator. It is defined in RFC7539 for use in 382 IETF protocols. 383 384config CRYPTO_AEGIS128 385 tristate "AEGIS-128 AEAD algorithm" 386 select CRYPTO_AEAD 387 select CRYPTO_AES # for AES S-box tables 388 help 389 Support for the AEGIS-128 dedicated AEAD algorithm. 390 391config CRYPTO_AEGIS128_SIMD 392 bool "Support SIMD acceleration for AEGIS-128" 393 depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON) 394 default y 395 396config CRYPTO_AEGIS128_AESNI_SSE2 397 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" 398 depends on X86 && 64BIT 399 select CRYPTO_AEAD 400 select CRYPTO_SIMD 401 help 402 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm. 403 404config CRYPTO_SEQIV 405 tristate "Sequence Number IV Generator" 406 select CRYPTO_AEAD 407 select CRYPTO_SKCIPHER 408 select CRYPTO_NULL 409 select CRYPTO_RNG_DEFAULT 410 select CRYPTO_MANAGER 411 help 412 This IV generator generates an IV based on a sequence number by 413 xoring it with a salt. This algorithm is mainly useful for CTR 414 415config CRYPTO_ECHAINIV 416 tristate "Encrypted Chain IV Generator" 417 select CRYPTO_AEAD 418 select CRYPTO_NULL 419 select CRYPTO_RNG_DEFAULT 420 select CRYPTO_MANAGER 421 help 422 This IV generator generates an IV based on the encryption of 423 a sequence number xored with a salt. This is the default 424 algorithm for CBC. 425 426comment "Block modes" 427 428config CRYPTO_CBC 429 tristate "CBC support" 430 select CRYPTO_SKCIPHER 431 select CRYPTO_MANAGER 432 help 433 CBC: Cipher Block Chaining mode 434 This block cipher algorithm is required for IPSec. 435 436config CRYPTO_CFB 437 tristate "CFB support" 438 select CRYPTO_SKCIPHER 439 select CRYPTO_MANAGER 440 help 441 CFB: Cipher FeedBack mode 442 This block cipher algorithm is required for TPM2 Cryptography. 443 444config CRYPTO_CTR 445 tristate "CTR support" 446 select CRYPTO_SKCIPHER 447 select CRYPTO_MANAGER 448 help 449 CTR: Counter mode 450 This block cipher algorithm is required for IPSec. 451 452config CRYPTO_CTS 453 tristate "CTS support" 454 select CRYPTO_SKCIPHER 455 select CRYPTO_MANAGER 456 help 457 CTS: Cipher Text Stealing 458 This is the Cipher Text Stealing mode as described by 459 Section 8 of rfc2040 and referenced by rfc3962 460 (rfc3962 includes errata information in its Appendix A) or 461 CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010. 462 This mode is required for Kerberos gss mechanism support 463 for AES encryption. 464 465 See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final 466 467config CRYPTO_ECB 468 tristate "ECB support" 469 select CRYPTO_SKCIPHER 470 select CRYPTO_MANAGER 471 help 472 ECB: Electronic CodeBook mode 473 This is the simplest block cipher algorithm. It simply encrypts 474 the input block by block. 475 476config CRYPTO_LRW 477 tristate "LRW support" 478 select CRYPTO_SKCIPHER 479 select CRYPTO_MANAGER 480 select CRYPTO_GF128MUL 481 help 482 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable 483 narrow block cipher mode for dm-crypt. Use it with cipher 484 specification string aes-lrw-benbi, the key must be 256, 320 or 384. 485 The first 128, 192 or 256 bits in the key are used for AES and the 486 rest is used to tie each cipher block to its logical position. 487 488config CRYPTO_OFB 489 tristate "OFB support" 490 select CRYPTO_SKCIPHER 491 select CRYPTO_MANAGER 492 help 493 OFB: the Output Feedback mode makes a block cipher into a synchronous 494 stream cipher. It generates keystream blocks, which are then XORed 495 with the plaintext blocks to get the ciphertext. Flipping a bit in the 496 ciphertext produces a flipped bit in the plaintext at the same 497 location. This property allows many error correcting codes to function 498 normally even when applied before encryption. 499 500config CRYPTO_PCBC 501 tristate "PCBC support" 502 select CRYPTO_SKCIPHER 503 select CRYPTO_MANAGER 504 help 505 PCBC: Propagating Cipher Block Chaining mode 506 This block cipher algorithm is required for RxRPC. 507 508config CRYPTO_XCTR 509 tristate 510 select CRYPTO_SKCIPHER 511 select CRYPTO_MANAGER 512 help 513 XCTR: XOR Counter mode. This blockcipher mode is a variant of CTR mode 514 using XORs and little-endian addition rather than big-endian arithmetic. 515 XCTR mode is used to implement HCTR2. 516 517config CRYPTO_XTS 518 tristate "XTS support" 519 select CRYPTO_SKCIPHER 520 select CRYPTO_MANAGER 521 select CRYPTO_ECB 522 help 523 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain, 524 key size 256, 384 or 512 bits. This implementation currently 525 can't handle a sectorsize which is not a multiple of 16 bytes. 526 527config CRYPTO_KEYWRAP 528 tristate "Key wrapping support" 529 select CRYPTO_SKCIPHER 530 select CRYPTO_MANAGER 531 help 532 Support for key wrapping (NIST SP800-38F / RFC3394) without 533 padding. 534 535config CRYPTO_NHPOLY1305 536 tristate 537 select CRYPTO_HASH 538 select CRYPTO_LIB_POLY1305_GENERIC 539 540config CRYPTO_NHPOLY1305_SSE2 541 tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)" 542 depends on X86 && 64BIT 543 select CRYPTO_NHPOLY1305 544 help 545 SSE2 optimized implementation of the hash function used by the 546 Adiantum encryption mode. 547 548config CRYPTO_NHPOLY1305_AVX2 549 tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)" 550 depends on X86 && 64BIT 551 select CRYPTO_NHPOLY1305 552 help 553 AVX2 optimized implementation of the hash function used by the 554 Adiantum encryption mode. 555 556config CRYPTO_ADIANTUM 557 tristate "Adiantum support" 558 select CRYPTO_CHACHA20 559 select CRYPTO_LIB_POLY1305_GENERIC 560 select CRYPTO_NHPOLY1305 561 select CRYPTO_MANAGER 562 help 563 Adiantum is a tweakable, length-preserving encryption mode 564 designed for fast and secure disk encryption, especially on 565 CPUs without dedicated crypto instructions. It encrypts 566 each sector using the XChaCha12 stream cipher, two passes of 567 an ε-almost-∆-universal hash function, and an invocation of 568 the AES-256 block cipher on a single 16-byte block. On CPUs 569 without AES instructions, Adiantum is much faster than 570 AES-XTS. 571 572 Adiantum's security is provably reducible to that of its 573 underlying stream and block ciphers, subject to a security 574 bound. Unlike XTS, Adiantum is a true wide-block encryption 575 mode, so it actually provides an even stronger notion of 576 security than XTS, subject to the security bound. 577 578 If unsure, say N. 579 580config CRYPTO_HCTR2 581 tristate "HCTR2 support" 582 select CRYPTO_XCTR 583 select CRYPTO_POLYVAL 584 select CRYPTO_MANAGER 585 help 586 HCTR2 is a length-preserving encryption mode for storage encryption that 587 is efficient on processors with instructions to accelerate AES and 588 carryless multiplication, e.g. x86 processors with AES-NI and CLMUL, and 589 ARM processors with the ARMv8 crypto extensions. 590 591config CRYPTO_ESSIV 592 tristate "ESSIV support for block encryption" 593 select CRYPTO_AUTHENC 594 help 595 Encrypted salt-sector initialization vector (ESSIV) is an IV 596 generation method that is used in some cases by fscrypt and/or 597 dm-crypt. It uses the hash of the block encryption key as the 598 symmetric key for a block encryption pass applied to the input 599 IV, making low entropy IV sources more suitable for block 600 encryption. 601 602 This driver implements a crypto API template that can be 603 instantiated either as an skcipher or as an AEAD (depending on the 604 type of the first template argument), and which defers encryption 605 and decryption requests to the encapsulated cipher after applying 606 ESSIV to the input IV. Note that in the AEAD case, it is assumed 607 that the keys are presented in the same format used by the authenc 608 template, and that the IV appears at the end of the authenticated 609 associated data (AAD) region (which is how dm-crypt uses it.) 610 611 Note that the use of ESSIV is not recommended for new deployments, 612 and so this only needs to be enabled when interoperability with 613 existing encrypted volumes of filesystems is required, or when 614 building for a particular system that requires it (e.g., when 615 the SoC in question has accelerated CBC but not XTS, making CBC 616 combined with ESSIV the only feasible mode for h/w accelerated 617 block encryption) 618 619comment "Hash modes" 620 621config CRYPTO_CMAC 622 tristate "CMAC support" 623 select CRYPTO_HASH 624 select CRYPTO_MANAGER 625 help 626 Cipher-based Message Authentication Code (CMAC) specified by 627 The National Institute of Standards and Technology (NIST). 628 629 https://tools.ietf.org/html/rfc4493 630 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf 631 632config CRYPTO_HMAC 633 tristate "HMAC support" 634 select CRYPTO_HASH 635 select CRYPTO_MANAGER 636 help 637 HMAC: Keyed-Hashing for Message Authentication (RFC2104). 638 This is required for IPSec. 639 640config CRYPTO_XCBC 641 tristate "XCBC support" 642 select CRYPTO_HASH 643 select CRYPTO_MANAGER 644 help 645 XCBC: Keyed-Hashing with encryption algorithm 646 https://www.ietf.org/rfc/rfc3566.txt 647 http://csrc.nist.gov/encryption/modes/proposedmodes/ 648 xcbc-mac/xcbc-mac-spec.pdf 649 650config CRYPTO_VMAC 651 tristate "VMAC support" 652 select CRYPTO_HASH 653 select CRYPTO_MANAGER 654 help 655 VMAC is a message authentication algorithm designed for 656 very high speed on 64-bit architectures. 657 658 See also: 659 <https://fastcrypto.org/vmac> 660 661comment "Digest" 662 663config CRYPTO_CRC32C 664 tristate "CRC32c CRC algorithm" 665 select CRYPTO_HASH 666 select CRC32 667 help 668 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used 669 by iSCSI for header and data digests and by others. 670 See Castagnoli93. Module will be crc32c. 671 672config CRYPTO_CRC32C_INTEL 673 tristate "CRC32c INTEL hardware acceleration" 674 depends on X86 675 select CRYPTO_HASH 676 help 677 In Intel processor with SSE4.2 supported, the processor will 678 support CRC32C implementation using hardware accelerated CRC32 679 instruction. This option will create 'crc32c-intel' module, 680 which will enable any routine to use the CRC32 instruction to 681 gain performance compared with software implementation. 682 Module will be crc32c-intel. 683 684config CRYPTO_CRC32C_VPMSUM 685 tristate "CRC32c CRC algorithm (powerpc64)" 686 depends on PPC64 && ALTIVEC 687 select CRYPTO_HASH 688 select CRC32 689 help 690 CRC32c algorithm implemented using vector polynomial multiply-sum 691 (vpmsum) instructions, introduced in POWER8. Enable on POWER8 692 and newer processors for improved performance. 693 694 695config CRYPTO_CRC32C_SPARC64 696 tristate "CRC32c CRC algorithm (SPARC64)" 697 depends on SPARC64 698 select CRYPTO_HASH 699 select CRC32 700 help 701 CRC32c CRC algorithm implemented using sparc64 crypto instructions, 702 when available. 703 704config CRYPTO_CRC32 705 tristate "CRC32 CRC algorithm" 706 select CRYPTO_HASH 707 select CRC32 708 help 709 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm. 710 Shash crypto api wrappers to crc32_le function. 711 712config CRYPTO_CRC32_PCLMUL 713 tristate "CRC32 PCLMULQDQ hardware acceleration" 714 depends on X86 715 select CRYPTO_HASH 716 select CRC32 717 help 718 From Intel Westmere and AMD Bulldozer processor with SSE4.2 719 and PCLMULQDQ supported, the processor will support 720 CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ 721 instruction. This option will create 'crc32-pclmul' module, 722 which will enable any routine to use the CRC-32-IEEE 802.3 checksum 723 and gain better performance as compared with the table implementation. 724 725config CRYPTO_CRC32_MIPS 726 tristate "CRC32c and CRC32 CRC algorithm (MIPS)" 727 depends on MIPS_CRC_SUPPORT 728 select CRYPTO_HASH 729 help 730 CRC32c and CRC32 CRC algorithms implemented using mips crypto 731 instructions, when available. 732 733 734config CRYPTO_XXHASH 735 tristate "xxHash hash algorithm" 736 select CRYPTO_HASH 737 select XXHASH 738 help 739 xxHash non-cryptographic hash algorithm. Extremely fast, working at 740 speeds close to RAM limits. 741 742config CRYPTO_BLAKE2B 743 tristate "BLAKE2b digest algorithm" 744 select CRYPTO_HASH 745 help 746 Implementation of cryptographic hash function BLAKE2b (or just BLAKE2), 747 optimized for 64bit platforms and can produce digests of any size 748 between 1 to 64. The keyed hash is also implemented. 749 750 This module provides the following algorithms: 751 752 - blake2b-160 753 - blake2b-256 754 - blake2b-384 755 - blake2b-512 756 757 See https://blake2.net for further information. 758 759config CRYPTO_BLAKE2S_X86 760 bool "BLAKE2s digest algorithm (x86 accelerated version)" 761 depends on X86 && 64BIT 762 select CRYPTO_LIB_BLAKE2S_GENERIC 763 select CRYPTO_ARCH_HAVE_LIB_BLAKE2S 764 765config CRYPTO_CRCT10DIF 766 tristate "CRCT10DIF algorithm" 767 select CRYPTO_HASH 768 help 769 CRC T10 Data Integrity Field computation is being cast as 770 a crypto transform. This allows for faster crc t10 diff 771 transforms to be used if they are available. 772 773config CRYPTO_CRCT10DIF_PCLMUL 774 tristate "CRCT10DIF PCLMULQDQ hardware acceleration" 775 depends on X86 && 64BIT && CRC_T10DIF 776 select CRYPTO_HASH 777 help 778 For x86_64 processors with SSE4.2 and PCLMULQDQ supported, 779 CRC T10 DIF PCLMULQDQ computation can be hardware 780 accelerated PCLMULQDQ instruction. This option will create 781 'crct10dif-pclmul' module, which is faster when computing the 782 crct10dif checksum as compared with the generic table implementation. 783 784config CRYPTO_CRCT10DIF_VPMSUM 785 tristate "CRC32T10DIF powerpc64 hardware acceleration" 786 depends on PPC64 && ALTIVEC && CRC_T10DIF 787 select CRYPTO_HASH 788 help 789 CRC10T10DIF algorithm implemented using vector polynomial 790 multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on 791 POWER8 and newer processors for improved performance. 792 793config CRYPTO_VPMSUM_TESTER 794 tristate "Powerpc64 vpmsum hardware acceleration tester" 795 depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM 796 help 797 Stress test for CRC32c and CRC-T10DIF algorithms implemented with 798 POWER8 vpmsum instructions. 799 Unless you are testing these algorithms, you don't need this. 800 801config CRYPTO_GHASH 802 tristate "GHASH hash function" 803 select CRYPTO_GF128MUL 804 select CRYPTO_HASH 805 help 806 GHASH is the hash function used in GCM (Galois/Counter Mode). 807 It is not a general-purpose cryptographic hash function. 808 809config CRYPTO_POLYVAL 810 tristate 811 select CRYPTO_GF128MUL 812 select CRYPTO_HASH 813 help 814 POLYVAL is the hash function used in HCTR2. It is not a general-purpose 815 cryptographic hash function. 816 817config CRYPTO_POLYVAL_CLMUL_NI 818 tristate "POLYVAL hash function (CLMUL-NI accelerated)" 819 depends on X86 && 64BIT 820 select CRYPTO_POLYVAL 821 help 822 This is the x86_64 CLMUL-NI accelerated implementation of POLYVAL. It is 823 used to efficiently implement HCTR2 on x86-64 processors that support 824 carry-less multiplication instructions. 825 826config CRYPTO_POLY1305 827 tristate "Poly1305 authenticator algorithm" 828 select CRYPTO_HASH 829 select CRYPTO_LIB_POLY1305_GENERIC 830 help 831 Poly1305 authenticator algorithm, RFC7539. 832 833 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein. 834 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use 835 in IETF protocols. This is the portable C implementation of Poly1305. 836 837config CRYPTO_POLY1305_X86_64 838 tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)" 839 depends on X86 && 64BIT 840 select CRYPTO_LIB_POLY1305_GENERIC 841 select CRYPTO_ARCH_HAVE_LIB_POLY1305 842 help 843 Poly1305 authenticator algorithm, RFC7539. 844 845 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein. 846 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use 847 in IETF protocols. This is the x86_64 assembler implementation using SIMD 848 instructions. 849 850config CRYPTO_POLY1305_MIPS 851 tristate "Poly1305 authenticator algorithm (MIPS optimized)" 852 depends on MIPS 853 select CRYPTO_ARCH_HAVE_LIB_POLY1305 854 855config CRYPTO_MD4 856 tristate "MD4 digest algorithm" 857 select CRYPTO_HASH 858 help 859 MD4 message digest algorithm (RFC1320). 860 861config CRYPTO_MD5 862 tristate "MD5 digest algorithm" 863 select CRYPTO_HASH 864 help 865 MD5 message digest algorithm (RFC1321). 866 867config CRYPTO_MD5_OCTEON 868 tristate "MD5 digest algorithm (OCTEON)" 869 depends on CPU_CAVIUM_OCTEON 870 select CRYPTO_MD5 871 select CRYPTO_HASH 872 help 873 MD5 message digest algorithm (RFC1321) implemented 874 using OCTEON crypto instructions, when available. 875 876config CRYPTO_MD5_PPC 877 tristate "MD5 digest algorithm (PPC)" 878 depends on PPC 879 select CRYPTO_HASH 880 help 881 MD5 message digest algorithm (RFC1321) implemented 882 in PPC assembler. 883 884config CRYPTO_MD5_SPARC64 885 tristate "MD5 digest algorithm (SPARC64)" 886 depends on SPARC64 887 select CRYPTO_MD5 888 select CRYPTO_HASH 889 help 890 MD5 message digest algorithm (RFC1321) implemented 891 using sparc64 crypto instructions, when available. 892 893config CRYPTO_MICHAEL_MIC 894 tristate "Michael MIC keyed digest algorithm" 895 select CRYPTO_HASH 896 help 897 Michael MIC is used for message integrity protection in TKIP 898 (IEEE 802.11i). This algorithm is required for TKIP, but it 899 should not be used for other purposes because of the weakness 900 of the algorithm. 901 902config CRYPTO_RMD160 903 tristate "RIPEMD-160 digest algorithm" 904 select CRYPTO_HASH 905 help 906 RIPEMD-160 (ISO/IEC 10118-3:2004). 907 908 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended 909 to be used as a secure replacement for the 128-bit hash functions 910 MD4, MD5 and it's predecessor RIPEMD 911 (not to be confused with RIPEMD-128). 912 913 It's speed is comparable to SHA1 and there are no known attacks 914 against RIPEMD-160. 915 916 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 917 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html> 918 919config CRYPTO_SHA1 920 tristate "SHA1 digest algorithm" 921 select CRYPTO_HASH 922 help 923 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 924 925config CRYPTO_SHA1_SSSE3 926 tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 927 depends on X86 && 64BIT 928 select CRYPTO_SHA1 929 select CRYPTO_HASH 930 help 931 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 932 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector 933 Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions), 934 when available. 935 936config CRYPTO_SHA256_SSSE3 937 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)" 938 depends on X86 && 64BIT 939 select CRYPTO_SHA256 940 select CRYPTO_HASH 941 help 942 SHA-256 secure hash standard (DFIPS 180-2) implemented 943 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 944 Extensions version 1 (AVX1), or Advanced Vector Extensions 945 version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New 946 Instructions) when available. 947 948config CRYPTO_SHA512_SSSE3 949 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)" 950 depends on X86 && 64BIT 951 select CRYPTO_SHA512 952 select CRYPTO_HASH 953 help 954 SHA-512 secure hash standard (DFIPS 180-2) implemented 955 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector 956 Extensions version 1 (AVX1), or Advanced Vector Extensions 957 version 2 (AVX2) instructions, when available. 958 959config CRYPTO_SHA1_OCTEON 960 tristate "SHA1 digest algorithm (OCTEON)" 961 depends on CPU_CAVIUM_OCTEON 962 select CRYPTO_SHA1 963 select CRYPTO_HASH 964 help 965 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 966 using OCTEON crypto instructions, when available. 967 968config CRYPTO_SHA1_SPARC64 969 tristate "SHA1 digest algorithm (SPARC64)" 970 depends on SPARC64 971 select CRYPTO_SHA1 972 select CRYPTO_HASH 973 help 974 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented 975 using sparc64 crypto instructions, when available. 976 977config CRYPTO_SHA1_PPC 978 tristate "SHA1 digest algorithm (powerpc)" 979 depends on PPC 980 help 981 This is the powerpc hardware accelerated implementation of the 982 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 983 984config CRYPTO_SHA1_PPC_SPE 985 tristate "SHA1 digest algorithm (PPC SPE)" 986 depends on PPC && SPE 987 help 988 SHA-1 secure hash standard (DFIPS 180-4) implemented 989 using powerpc SPE SIMD instruction set. 990 991config CRYPTO_SHA256 992 tristate "SHA224 and SHA256 digest algorithm" 993 select CRYPTO_HASH 994 select CRYPTO_LIB_SHA256 995 help 996 SHA256 secure hash standard (DFIPS 180-2). 997 998 This version of SHA implements a 256 bit hash with 128 bits of 999 security against collision attacks. 1000 1001 This code also includes SHA-224, a 224 bit hash with 112 bits 1002 of security against collision attacks. 1003 1004config CRYPTO_SHA256_PPC_SPE 1005 tristate "SHA224 and SHA256 digest algorithm (PPC SPE)" 1006 depends on PPC && SPE 1007 select CRYPTO_SHA256 1008 select CRYPTO_HASH 1009 help 1010 SHA224 and SHA256 secure hash standard (DFIPS 180-2) 1011 implemented using powerpc SPE SIMD instruction set. 1012 1013config CRYPTO_SHA256_OCTEON 1014 tristate "SHA224 and SHA256 digest algorithm (OCTEON)" 1015 depends on CPU_CAVIUM_OCTEON 1016 select CRYPTO_SHA256 1017 select CRYPTO_HASH 1018 help 1019 SHA-256 secure hash standard (DFIPS 180-2) implemented 1020 using OCTEON crypto instructions, when available. 1021 1022config CRYPTO_SHA256_SPARC64 1023 tristate "SHA224 and SHA256 digest algorithm (SPARC64)" 1024 depends on SPARC64 1025 select CRYPTO_SHA256 1026 select CRYPTO_HASH 1027 help 1028 SHA-256 secure hash standard (DFIPS 180-2) implemented 1029 using sparc64 crypto instructions, when available. 1030 1031config CRYPTO_SHA512 1032 tristate "SHA384 and SHA512 digest algorithms" 1033 select CRYPTO_HASH 1034 help 1035 SHA512 secure hash standard (DFIPS 180-2). 1036 1037 This version of SHA implements a 512 bit hash with 256 bits of 1038 security against collision attacks. 1039 1040 This code also includes SHA-384, a 384 bit hash with 192 bits 1041 of security against collision attacks. 1042 1043config CRYPTO_SHA512_OCTEON 1044 tristate "SHA384 and SHA512 digest algorithms (OCTEON)" 1045 depends on CPU_CAVIUM_OCTEON 1046 select CRYPTO_SHA512 1047 select CRYPTO_HASH 1048 help 1049 SHA-512 secure hash standard (DFIPS 180-2) implemented 1050 using OCTEON crypto instructions, when available. 1051 1052config CRYPTO_SHA512_SPARC64 1053 tristate "SHA384 and SHA512 digest algorithm (SPARC64)" 1054 depends on SPARC64 1055 select CRYPTO_SHA512 1056 select CRYPTO_HASH 1057 help 1058 SHA-512 secure hash standard (DFIPS 180-2) implemented 1059 using sparc64 crypto instructions, when available. 1060 1061config CRYPTO_SHA3 1062 tristate "SHA3 digest algorithm" 1063 select CRYPTO_HASH 1064 help 1065 SHA-3 secure hash standard (DFIPS 202). It's based on 1066 cryptographic sponge function family called Keccak. 1067 1068 References: 1069 http://keccak.noekeon.org/ 1070 1071config CRYPTO_SM3 1072 tristate "SM3 digest algorithm" 1073 select CRYPTO_HASH 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. 1077 1078 References: 1079 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf 1080 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash 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_SERPENT 1534 tristate "Serpent cipher algorithm" 1535 select CRYPTO_ALGAPI 1536 help 1537 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1538 1539 Keys are allowed to be from 0 to 256 bits in length, in steps 1540 of 8 bits. 1541 1542 See also: 1543 <https://www.cl.cam.ac.uk/~rja14/serpent.html> 1544 1545config CRYPTO_SERPENT_SSE2_X86_64 1546 tristate "Serpent cipher algorithm (x86_64/SSE2)" 1547 depends on X86 && 64BIT 1548 select CRYPTO_SKCIPHER 1549 select CRYPTO_SERPENT 1550 select CRYPTO_SIMD 1551 imply CRYPTO_CTR 1552 help 1553 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1554 1555 Keys are allowed to be from 0 to 256 bits in length, in steps 1556 of 8 bits. 1557 1558 This module provides Serpent cipher algorithm that processes eight 1559 blocks parallel using SSE2 instruction set. 1560 1561 See also: 1562 <https://www.cl.cam.ac.uk/~rja14/serpent.html> 1563 1564config CRYPTO_SERPENT_SSE2_586 1565 tristate "Serpent cipher algorithm (i586/SSE2)" 1566 depends on X86 && !64BIT 1567 select CRYPTO_SKCIPHER 1568 select CRYPTO_SERPENT 1569 select CRYPTO_SIMD 1570 imply CRYPTO_CTR 1571 help 1572 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1573 1574 Keys are allowed to be from 0 to 256 bits in length, in steps 1575 of 8 bits. 1576 1577 This module provides Serpent cipher algorithm that processes four 1578 blocks parallel using SSE2 instruction set. 1579 1580 See also: 1581 <https://www.cl.cam.ac.uk/~rja14/serpent.html> 1582 1583config CRYPTO_SERPENT_AVX_X86_64 1584 tristate "Serpent cipher algorithm (x86_64/AVX)" 1585 depends on X86 && 64BIT 1586 select CRYPTO_SKCIPHER 1587 select CRYPTO_SERPENT 1588 select CRYPTO_SIMD 1589 imply CRYPTO_XTS 1590 imply CRYPTO_CTR 1591 help 1592 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1593 1594 Keys are allowed to be from 0 to 256 bits in length, in steps 1595 of 8 bits. 1596 1597 This module provides the Serpent cipher algorithm that processes 1598 eight blocks parallel using the AVX instruction set. 1599 1600 See also: 1601 <https://www.cl.cam.ac.uk/~rja14/serpent.html> 1602 1603config CRYPTO_SERPENT_AVX2_X86_64 1604 tristate "Serpent cipher algorithm (x86_64/AVX2)" 1605 depends on X86 && 64BIT 1606 select CRYPTO_SERPENT_AVX_X86_64 1607 help 1608 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 1609 1610 Keys are allowed to be from 0 to 256 bits in length, in steps 1611 of 8 bits. 1612 1613 This module provides Serpent cipher algorithm that processes 16 1614 blocks parallel using AVX2 instruction set. 1615 1616 See also: 1617 <https://www.cl.cam.ac.uk/~rja14/serpent.html> 1618 1619config CRYPTO_SM4 1620 tristate "SM4 cipher algorithm" 1621 select CRYPTO_ALGAPI 1622 select CRYPTO_LIB_SM4 1623 help 1624 SM4 cipher algorithms (OSCCA GB/T 32907-2016). 1625 1626 SM4 (GBT.32907-2016) is a cryptographic standard issued by the 1627 Organization of State Commercial Administration of China (OSCCA) 1628 as an authorized cryptographic algorithms for the use within China. 1629 1630 SMS4 was originally created for use in protecting wireless 1631 networks, and is mandated in the Chinese National Standard for 1632 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure) 1633 (GB.15629.11-2003). 1634 1635 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and 1636 standardized through TC 260 of the Standardization Administration 1637 of the People's Republic of China (SAC). 1638 1639 The input, output, and key of SMS4 are each 128 bits. 1640 1641 See also: <https://eprint.iacr.org/2008/329.pdf> 1642 1643 If unsure, say N. 1644 1645config CRYPTO_SM4_AESNI_AVX_X86_64 1646 tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)" 1647 depends on X86 && 64BIT 1648 select CRYPTO_SKCIPHER 1649 select CRYPTO_SIMD 1650 select CRYPTO_ALGAPI 1651 select CRYPTO_LIB_SM4 1652 help 1653 SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX). 1654 1655 SM4 (GBT.32907-2016) is a cryptographic standard issued by the 1656 Organization of State Commercial Administration of China (OSCCA) 1657 as an authorized cryptographic algorithms for the use within China. 1658 1659 This is SM4 optimized implementation using AES-NI/AVX/x86_64 1660 instruction set for block cipher. Through two affine transforms, 1661 we can use the AES S-Box to simulate the SM4 S-Box to achieve the 1662 effect of instruction acceleration. 1663 1664 If unsure, say N. 1665 1666config CRYPTO_SM4_AESNI_AVX2_X86_64 1667 tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)" 1668 depends on X86 && 64BIT 1669 select CRYPTO_SKCIPHER 1670 select CRYPTO_SIMD 1671 select CRYPTO_ALGAPI 1672 select CRYPTO_LIB_SM4 1673 select CRYPTO_SM4_AESNI_AVX_X86_64 1674 help 1675 SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2). 1676 1677 SM4 (GBT.32907-2016) is a cryptographic standard issued by the 1678 Organization of State Commercial Administration of China (OSCCA) 1679 as an authorized cryptographic algorithms for the use within China. 1680 1681 This is SM4 optimized implementation using AES-NI/AVX2/x86_64 1682 instruction set for block cipher. Through two affine transforms, 1683 we can use the AES S-Box to simulate the SM4 S-Box to achieve the 1684 effect of instruction acceleration. 1685 1686 If unsure, say N. 1687 1688config CRYPTO_TEA 1689 tristate "TEA, XTEA and XETA cipher algorithms" 1690 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 1691 select CRYPTO_ALGAPI 1692 help 1693 TEA cipher algorithm. 1694 1695 Tiny Encryption Algorithm is a simple cipher that uses 1696 many rounds for security. It is very fast and uses 1697 little memory. 1698 1699 Xtendend Tiny Encryption Algorithm is a modification to 1700 the TEA algorithm to address a potential key weakness 1701 in the TEA algorithm. 1702 1703 Xtendend Encryption Tiny Algorithm is a mis-implementation 1704 of the XTEA algorithm for compatibility purposes. 1705 1706config CRYPTO_TWOFISH 1707 tristate "Twofish cipher algorithm" 1708 select CRYPTO_ALGAPI 1709 select CRYPTO_TWOFISH_COMMON 1710 help 1711 Twofish cipher algorithm. 1712 1713 Twofish was submitted as an AES (Advanced Encryption Standard) 1714 candidate cipher by researchers at CounterPane Systems. It is a 1715 16 round block cipher supporting key sizes of 128, 192, and 256 1716 bits. 1717 1718 See also: 1719 <https://www.schneier.com/twofish.html> 1720 1721config CRYPTO_TWOFISH_COMMON 1722 tristate 1723 help 1724 Common parts of the Twofish cipher algorithm shared by the 1725 generic c and the assembler implementations. 1726 1727config CRYPTO_TWOFISH_586 1728 tristate "Twofish cipher algorithms (i586)" 1729 depends on (X86 || UML_X86) && !64BIT 1730 select CRYPTO_ALGAPI 1731 select CRYPTO_TWOFISH_COMMON 1732 imply CRYPTO_CTR 1733 help 1734 Twofish cipher algorithm. 1735 1736 Twofish was submitted as an AES (Advanced Encryption Standard) 1737 candidate cipher by researchers at CounterPane Systems. It is a 1738 16 round block cipher supporting key sizes of 128, 192, and 256 1739 bits. 1740 1741 See also: 1742 <https://www.schneier.com/twofish.html> 1743 1744config CRYPTO_TWOFISH_X86_64 1745 tristate "Twofish cipher algorithm (x86_64)" 1746 depends on (X86 || UML_X86) && 64BIT 1747 select CRYPTO_ALGAPI 1748 select CRYPTO_TWOFISH_COMMON 1749 imply CRYPTO_CTR 1750 help 1751 Twofish cipher algorithm (x86_64). 1752 1753 Twofish was submitted as an AES (Advanced Encryption Standard) 1754 candidate cipher by researchers at CounterPane Systems. It is a 1755 16 round block cipher supporting key sizes of 128, 192, and 256 1756 bits. 1757 1758 See also: 1759 <https://www.schneier.com/twofish.html> 1760 1761config CRYPTO_TWOFISH_X86_64_3WAY 1762 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)" 1763 depends on X86 && 64BIT 1764 select CRYPTO_SKCIPHER 1765 select CRYPTO_TWOFISH_COMMON 1766 select CRYPTO_TWOFISH_X86_64 1767 help 1768 Twofish cipher algorithm (x86_64, 3-way parallel). 1769 1770 Twofish was submitted as an AES (Advanced Encryption Standard) 1771 candidate cipher by researchers at CounterPane Systems. It is a 1772 16 round block cipher supporting key sizes of 128, 192, and 256 1773 bits. 1774 1775 This module provides Twofish cipher algorithm that processes three 1776 blocks parallel, utilizing resources of out-of-order CPUs better. 1777 1778 See also: 1779 <https://www.schneier.com/twofish.html> 1780 1781config CRYPTO_TWOFISH_AVX_X86_64 1782 tristate "Twofish cipher algorithm (x86_64/AVX)" 1783 depends on X86 && 64BIT 1784 select CRYPTO_SKCIPHER 1785 select CRYPTO_SIMD 1786 select CRYPTO_TWOFISH_COMMON 1787 select CRYPTO_TWOFISH_X86_64 1788 select CRYPTO_TWOFISH_X86_64_3WAY 1789 imply CRYPTO_XTS 1790 help 1791 Twofish cipher algorithm (x86_64/AVX). 1792 1793 Twofish was submitted as an AES (Advanced Encryption Standard) 1794 candidate cipher by researchers at CounterPane Systems. It is a 1795 16 round block cipher supporting key sizes of 128, 192, and 256 1796 bits. 1797 1798 This module provides the Twofish cipher algorithm that processes 1799 eight blocks parallel using the AVX Instruction Set. 1800 1801 See also: 1802 <https://www.schneier.com/twofish.html> 1803 1804comment "Compression" 1805 1806config CRYPTO_DEFLATE 1807 tristate "Deflate compression algorithm" 1808 select CRYPTO_ALGAPI 1809 select CRYPTO_ACOMP2 1810 select ZLIB_INFLATE 1811 select ZLIB_DEFLATE 1812 help 1813 This is the Deflate algorithm (RFC1951), specified for use in 1814 IPSec with the IPCOMP protocol (RFC3173, RFC2394). 1815 1816 You will most probably want this if using IPSec. 1817 1818config CRYPTO_LZO 1819 tristate "LZO compression algorithm" 1820 select CRYPTO_ALGAPI 1821 select CRYPTO_ACOMP2 1822 select LZO_COMPRESS 1823 select LZO_DECOMPRESS 1824 help 1825 This is the LZO algorithm. 1826 1827config CRYPTO_842 1828 tristate "842 compression algorithm" 1829 select CRYPTO_ALGAPI 1830 select CRYPTO_ACOMP2 1831 select 842_COMPRESS 1832 select 842_DECOMPRESS 1833 help 1834 This is the 842 algorithm. 1835 1836config CRYPTO_LZ4 1837 tristate "LZ4 compression algorithm" 1838 select CRYPTO_ALGAPI 1839 select CRYPTO_ACOMP2 1840 select LZ4_COMPRESS 1841 select LZ4_DECOMPRESS 1842 help 1843 This is the LZ4 algorithm. 1844 1845config CRYPTO_LZ4HC 1846 tristate "LZ4HC compression algorithm" 1847 select CRYPTO_ALGAPI 1848 select CRYPTO_ACOMP2 1849 select LZ4HC_COMPRESS 1850 select LZ4_DECOMPRESS 1851 help 1852 This is the LZ4 high compression mode algorithm. 1853 1854config CRYPTO_ZSTD 1855 tristate "Zstd compression algorithm" 1856 select CRYPTO_ALGAPI 1857 select CRYPTO_ACOMP2 1858 select ZSTD_COMPRESS 1859 select ZSTD_DECOMPRESS 1860 help 1861 This is the zstd algorithm. 1862 1863comment "Random Number Generation" 1864 1865config CRYPTO_ANSI_CPRNG 1866 tristate "Pseudo Random Number Generation for Cryptographic modules" 1867 select CRYPTO_AES 1868 select CRYPTO_RNG 1869 help 1870 This option enables the generic pseudo random number generator 1871 for cryptographic modules. Uses the Algorithm specified in 1872 ANSI X9.31 A.2.4. Note that this option must be enabled if 1873 CRYPTO_FIPS is selected 1874 1875menuconfig CRYPTO_DRBG_MENU 1876 tristate "NIST SP800-90A DRBG" 1877 help 1878 NIST SP800-90A compliant DRBG. In the following submenu, one or 1879 more of the DRBG types must be selected. 1880 1881if CRYPTO_DRBG_MENU 1882 1883config CRYPTO_DRBG_HMAC 1884 bool 1885 default y 1886 select CRYPTO_HMAC 1887 select CRYPTO_SHA512 1888 1889config CRYPTO_DRBG_HASH 1890 bool "Enable Hash DRBG" 1891 select CRYPTO_SHA256 1892 help 1893 Enable the Hash DRBG variant as defined in NIST SP800-90A. 1894 1895config CRYPTO_DRBG_CTR 1896 bool "Enable CTR DRBG" 1897 select CRYPTO_AES 1898 select CRYPTO_CTR 1899 help 1900 Enable the CTR DRBG variant as defined in NIST SP800-90A. 1901 1902config CRYPTO_DRBG 1903 tristate 1904 default CRYPTO_DRBG_MENU 1905 select CRYPTO_RNG 1906 select CRYPTO_JITTERENTROPY 1907 1908endif # if CRYPTO_DRBG_MENU 1909 1910config CRYPTO_JITTERENTROPY 1911 tristate "Jitterentropy Non-Deterministic Random Number Generator" 1912 select CRYPTO_RNG 1913 help 1914 The Jitterentropy RNG is a noise that is intended 1915 to provide seed to another RNG. The RNG does not 1916 perform any cryptographic whitening of the generated 1917 random numbers. This Jitterentropy RNG registers with 1918 the kernel crypto API and can be used by any caller. 1919 1920config CRYPTO_USER_API 1921 tristate 1922 1923config CRYPTO_USER_API_HASH 1924 tristate "User-space interface for hash algorithms" 1925 depends on NET 1926 select CRYPTO_HASH 1927 select CRYPTO_USER_API 1928 help 1929 This option enables the user-spaces interface for hash 1930 algorithms. 1931 1932config CRYPTO_USER_API_SKCIPHER 1933 tristate "User-space interface for symmetric key cipher algorithms" 1934 depends on NET 1935 select CRYPTO_SKCIPHER 1936 select CRYPTO_USER_API 1937 help 1938 This option enables the user-spaces interface for symmetric 1939 key cipher algorithms. 1940 1941config CRYPTO_USER_API_RNG 1942 tristate "User-space interface for random number generator algorithms" 1943 depends on NET 1944 select CRYPTO_RNG 1945 select CRYPTO_USER_API 1946 help 1947 This option enables the user-spaces interface for random 1948 number generator algorithms. 1949 1950config CRYPTO_USER_API_RNG_CAVP 1951 bool "Enable CAVP testing of DRBG" 1952 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG 1953 help 1954 This option enables extra API for CAVP testing via the user-space 1955 interface: resetting of DRBG entropy, and providing Additional Data. 1956 This should only be enabled for CAVP testing. You should say 1957 no unless you know what this is. 1958 1959config CRYPTO_USER_API_AEAD 1960 tristate "User-space interface for AEAD cipher algorithms" 1961 depends on NET 1962 select CRYPTO_AEAD 1963 select CRYPTO_SKCIPHER 1964 select CRYPTO_NULL 1965 select CRYPTO_USER_API 1966 help 1967 This option enables the user-spaces interface for AEAD 1968 cipher algorithms. 1969 1970config CRYPTO_USER_API_ENABLE_OBSOLETE 1971 bool "Enable obsolete cryptographic algorithms for userspace" 1972 depends on CRYPTO_USER_API 1973 default y 1974 help 1975 Allow obsolete cryptographic algorithms to be selected that have 1976 already been phased out from internal use by the kernel, and are 1977 only useful for userspace clients that still rely on them. 1978 1979config CRYPTO_STATS 1980 bool "Crypto usage statistics for User-space" 1981 depends on CRYPTO_USER 1982 help 1983 This option enables the gathering of crypto stats. 1984 This will collect: 1985 - encrypt/decrypt size and numbers of symmeric operations 1986 - compress/decompress size and numbers of compress operations 1987 - size and numbers of hash operations 1988 - encrypt/decrypt/sign/verify numbers for asymmetric operations 1989 - generate/seed numbers for rng operations 1990 1991config CRYPTO_HASH_INFO 1992 bool 1993 1994source "drivers/crypto/Kconfig" 1995source "crypto/asymmetric_keys/Kconfig" 1996source "certs/Kconfig" 1997 1998endif # if CRYPTO 1999