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 CRYPTO_LIB_UTILS 19 help 20 This option provides the core Cryptographic API. 21 22if CRYPTO 23 24menu "Crypto core or helper" 25 26config CRYPTO_FIPS 27 bool "FIPS 200 compliance" 28 depends on CRYPTO_DRBG && CRYPTO_SELFTESTS 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 75config CRYPTO_SIG 76 tristate 77 select CRYPTO_SIG2 78 select CRYPTO_ALGAPI 79 80config CRYPTO_SIG2 81 tristate 82 select CRYPTO_ALGAPI2 83 84config CRYPTO_SKCIPHER 85 tristate 86 select CRYPTO_SKCIPHER2 87 select CRYPTO_ALGAPI 88 select CRYPTO_ECB 89 90config CRYPTO_SKCIPHER2 91 tristate 92 select CRYPTO_ALGAPI2 93 94config CRYPTO_HASH 95 tristate 96 select CRYPTO_HASH2 97 select CRYPTO_ALGAPI 98 99config CRYPTO_HASH2 100 tristate 101 select CRYPTO_ALGAPI2 102 103config CRYPTO_RNG 104 tristate 105 select CRYPTO_RNG2 106 select CRYPTO_ALGAPI 107 108config CRYPTO_RNG2 109 tristate 110 select CRYPTO_ALGAPI2 111 112config CRYPTO_RNG_DEFAULT 113 tristate 114 select CRYPTO_DRBG_MENU 115 116config CRYPTO_AKCIPHER2 117 tristate 118 select CRYPTO_ALGAPI2 119 120config CRYPTO_AKCIPHER 121 tristate 122 select CRYPTO_AKCIPHER2 123 select CRYPTO_ALGAPI 124 125config CRYPTO_KPP2 126 tristate 127 select CRYPTO_ALGAPI2 128 129config CRYPTO_KPP 130 tristate 131 select CRYPTO_ALGAPI 132 select CRYPTO_KPP2 133 134config CRYPTO_ACOMP2 135 tristate 136 select CRYPTO_ALGAPI2 137 select SGL_ALLOC 138 139config CRYPTO_ACOMP 140 tristate 141 select CRYPTO_ALGAPI 142 select CRYPTO_ACOMP2 143 144config CRYPTO_HKDF 145 tristate 146 select CRYPTO_SHA256 if CRYPTO_SELFTESTS 147 select CRYPTO_SHA512 if CRYPTO_SELFTESTS 148 select CRYPTO_HASH2 149 150config CRYPTO_MANAGER 151 tristate 152 default CRYPTO_ALGAPI if CRYPTO_SELFTESTS 153 select CRYPTO_MANAGER2 154 help 155 This provides the support for instantiating templates such as 156 cbc(aes), and the support for the crypto self-tests. 157 158config CRYPTO_MANAGER2 159 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y) 160 select CRYPTO_ACOMP2 161 select CRYPTO_AEAD2 162 select CRYPTO_AKCIPHER2 163 select CRYPTO_SIG2 164 select CRYPTO_HASH2 165 select CRYPTO_KPP2 166 select CRYPTO_RNG2 167 select CRYPTO_SKCIPHER2 168 169config CRYPTO_USER 170 tristate "Userspace cryptographic algorithm configuration" 171 depends on NET 172 select CRYPTO_MANAGER 173 help 174 Userspace configuration for cryptographic instantiations such as 175 cbc(aes). 176 177config CRYPTO_SELFTESTS 178 bool "Enable cryptographic self-tests" 179 depends on EXPERT 180 help 181 Enable the cryptographic self-tests. 182 183 The cryptographic self-tests run at boot time, or at algorithm 184 registration time if algorithms are dynamically loaded later. 185 186 There are two main use cases for these tests: 187 188 - Development and pre-release testing. In this case, also enable 189 CRYPTO_SELFTESTS_FULL to get the full set of tests. All crypto code 190 in the kernel is expected to pass the full set of tests. 191 192 - Production kernels, to help prevent buggy drivers from being used 193 and/or meet FIPS 140-3 pre-operational testing requirements. In 194 this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL. 195 196config CRYPTO_SELFTESTS_FULL 197 bool "Enable the full set of cryptographic self-tests" 198 depends on CRYPTO_SELFTESTS 199 help 200 Enable the full set of cryptographic self-tests for each algorithm. 201 202 The full set of tests should be enabled for development and 203 pre-release testing, but not in production kernels. 204 205 All crypto code in the kernel is expected to pass the full tests. 206 207config CRYPTO_NULL 208 tristate "Null algorithms" 209 select CRYPTO_ALGAPI 210 select CRYPTO_SKCIPHER 211 select CRYPTO_HASH 212 help 213 These are 'Null' algorithms, used by IPsec, which do nothing. 214 215config CRYPTO_PCRYPT 216 tristate "Parallel crypto engine" 217 depends on SMP 218 select PADATA 219 select CRYPTO_MANAGER 220 select CRYPTO_AEAD 221 help 222 This converts an arbitrary crypto algorithm into a parallel 223 algorithm that executes in kernel threads. 224 225config CRYPTO_CRYPTD 226 tristate "Software async crypto daemon" 227 select CRYPTO_SKCIPHER 228 select CRYPTO_HASH 229 select CRYPTO_MANAGER 230 help 231 This is a generic software asynchronous crypto daemon that 232 converts an arbitrary synchronous software crypto algorithm 233 into an asynchronous algorithm that executes in a kernel thread. 234 235config CRYPTO_AUTHENC 236 tristate "Authenc support" 237 select CRYPTO_AEAD 238 select CRYPTO_SKCIPHER 239 select CRYPTO_MANAGER 240 select CRYPTO_HASH 241 help 242 Authenc: Combined mode wrapper for IPsec. 243 244 This is required for IPSec ESP (XFRM_ESP). 245 246config CRYPTO_KRB5ENC 247 tristate "Kerberos 5 combined hash+cipher support" 248 select CRYPTO_AEAD 249 select CRYPTO_SKCIPHER 250 select CRYPTO_MANAGER 251 select CRYPTO_HASH 252 help 253 Combined hash and cipher support for Kerberos 5 RFC3961 simplified 254 profile. This is required for Kerberos 5-style encryption, used by 255 sunrpc/NFS and rxrpc/AFS. 256 257config CRYPTO_BENCHMARK 258 tristate "Crypto benchmarking module" 259 depends on m || EXPERT 260 select CRYPTO_MANAGER 261 help 262 Quick & dirty crypto benchmarking module. 263 264 This is mainly intended for use by people developing cryptographic 265 algorithms in the kernel. It should not be enabled in production 266 kernels. 267 268config CRYPTO_SIMD 269 tristate 270 select CRYPTO_CRYPTD 271 272config CRYPTO_ENGINE 273 tristate 274 275endmenu 276 277menu "Public-key cryptography" 278 279config CRYPTO_RSA 280 tristate "RSA (Rivest-Shamir-Adleman)" 281 select CRYPTO_AKCIPHER 282 select CRYPTO_MANAGER 283 select CRYPTO_SIG 284 select MPILIB 285 select ASN1 286 help 287 RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017) 288 289config CRYPTO_DH 290 tristate "DH (Diffie-Hellman)" 291 select CRYPTO_KPP 292 select MPILIB 293 help 294 DH (Diffie-Hellman) key exchange algorithm 295 296config CRYPTO_DH_RFC7919_GROUPS 297 bool "RFC 7919 FFDHE groups" 298 depends on CRYPTO_DH 299 select CRYPTO_RNG_DEFAULT 300 help 301 FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups 302 defined in RFC7919. 303 304 Support these finite-field groups in DH key exchanges: 305 - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192 306 307 If unsure, say N. 308 309config CRYPTO_ECC 310 tristate 311 select CRYPTO_RNG_DEFAULT 312 313config CRYPTO_ECDH 314 tristate "ECDH (Elliptic Curve Diffie-Hellman)" 315 select CRYPTO_ECC 316 select CRYPTO_KPP 317 help 318 ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm 319 using curves P-192, P-256, and P-384 (FIPS 186) 320 321config CRYPTO_ECDSA 322 tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)" 323 select CRYPTO_ECC 324 select CRYPTO_SIG 325 select ASN1 326 help 327 ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186, 328 ISO/IEC 14888-3) 329 using curves P-192, P-256, P-384 and P-521 330 331 Only signature verification is implemented. 332 333config CRYPTO_ECRDSA 334 tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)" 335 select CRYPTO_ECC 336 select CRYPTO_SIG 337 select CRYPTO_STREEBOG 338 select OID_REGISTRY 339 select ASN1 340 help 341 Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012, 342 RFC 7091, ISO/IEC 14888-3) 343 344 One of the Russian cryptographic standard algorithms (called GOST 345 algorithms). Only signature verification is implemented. 346 347config CRYPTO_MLDSA 348 tristate "ML-DSA (Module-Lattice-Based Digital Signature Algorithm)" 349 select CRYPTO_SIG 350 select CRYPTO_LIB_MLDSA 351 help 352 ML-DSA (Module-Lattice-Based Digital Signature Algorithm) (FIPS-204). 353 354 Only signature verification is implemented. 355 356endmenu 357 358menu "Block ciphers" 359 360config CRYPTO_AES 361 tristate "AES (Advanced Encryption Standard)" 362 select CRYPTO_ALGAPI 363 select CRYPTO_LIB_AES 364 help 365 AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3) 366 367 Rijndael appears to be consistently a very good performer in 368 both hardware and software across a wide range of computing 369 environments regardless of its use in feedback or non-feedback 370 modes. Its key setup time is excellent, and its key agility is 371 good. Rijndael's very low memory requirements make it very well 372 suited for restricted-space environments, in which it also 373 demonstrates excellent performance. Rijndael's operations are 374 among the easiest to defend against power and timing attacks. 375 376 The AES specifies three key sizes: 128, 192 and 256 bits 377 378config CRYPTO_AES_TI 379 tristate "AES (Advanced Encryption Standard) (fixed time)" 380 select CRYPTO_ALGAPI 381 select CRYPTO_LIB_AES 382 help 383 AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3) 384 385 This is a generic implementation of AES that attempts to eliminate 386 data dependent latencies as much as possible without affecting 387 performance too much. It is intended for use by the generic CCM 388 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely 389 solely on encryption (although decryption is supported as well, but 390 with a more dramatic performance hit) 391 392 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and 393 8 for decryption), this implementation only uses just two S-boxes of 394 256 bytes each, and attempts to eliminate data dependent latencies by 395 prefetching the entire table into the cache at the start of each 396 block. Interrupts are also disabled to avoid races where cachelines 397 are evicted when the CPU is interrupted to do something else. 398 399config CRYPTO_ANUBIS 400 tristate "Anubis" 401 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 402 select CRYPTO_ALGAPI 403 help 404 Anubis cipher algorithm 405 406 Anubis is a variable key length cipher which can use keys from 407 128 bits to 320 bits in length. It was evaluated as a entrant 408 in the NESSIE competition. 409 410 See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html 411 for further information. 412 413config CRYPTO_ARIA 414 tristate "ARIA" 415 select CRYPTO_ALGAPI 416 help 417 ARIA cipher algorithm (RFC5794) 418 419 ARIA is a standard encryption algorithm of the Republic of Korea. 420 The ARIA specifies three key sizes and rounds. 421 128-bit: 12 rounds. 422 192-bit: 14 rounds. 423 256-bit: 16 rounds. 424 425 See: 426 https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do 427 428config CRYPTO_BLOWFISH 429 tristate "Blowfish" 430 select CRYPTO_ALGAPI 431 select CRYPTO_BLOWFISH_COMMON 432 help 433 Blowfish cipher algorithm, by Bruce Schneier 434 435 This is a variable key length cipher which can use keys from 32 436 bits to 448 bits in length. It's fast, simple and specifically 437 designed for use on "large microprocessors". 438 439 See https://www.schneier.com/blowfish.html for further information. 440 441config CRYPTO_BLOWFISH_COMMON 442 tristate 443 help 444 Common parts of the Blowfish cipher algorithm shared by the 445 generic c and the assembler implementations. 446 447config CRYPTO_CAMELLIA 448 tristate "Camellia" 449 select CRYPTO_ALGAPI 450 help 451 Camellia cipher algorithms (ISO/IEC 18033-3) 452 453 Camellia is a symmetric key block cipher developed jointly 454 at NTT and Mitsubishi Electric Corporation. 455 456 The Camellia specifies three key sizes: 128, 192 and 256 bits. 457 458 See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information. 459 460config CRYPTO_CAST_COMMON 461 tristate 462 help 463 Common parts of the CAST cipher algorithms shared by the 464 generic c and the assembler implementations. 465 466config CRYPTO_CAST5 467 tristate "CAST5 (CAST-128)" 468 select CRYPTO_ALGAPI 469 select CRYPTO_CAST_COMMON 470 help 471 CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3) 472 473config CRYPTO_CAST6 474 tristate "CAST6 (CAST-256)" 475 select CRYPTO_ALGAPI 476 select CRYPTO_CAST_COMMON 477 help 478 CAST6 (CAST-256) encryption algorithm (RFC2612) 479 480config CRYPTO_DES 481 tristate "DES and Triple DES EDE" 482 select CRYPTO_ALGAPI 483 select CRYPTO_LIB_DES 484 help 485 DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and 486 Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3) 487 cipher algorithms 488 489config CRYPTO_FCRYPT 490 tristate "FCrypt" 491 select CRYPTO_ALGAPI 492 select CRYPTO_SKCIPHER 493 help 494 FCrypt algorithm used by RxRPC 495 496 See https://ota.polyonymo.us/fcrypt-paper.txt 497 498config CRYPTO_KHAZAD 499 tristate "Khazad" 500 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 501 select CRYPTO_ALGAPI 502 help 503 Khazad cipher algorithm 504 505 Khazad was a finalist in the initial NESSIE competition. It is 506 an algorithm optimized for 64-bit processors with good performance 507 on 32-bit processors. Khazad uses an 128 bit key size. 508 509 See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html 510 for further information. 511 512config CRYPTO_SEED 513 tristate "SEED" 514 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 515 select CRYPTO_ALGAPI 516 help 517 SEED cipher algorithm (RFC4269, ISO/IEC 18033-3) 518 519 SEED is a 128-bit symmetric key block cipher that has been 520 developed by KISA (Korea Information Security Agency) as a 521 national standard encryption algorithm of the Republic of Korea. 522 It is a 16 round block cipher with the key size of 128 bit. 523 524 See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do 525 for further information. 526 527config CRYPTO_SERPENT 528 tristate "Serpent" 529 select CRYPTO_ALGAPI 530 help 531 Serpent cipher algorithm, by Anderson, Biham & Knudsen 532 533 Keys are allowed to be from 0 to 256 bits in length, in steps 534 of 8 bits. 535 536 See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information. 537 538config CRYPTO_SM4 539 tristate 540 541config CRYPTO_SM4_GENERIC 542 tristate "SM4 (ShangMi 4)" 543 select CRYPTO_ALGAPI 544 select CRYPTO_SM4 545 help 546 SM4 cipher algorithms (OSCCA GB/T 32907-2016, 547 ISO/IEC 18033-3:2010/Amd 1:2021) 548 549 SM4 (GBT.32907-2016) is a cryptographic standard issued by the 550 Organization of State Commercial Administration of China (OSCCA) 551 as an authorized cryptographic algorithms for the use within China. 552 553 SMS4 was originally created for use in protecting wireless 554 networks, and is mandated in the Chinese National Standard for 555 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure) 556 (GB.15629.11-2003). 557 558 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and 559 standardized through TC 260 of the Standardization Administration 560 of the People's Republic of China (SAC). 561 562 The input, output, and key of SMS4 are each 128 bits. 563 564 See https://eprint.iacr.org/2008/329.pdf for further information. 565 566 If unsure, say N. 567 568config CRYPTO_TEA 569 tristate "TEA, XTEA and XETA" 570 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 571 select CRYPTO_ALGAPI 572 help 573 TEA (Tiny Encryption Algorithm) cipher algorithms 574 575 Tiny Encryption Algorithm is a simple cipher that uses 576 many rounds for security. It is very fast and uses 577 little memory. 578 579 Xtendend Tiny Encryption Algorithm is a modification to 580 the TEA algorithm to address a potential key weakness 581 in the TEA algorithm. 582 583 Xtendend Encryption Tiny Algorithm is a mis-implementation 584 of the XTEA algorithm for compatibility purposes. 585 586config CRYPTO_TWOFISH 587 tristate "Twofish" 588 select CRYPTO_ALGAPI 589 select CRYPTO_TWOFISH_COMMON 590 help 591 Twofish cipher algorithm 592 593 Twofish was submitted as an AES (Advanced Encryption Standard) 594 candidate cipher by researchers at CounterPane Systems. It is a 595 16 round block cipher supporting key sizes of 128, 192, and 256 596 bits. 597 598 See https://www.schneier.com/twofish.html for further information. 599 600config CRYPTO_TWOFISH_COMMON 601 tristate 602 help 603 Common parts of the Twofish cipher algorithm shared by the 604 generic c and the assembler implementations. 605 606endmenu 607 608menu "Length-preserving ciphers and modes" 609 610config CRYPTO_ADIANTUM 611 tristate "Adiantum" 612 select CRYPTO_CHACHA20 613 select CRYPTO_LIB_NH 614 select CRYPTO_LIB_POLY1305 615 select CRYPTO_LIB_POLY1305_GENERIC 616 select CRYPTO_MANAGER 617 help 618 Adiantum tweakable, length-preserving encryption mode 619 620 Designed for fast and secure disk encryption, especially on 621 CPUs without dedicated crypto instructions. It encrypts 622 each sector using the XChaCha12 stream cipher, two passes of 623 an ε-almost-∆-universal hash function, and an invocation of 624 the AES-256 block cipher on a single 16-byte block. On CPUs 625 without AES instructions, Adiantum is much faster than 626 AES-XTS. 627 628 Adiantum's security is provably reducible to that of its 629 underlying stream and block ciphers, subject to a security 630 bound. Unlike XTS, Adiantum is a true wide-block encryption 631 mode, so it actually provides an even stronger notion of 632 security than XTS, subject to the security bound. 633 634 If unsure, say N. 635 636config CRYPTO_ARC4 637 tristate "ARC4 (Alleged Rivest Cipher 4)" 638 depends on CRYPTO_USER_API_ENABLE_OBSOLETE 639 select CRYPTO_SKCIPHER 640 select CRYPTO_LIB_ARC4 641 help 642 ARC4 cipher algorithm 643 644 ARC4 is a stream cipher using keys ranging from 8 bits to 2048 645 bits in length. This algorithm is required for driver-based 646 WEP, but it should not be for other purposes because of the 647 weakness of the algorithm. 648 649config CRYPTO_CHACHA20 650 tristate "ChaCha" 651 select CRYPTO_LIB_CHACHA 652 select CRYPTO_SKCIPHER 653 help 654 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms 655 656 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J. 657 Bernstein and further specified in RFC7539 for use in IETF protocols. 658 This is the portable C implementation of ChaCha20. See 659 https://cr.yp.to/chacha/chacha-20080128.pdf for further information. 660 661 XChaCha20 is the application of the XSalsa20 construction to ChaCha20 662 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length 663 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits, 664 while provably retaining ChaCha20's security. See 665 https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information. 666 667 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly 668 reduced security margin but increased performance. It can be needed 669 in some performance-sensitive scenarios. 670 671config CRYPTO_CBC 672 tristate "CBC (Cipher Block Chaining)" 673 select CRYPTO_SKCIPHER 674 select CRYPTO_MANAGER 675 help 676 CBC (Cipher Block Chaining) mode (NIST SP800-38A) 677 678 This block cipher mode is required for IPSec ESP (XFRM_ESP). 679 680config CRYPTO_CTR 681 tristate "CTR (Counter)" 682 select CRYPTO_SKCIPHER 683 select CRYPTO_MANAGER 684 help 685 CTR (Counter) mode (NIST SP800-38A) 686 687config CRYPTO_CTS 688 tristate "CTS (Cipher Text Stealing)" 689 select CRYPTO_SKCIPHER 690 select CRYPTO_MANAGER 691 help 692 CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST 693 Addendum to SP800-38A (October 2010)) 694 695 This mode is required for Kerberos gss mechanism support 696 for AES encryption. 697 698config CRYPTO_ECB 699 tristate "ECB (Electronic Codebook)" 700 select CRYPTO_SKCIPHER2 701 select CRYPTO_MANAGER 702 help 703 ECB (Electronic Codebook) mode (NIST SP800-38A) 704 705config CRYPTO_HCTR2 706 tristate "HCTR2" 707 select CRYPTO_XCTR 708 select CRYPTO_LIB_POLYVAL 709 select CRYPTO_MANAGER 710 help 711 HCTR2 length-preserving encryption mode 712 713 A mode for storage encryption that is efficient on processors with 714 instructions to accelerate AES and carryless multiplication, e.g. 715 x86 processors with AES-NI and CLMUL, and ARM processors with the 716 ARMv8 crypto extensions. 717 718 See https://eprint.iacr.org/2021/1441 719 720config CRYPTO_LRW 721 tristate "LRW (Liskov Rivest Wagner)" 722 select CRYPTO_LIB_GF128MUL 723 select CRYPTO_SKCIPHER 724 select CRYPTO_MANAGER 725 select CRYPTO_ECB 726 help 727 LRW (Liskov Rivest Wagner) mode 728 729 A tweakable, non malleable, non movable 730 narrow block cipher mode for dm-crypt. Use it with cipher 731 specification string aes-lrw-benbi, the key must be 256, 320 or 384. 732 The first 128, 192 or 256 bits in the key are used for AES and the 733 rest is used to tie each cipher block to its logical position. 734 735 See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf 736 737config CRYPTO_PCBC 738 tristate "PCBC (Propagating Cipher Block Chaining)" 739 select CRYPTO_SKCIPHER 740 select CRYPTO_MANAGER 741 help 742 PCBC (Propagating Cipher Block Chaining) mode 743 744 This block cipher mode is required for RxRPC. 745 746config CRYPTO_XCTR 747 tristate 748 select CRYPTO_SKCIPHER 749 select CRYPTO_MANAGER 750 help 751 XCTR (XOR Counter) mode for HCTR2 752 753 This blockcipher mode is a variant of CTR mode using XORs and little-endian 754 addition rather than big-endian arithmetic. 755 756 XCTR mode is used to implement HCTR2. 757 758config CRYPTO_XTS 759 tristate "XTS (XOR Encrypt XOR with ciphertext stealing)" 760 select CRYPTO_SKCIPHER 761 select CRYPTO_MANAGER 762 select CRYPTO_ECB 763 help 764 XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E 765 and IEEE 1619) 766 767 Use with aes-xts-plain, key size 256, 384 or 512 bits. This 768 implementation currently can't handle a sectorsize which is not a 769 multiple of 16 bytes. 770 771endmenu 772 773menu "AEAD (authenticated encryption with associated data) ciphers" 774 775config CRYPTO_AEGIS128 776 tristate "AEGIS-128" 777 select CRYPTO_AEAD 778 select CRYPTO_AES # for AES S-box tables 779 help 780 AEGIS-128 AEAD algorithm 781 782config CRYPTO_AEGIS128_SIMD 783 bool "AEGIS-128 (arm NEON, arm64 NEON)" 784 depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON) 785 default y 786 help 787 AEGIS-128 AEAD algorithm 788 789 Architecture: arm or arm64 using: 790 - NEON (Advanced SIMD) extension 791 792config CRYPTO_CHACHA20POLY1305 793 tristate "ChaCha20-Poly1305" 794 select CRYPTO_CHACHA20 795 select CRYPTO_AEAD 796 select CRYPTO_LIB_POLY1305 797 select CRYPTO_MANAGER 798 help 799 ChaCha20 stream cipher and Poly1305 authenticator combined 800 mode (RFC8439) 801 802config CRYPTO_CCM 803 tristate "CCM (Counter with Cipher Block Chaining-MAC)" 804 select CRYPTO_CTR 805 select CRYPTO_HASH 806 select CRYPTO_AEAD 807 select CRYPTO_MANAGER 808 help 809 CCM (Counter with Cipher Block Chaining-Message Authentication Code) 810 authenticated encryption mode (NIST SP800-38C) 811 812config CRYPTO_GCM 813 tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)" 814 select CRYPTO_CTR 815 select CRYPTO_AEAD 816 select CRYPTO_GHASH 817 select CRYPTO_MANAGER 818 help 819 GCM (Galois/Counter Mode) authenticated encryption mode and GMAC 820 (GCM Message Authentication Code) (NIST SP800-38D) 821 822 This is required for IPSec ESP (XFRM_ESP). 823 824config CRYPTO_GENIV 825 tristate 826 select CRYPTO_AEAD 827 select CRYPTO_MANAGER 828 select CRYPTO_RNG_DEFAULT 829 830config CRYPTO_SEQIV 831 tristate "Sequence Number IV Generator" 832 select CRYPTO_GENIV 833 help 834 Sequence Number IV generator 835 836 This IV generator generates an IV based on a sequence number by 837 xoring it with a salt. This algorithm is mainly useful for CTR. 838 839 This is required for IPsec ESP (XFRM_ESP). 840 841config CRYPTO_ECHAINIV 842 tristate "Encrypted Chain IV Generator" 843 select CRYPTO_GENIV 844 help 845 Encrypted Chain IV generator 846 847 This IV generator generates an IV based on the encryption of 848 a sequence number xored with a salt. This is the default 849 algorithm for CBC. 850 851config CRYPTO_ESSIV 852 tristate "Encrypted Salt-Sector IV Generator" 853 select CRYPTO_AUTHENC 854 help 855 Encrypted Salt-Sector IV generator 856 857 This IV generator is used in some cases by fscrypt and/or 858 dm-crypt. It uses the hash of the block encryption key as the 859 symmetric key for a block encryption pass applied to the input 860 IV, making low entropy IV sources more suitable for block 861 encryption. 862 863 This driver implements a crypto API template that can be 864 instantiated either as an skcipher or as an AEAD (depending on the 865 type of the first template argument), and which defers encryption 866 and decryption requests to the encapsulated cipher after applying 867 ESSIV to the input IV. Note that in the AEAD case, it is assumed 868 that the keys are presented in the same format used by the authenc 869 template, and that the IV appears at the end of the authenticated 870 associated data (AAD) region (which is how dm-crypt uses it.) 871 872 Note that the use of ESSIV is not recommended for new deployments, 873 and so this only needs to be enabled when interoperability with 874 existing encrypted volumes of filesystems is required, or when 875 building for a particular system that requires it (e.g., when 876 the SoC in question has accelerated CBC but not XTS, making CBC 877 combined with ESSIV the only feasible mode for h/w accelerated 878 block encryption) 879 880endmenu 881 882menu "Hashes, digests, and MACs" 883 884config CRYPTO_BLAKE2B 885 tristate "BLAKE2b" 886 select CRYPTO_HASH 887 select CRYPTO_LIB_BLAKE2B 888 help 889 BLAKE2b cryptographic hash function (RFC 7693) 890 891 BLAKE2b is optimized for 64-bit platforms and can produce digests 892 of any size between 1 and 64 bytes. The keyed hash is also implemented. 893 894 This module provides the following algorithms: 895 - blake2b-160 896 - blake2b-256 897 - blake2b-384 898 - blake2b-512 899 900 Used by the btrfs filesystem. 901 902 See https://blake2.net for further information. 903 904config CRYPTO_CMAC 905 tristate "CMAC (Cipher-based MAC)" 906 select CRYPTO_HASH 907 select CRYPTO_MANAGER 908 help 909 CMAC (Cipher-based Message Authentication Code) authentication 910 mode (NIST SP800-38B and IETF RFC4493) 911 912config CRYPTO_GHASH 913 tristate "GHASH" 914 select CRYPTO_HASH 915 select CRYPTO_LIB_GF128MUL 916 help 917 GCM GHASH function (NIST SP800-38D) 918 919config CRYPTO_HMAC 920 tristate "HMAC (Keyed-Hash MAC)" 921 select CRYPTO_HASH 922 select CRYPTO_MANAGER 923 help 924 HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and 925 RFC2104) 926 927 This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP). 928 929config CRYPTO_MD4 930 tristate "MD4" 931 select CRYPTO_HASH 932 help 933 MD4 message digest algorithm (RFC1320) 934 935config CRYPTO_MD5 936 tristate "MD5" 937 select CRYPTO_HASH 938 select CRYPTO_LIB_MD5 939 help 940 MD5 message digest algorithm (RFC1321), including HMAC support. 941 942config CRYPTO_MICHAEL_MIC 943 tristate "Michael MIC" 944 select CRYPTO_HASH 945 help 946 Michael MIC (Message Integrity Code) (IEEE 802.11i) 947 948 Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol), 949 known as WPA (Wif-Fi Protected Access). 950 951 This algorithm is required for TKIP, but it should not be used for 952 other purposes because of the weakness of the algorithm. 953 954config CRYPTO_RMD160 955 tristate "RIPEMD-160" 956 select CRYPTO_HASH 957 help 958 RIPEMD-160 hash function (ISO/IEC 10118-3) 959 960 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended 961 to be used as a secure replacement for the 128-bit hash functions 962 MD4, MD5 and its predecessor RIPEMD 963 (not to be confused with RIPEMD-128). 964 965 Its speed is comparable to SHA-1 and there are no known attacks 966 against RIPEMD-160. 967 968 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel. 969 See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html 970 for further information. 971 972config CRYPTO_SHA1 973 tristate "SHA-1" 974 select CRYPTO_HASH 975 select CRYPTO_LIB_SHA1 976 help 977 SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including 978 HMAC support. 979 980config CRYPTO_SHA256 981 tristate "SHA-224 and SHA-256" 982 select CRYPTO_HASH 983 select CRYPTO_LIB_SHA256 984 help 985 SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC 986 10118-3), including HMAC support. 987 988 This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP). 989 Used by the btrfs filesystem, Ceph, NFS, and SMB. 990 991config CRYPTO_SHA512 992 tristate "SHA-384 and SHA-512" 993 select CRYPTO_HASH 994 select CRYPTO_LIB_SHA512 995 help 996 SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC 997 10118-3), including HMAC support. 998 999config CRYPTO_SHA3 1000 tristate "SHA-3" 1001 select CRYPTO_HASH 1002 select CRYPTO_LIB_SHA3 1003 help 1004 SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3) 1005 1006config CRYPTO_SM3_GENERIC 1007 tristate "SM3 (ShangMi 3)" 1008 select CRYPTO_HASH 1009 select CRYPTO_LIB_SM3 1010 help 1011 SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3) 1012 1013 This is part of the Chinese Commercial Cryptography suite. 1014 1015 References: 1016 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf 1017 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash 1018 1019config CRYPTO_STREEBOG 1020 tristate "Streebog" 1021 select CRYPTO_HASH 1022 help 1023 Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3) 1024 1025 This is one of the Russian cryptographic standard algorithms (called 1026 GOST algorithms). This setting enables two hash algorithms with 1027 256 and 512 bits output. 1028 1029 References: 1030 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf 1031 https://tools.ietf.org/html/rfc6986 1032 1033config CRYPTO_WP512 1034 tristate "Whirlpool" 1035 select CRYPTO_HASH 1036 help 1037 Whirlpool hash function (ISO/IEC 10118-3) 1038 1039 512, 384 and 256-bit hashes. 1040 1041 Whirlpool-512 is part of the NESSIE cryptographic primitives. 1042 1043 See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html 1044 for further information. 1045 1046config CRYPTO_XCBC 1047 tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)" 1048 select CRYPTO_HASH 1049 select CRYPTO_MANAGER 1050 help 1051 XCBC-MAC (Extended Cipher Block Chaining Message Authentication 1052 Code) (RFC3566) 1053 1054config CRYPTO_XXHASH 1055 tristate "xxHash" 1056 select CRYPTO_HASH 1057 select XXHASH 1058 help 1059 xxHash non-cryptographic hash algorithm 1060 1061 Extremely fast, working at speeds close to RAM limits. 1062 1063 Used by the btrfs filesystem. 1064 1065endmenu 1066 1067menu "CRCs (cyclic redundancy checks)" 1068 1069config CRYPTO_CRC32C 1070 tristate "CRC32c" 1071 select CRYPTO_HASH 1072 select CRC32 1073 help 1074 CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720) 1075 1076 A 32-bit CRC (cyclic redundancy check) with a polynomial defined 1077 by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic 1078 Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions 1079 on Communications, Vol. 41, No. 6, June 1993, selected for use with 1080 iSCSI. 1081 1082 Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI. 1083 1084config CRYPTO_CRC32 1085 tristate "CRC32" 1086 select CRYPTO_HASH 1087 select CRC32 1088 help 1089 CRC32 CRC algorithm (IEEE 802.3) 1090 1091 Used by RoCEv2 and f2fs. 1092 1093endmenu 1094 1095menu "Compression" 1096 1097config CRYPTO_DEFLATE 1098 tristate "Deflate" 1099 select CRYPTO_ALGAPI 1100 select CRYPTO_ACOMP2 1101 select ZLIB_INFLATE 1102 select ZLIB_DEFLATE 1103 help 1104 Deflate compression algorithm (RFC1951) 1105 1106 Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394) 1107 1108config CRYPTO_LZO 1109 tristate "LZO" 1110 select CRYPTO_ALGAPI 1111 select CRYPTO_ACOMP2 1112 select LZO_COMPRESS 1113 select LZO_DECOMPRESS 1114 help 1115 LZO compression algorithm 1116 1117 See https://www.oberhumer.com/opensource/lzo/ for further information. 1118 1119config CRYPTO_842 1120 tristate "842" 1121 select CRYPTO_ALGAPI 1122 select CRYPTO_ACOMP2 1123 select 842_COMPRESS 1124 select 842_DECOMPRESS 1125 help 1126 842 compression algorithm by IBM 1127 1128 See https://github.com/plauth/lib842 for further information. 1129 1130config CRYPTO_LZ4 1131 tristate "LZ4" 1132 select CRYPTO_ALGAPI 1133 select CRYPTO_ACOMP2 1134 select LZ4_COMPRESS 1135 select LZ4_DECOMPRESS 1136 help 1137 LZ4 compression algorithm 1138 1139 See https://github.com/lz4/lz4 for further information. 1140 1141config CRYPTO_LZ4HC 1142 tristate "LZ4HC" 1143 select CRYPTO_ALGAPI 1144 select CRYPTO_ACOMP2 1145 select LZ4HC_COMPRESS 1146 select LZ4_DECOMPRESS 1147 help 1148 LZ4 high compression mode algorithm 1149 1150 See https://github.com/lz4/lz4 for further information. 1151 1152config CRYPTO_ZSTD 1153 tristate "Zstd" 1154 select CRYPTO_ALGAPI 1155 select CRYPTO_ACOMP2 1156 select ZSTD_COMPRESS 1157 select ZSTD_DECOMPRESS 1158 help 1159 zstd compression algorithm 1160 1161 See https://github.com/facebook/zstd for further information. 1162 1163endmenu 1164 1165menu "Random number generation" 1166 1167menuconfig CRYPTO_DRBG_MENU 1168 tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)" 1169 help 1170 DRBG (Deterministic Random Bit Generator) (NIST SP800-90A) 1171 1172 In the following submenu, one or more of the DRBG types must be selected. 1173 1174if CRYPTO_DRBG_MENU 1175 1176config CRYPTO_DRBG_HMAC 1177 bool 1178 default y 1179 select CRYPTO_HMAC 1180 select CRYPTO_SHA512 1181 1182config CRYPTO_DRBG_HASH 1183 bool "Hash_DRBG" 1184 select CRYPTO_SHA256 1185 help 1186 Hash_DRBG variant as defined in NIST SP800-90A. 1187 1188 This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms. 1189 1190config CRYPTO_DRBG_CTR 1191 bool "CTR_DRBG" 1192 select CRYPTO_DF80090A 1193 help 1194 CTR_DRBG variant as defined in NIST SP800-90A. 1195 1196 This uses the AES cipher algorithm with the counter block mode. 1197 1198config CRYPTO_DRBG 1199 tristate 1200 default CRYPTO_DRBG_MENU 1201 select CRYPTO_RNG 1202 select CRYPTO_JITTERENTROPY 1203 1204endif # if CRYPTO_DRBG_MENU 1205 1206config CRYPTO_JITTERENTROPY 1207 tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)" 1208 select CRYPTO_RNG 1209 select CRYPTO_SHA3 1210 help 1211 CPU Jitter RNG (Random Number Generator) from the Jitterentropy library 1212 1213 A non-physical non-deterministic ("true") RNG (e.g., an entropy source 1214 compliant with NIST SP800-90B) intended to provide a seed to a 1215 deterministic RNG (e.g., per NIST SP800-90C). 1216 This RNG does not perform any cryptographic whitening of the generated 1217 random numbers. 1218 1219 See https://www.chronox.de/jent/ 1220 1221if CRYPTO_JITTERENTROPY 1222if CRYPTO_FIPS && EXPERT 1223 1224choice 1225 prompt "CPU Jitter RNG Memory Size" 1226 default CRYPTO_JITTERENTROPY_MEMSIZE_2 1227 help 1228 The Jitter RNG measures the execution time of memory accesses. 1229 Multiple consecutive memory accesses are performed. If the memory 1230 size fits into a cache (e.g. L1), only the memory access timing 1231 to that cache is measured. The closer the cache is to the CPU 1232 the less variations are measured and thus the less entropy is 1233 obtained. Thus, if the memory size fits into the L1 cache, the 1234 obtained entropy is less than if the memory size fits within 1235 L1 + L2, which in turn is less if the memory fits into 1236 L1 + L2 + L3. Thus, by selecting a different memory size, 1237 the entropy rate produced by the Jitter RNG can be modified. 1238 1239 config CRYPTO_JITTERENTROPY_MEMSIZE_2 1240 bool "2048 Bytes (default)" 1241 1242 config CRYPTO_JITTERENTROPY_MEMSIZE_128 1243 bool "128 kBytes" 1244 1245 config CRYPTO_JITTERENTROPY_MEMSIZE_1024 1246 bool "1024 kBytes" 1247 1248 config CRYPTO_JITTERENTROPY_MEMSIZE_8192 1249 bool "8192 kBytes" 1250endchoice 1251 1252config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS 1253 int 1254 default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2 1255 default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128 1256 default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024 1257 default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192 1258 1259config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE 1260 int 1261 default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2 1262 default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128 1263 default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024 1264 default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192 1265 1266config CRYPTO_JITTERENTROPY_OSR 1267 int "CPU Jitter RNG Oversampling Rate" 1268 range 1 15 1269 default 3 1270 help 1271 The Jitter RNG allows the specification of an oversampling rate (OSR). 1272 The Jitter RNG operation requires a fixed amount of timing 1273 measurements to produce one output block of random numbers. The 1274 OSR value is multiplied with the amount of timing measurements to 1275 generate one output block. Thus, the timing measurement is oversampled 1276 by the OSR factor. The oversampling allows the Jitter RNG to operate 1277 on hardware whose timers deliver limited amount of entropy (e.g. 1278 the timer is coarse) by setting the OSR to a higher value. The 1279 trade-off, however, is that the Jitter RNG now requires more time 1280 to generate random numbers. 1281 1282config CRYPTO_JITTERENTROPY_TESTINTERFACE 1283 bool "CPU Jitter RNG Test Interface" 1284 help 1285 The test interface allows a privileged process to capture 1286 the raw unconditioned high resolution time stamp noise that 1287 is collected by the Jitter RNG for statistical analysis. As 1288 this data is used at the same time to generate random bits, 1289 the Jitter RNG operates in an insecure mode as long as the 1290 recording is enabled. This interface therefore is only 1291 intended for testing purposes and is not suitable for 1292 production systems. 1293 1294 The raw noise data can be obtained using the jent_raw_hires 1295 debugfs file. Using the option 1296 jitterentropy_testing.boot_raw_hires_test=1 the raw noise of 1297 the first 1000 entropy events since boot can be sampled. 1298 1299 If unsure, select N. 1300 1301endif # if CRYPTO_FIPS && EXPERT 1302 1303if !(CRYPTO_FIPS && EXPERT) 1304 1305config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS 1306 int 1307 default 64 1308 1309config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE 1310 int 1311 default 32 1312 1313config CRYPTO_JITTERENTROPY_OSR 1314 int 1315 default 1 1316 1317config CRYPTO_JITTERENTROPY_TESTINTERFACE 1318 bool 1319 1320endif # if !(CRYPTO_FIPS && EXPERT) 1321endif # if CRYPTO_JITTERENTROPY 1322 1323config CRYPTO_KDF800108_CTR 1324 tristate 1325 select CRYPTO_HMAC 1326 select CRYPTO_SHA256 1327 1328config CRYPTO_DF80090A 1329 tristate 1330 select CRYPTO_AES 1331 select CRYPTO_CTR 1332 1333endmenu 1334menu "Userspace interface" 1335 1336config CRYPTO_USER_API 1337 tristate 1338 1339config CRYPTO_USER_API_HASH 1340 tristate "Hash algorithms" 1341 depends on NET 1342 select CRYPTO_HASH 1343 select CRYPTO_USER_API 1344 help 1345 Enable the userspace interface for hash algorithms. 1346 1347 See Documentation/crypto/userspace-if.rst and 1348 https://www.chronox.de/libkcapi/html/index.html 1349 1350config CRYPTO_USER_API_SKCIPHER 1351 tristate "Symmetric key cipher algorithms" 1352 depends on NET 1353 select CRYPTO_SKCIPHER 1354 select CRYPTO_USER_API 1355 help 1356 Enable the userspace interface for symmetric key cipher algorithms. 1357 1358 See Documentation/crypto/userspace-if.rst and 1359 https://www.chronox.de/libkcapi/html/index.html 1360 1361config CRYPTO_USER_API_RNG 1362 tristate "RNG (random number generator) algorithms" 1363 depends on NET 1364 select CRYPTO_RNG 1365 select CRYPTO_USER_API 1366 help 1367 Enable the userspace interface for RNG (random number generator) 1368 algorithms. 1369 1370 See Documentation/crypto/userspace-if.rst and 1371 https://www.chronox.de/libkcapi/html/index.html 1372 1373config CRYPTO_USER_API_RNG_CAVP 1374 bool "Enable CAVP testing of DRBG" 1375 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG 1376 help 1377 Enable extra APIs in the userspace interface for NIST CAVP 1378 (Cryptographic Algorithm Validation Program) testing: 1379 - resetting DRBG entropy 1380 - providing Additional Data 1381 1382 This should only be enabled for CAVP testing. You should say 1383 no unless you know what this is. 1384 1385config CRYPTO_USER_API_AEAD 1386 tristate "AEAD cipher algorithms" 1387 depends on NET 1388 select CRYPTO_AEAD 1389 select CRYPTO_SKCIPHER 1390 select CRYPTO_USER_API 1391 help 1392 Enable the userspace interface for AEAD cipher algorithms. 1393 1394 See Documentation/crypto/userspace-if.rst and 1395 https://www.chronox.de/libkcapi/html/index.html 1396 1397config CRYPTO_USER_API_ENABLE_OBSOLETE 1398 bool "Obsolete cryptographic algorithms" 1399 depends on CRYPTO_USER_API 1400 default y 1401 help 1402 Allow obsolete cryptographic algorithms to be selected that have 1403 already been phased out from internal use by the kernel, and are 1404 only useful for userspace clients that still rely on them. 1405 1406endmenu 1407 1408if !KMSAN # avoid false positives from assembly 1409if ARM 1410source "arch/arm/crypto/Kconfig" 1411endif 1412if ARM64 1413source "arch/arm64/crypto/Kconfig" 1414endif 1415if LOONGARCH 1416source "arch/loongarch/crypto/Kconfig" 1417endif 1418if MIPS 1419source "arch/mips/crypto/Kconfig" 1420endif 1421if PPC 1422source "arch/powerpc/crypto/Kconfig" 1423endif 1424if RISCV 1425source "arch/riscv/crypto/Kconfig" 1426endif 1427if S390 1428source "arch/s390/crypto/Kconfig" 1429endif 1430if SPARC 1431source "arch/sparc/crypto/Kconfig" 1432endif 1433if X86 1434source "arch/x86/crypto/Kconfig" 1435endif 1436endif 1437 1438source "drivers/crypto/Kconfig" 1439source "crypto/asymmetric_keys/Kconfig" 1440source "certs/Kconfig" 1441source "crypto/krb5/Kconfig" 1442 1443endif # if CRYPTO 1444