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