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