Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # Generic algorithms support
0004 #
0005 config XOR_BLOCKS
0006         tristate
0007 
0008 #
0009 # async_tx api: hardware offloaded memory transfer/transform support
0010 #
0011 source "crypto/async_tx/Kconfig"
0012 
0013 #
0014 # Cryptographic API Configuration
0015 #
0016 menuconfig CRYPTO
0017         tristate "Cryptographic API"
0018         select LIB_MEMNEQ
0019         help
0020           This option provides the core Cryptographic API.
0021 
0022 if CRYPTO
0023 
0024 comment "Crypto core or helper"
0025 
0026 config CRYPTO_FIPS
0027         bool "FIPS 200 compliance"
0028         depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
0029         depends on (MODULE_SIG || !MODULES)
0030         help
0031           This option enables the fips boot option which is
0032           required if you want the system to operate in a FIPS 200
0033           certification.  You should say no unless you know what
0034           this is.
0035 
0036 config CRYPTO_FIPS_NAME
0037         string "FIPS Module Name"
0038         default "Linux Kernel Cryptographic API"
0039         depends on CRYPTO_FIPS
0040         help
0041           This option sets the FIPS Module name reported by the Crypto API via
0042           the /proc/sys/crypto/fips_name file.
0043 
0044 config CRYPTO_FIPS_CUSTOM_VERSION
0045         bool "Use Custom FIPS Module Version"
0046         depends on CRYPTO_FIPS
0047         default n
0048 
0049 config CRYPTO_FIPS_VERSION
0050         string "FIPS Module Version"
0051         default "(none)"
0052         depends on CRYPTO_FIPS_CUSTOM_VERSION
0053         help
0054           This option provides the ability to override the FIPS Module Version.
0055           By default the KERNELRELEASE value is used.
0056 
0057 config CRYPTO_ALGAPI
0058         tristate
0059         select CRYPTO_ALGAPI2
0060         help
0061           This option provides the API for cryptographic algorithms.
0062 
0063 config CRYPTO_ALGAPI2
0064         tristate
0065 
0066 config CRYPTO_AEAD
0067         tristate
0068         select CRYPTO_AEAD2
0069         select CRYPTO_ALGAPI
0070 
0071 config CRYPTO_AEAD2
0072         tristate
0073         select CRYPTO_ALGAPI2
0074         select CRYPTO_NULL2
0075         select CRYPTO_RNG2
0076 
0077 config CRYPTO_SKCIPHER
0078         tristate
0079         select CRYPTO_SKCIPHER2
0080         select CRYPTO_ALGAPI
0081 
0082 config CRYPTO_SKCIPHER2
0083         tristate
0084         select CRYPTO_ALGAPI2
0085         select CRYPTO_RNG2
0086 
0087 config CRYPTO_HASH
0088         tristate
0089         select CRYPTO_HASH2
0090         select CRYPTO_ALGAPI
0091 
0092 config CRYPTO_HASH2
0093         tristate
0094         select CRYPTO_ALGAPI2
0095 
0096 config CRYPTO_RNG
0097         tristate
0098         select CRYPTO_RNG2
0099         select CRYPTO_ALGAPI
0100 
0101 config CRYPTO_RNG2
0102         tristate
0103         select CRYPTO_ALGAPI2
0104 
0105 config CRYPTO_RNG_DEFAULT
0106         tristate
0107         select CRYPTO_DRBG_MENU
0108 
0109 config CRYPTO_AKCIPHER2
0110         tristate
0111         select CRYPTO_ALGAPI2
0112 
0113 config CRYPTO_AKCIPHER
0114         tristate
0115         select CRYPTO_AKCIPHER2
0116         select CRYPTO_ALGAPI
0117 
0118 config CRYPTO_KPP2
0119         tristate
0120         select CRYPTO_ALGAPI2
0121 
0122 config CRYPTO_KPP
0123         tristate
0124         select CRYPTO_ALGAPI
0125         select CRYPTO_KPP2
0126 
0127 config CRYPTO_ACOMP2
0128         tristate
0129         select CRYPTO_ALGAPI2
0130         select SGL_ALLOC
0131 
0132 config CRYPTO_ACOMP
0133         tristate
0134         select CRYPTO_ALGAPI
0135         select CRYPTO_ACOMP2
0136 
0137 config CRYPTO_MANAGER
0138         tristate "Cryptographic algorithm manager"
0139         select CRYPTO_MANAGER2
0140         help
0141           Create default cryptographic template instantiations such as
0142           cbc(aes).
0143 
0144 config CRYPTO_MANAGER2
0145         def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
0146         select CRYPTO_AEAD2
0147         select CRYPTO_HASH2
0148         select CRYPTO_SKCIPHER2
0149         select CRYPTO_AKCIPHER2
0150         select CRYPTO_KPP2
0151         select CRYPTO_ACOMP2
0152 
0153 config CRYPTO_USER
0154         tristate "Userspace cryptographic algorithm configuration"
0155         depends on NET
0156         select CRYPTO_MANAGER
0157         help
0158           Userspace configuration for cryptographic instantiations such as
0159           cbc(aes).
0160 
0161 config CRYPTO_MANAGER_DISABLE_TESTS
0162         bool "Disable run-time self tests"
0163         default y
0164         help
0165           Disable run-time self tests that normally take place at
0166           algorithm registration.
0167 
0168 config CRYPTO_MANAGER_EXTRA_TESTS
0169         bool "Enable extra run-time crypto self tests"
0170         depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
0171         help
0172           Enable extra run-time self tests of registered crypto algorithms,
0173           including randomized fuzz tests.
0174 
0175           This is intended for developer use only, as these tests take much
0176           longer to run than the normal self tests.
0177 
0178 config CRYPTO_GF128MUL
0179         tristate
0180 
0181 config CRYPTO_NULL
0182         tristate "Null algorithms"
0183         select CRYPTO_NULL2
0184         help
0185           These are 'Null' algorithms, used by IPsec, which do nothing.
0186 
0187 config CRYPTO_NULL2
0188         tristate
0189         select CRYPTO_ALGAPI2
0190         select CRYPTO_SKCIPHER2
0191         select CRYPTO_HASH2
0192 
0193 config CRYPTO_PCRYPT
0194         tristate "Parallel crypto engine"
0195         depends on SMP
0196         select PADATA
0197         select CRYPTO_MANAGER
0198         select CRYPTO_AEAD
0199         help
0200           This converts an arbitrary crypto algorithm into a parallel
0201           algorithm that executes in kernel threads.
0202 
0203 config CRYPTO_CRYPTD
0204         tristate "Software async crypto daemon"
0205         select CRYPTO_SKCIPHER
0206         select CRYPTO_HASH
0207         select CRYPTO_MANAGER
0208         help
0209           This is a generic software asynchronous crypto daemon that
0210           converts an arbitrary synchronous software crypto algorithm
0211           into an asynchronous algorithm that executes in a kernel thread.
0212 
0213 config CRYPTO_AUTHENC
0214         tristate "Authenc support"
0215         select CRYPTO_AEAD
0216         select CRYPTO_SKCIPHER
0217         select CRYPTO_MANAGER
0218         select CRYPTO_HASH
0219         select CRYPTO_NULL
0220         help
0221           Authenc: Combined mode wrapper for IPsec.
0222           This is required for IPSec.
0223 
0224 config CRYPTO_TEST
0225         tristate "Testing module"
0226         depends on m || EXPERT
0227         select CRYPTO_MANAGER
0228         help
0229           Quick & dirty crypto test module.
0230 
0231 config CRYPTO_SIMD
0232         tristate
0233         select CRYPTO_CRYPTD
0234 
0235 config CRYPTO_ENGINE
0236         tristate
0237 
0238 comment "Public-key cryptography"
0239 
0240 config CRYPTO_RSA
0241         tristate "RSA algorithm"
0242         select CRYPTO_AKCIPHER
0243         select CRYPTO_MANAGER
0244         select MPILIB
0245         select ASN1
0246         help
0247           Generic implementation of the RSA public key algorithm.
0248 
0249 config CRYPTO_DH
0250         tristate "Diffie-Hellman algorithm"
0251         select CRYPTO_KPP
0252         select MPILIB
0253         help
0254           Generic implementation of the Diffie-Hellman algorithm.
0255 
0256 config CRYPTO_DH_RFC7919_GROUPS
0257         bool "Support for RFC 7919 FFDHE group parameters"
0258         depends on CRYPTO_DH
0259         select CRYPTO_RNG_DEFAULT
0260         help
0261           Provide support for RFC 7919 FFDHE group parameters. If unsure, say N.
0262 
0263 config CRYPTO_ECC
0264         tristate
0265         select CRYPTO_RNG_DEFAULT
0266 
0267 config CRYPTO_ECDH
0268         tristate "ECDH algorithm"
0269         select CRYPTO_ECC
0270         select CRYPTO_KPP
0271         help
0272           Generic implementation of the ECDH algorithm
0273 
0274 config CRYPTO_ECDSA
0275         tristate "ECDSA (NIST P192, P256 etc.) algorithm"
0276         select CRYPTO_ECC
0277         select CRYPTO_AKCIPHER
0278         select ASN1
0279         help
0280           Elliptic Curve Digital Signature Algorithm (NIST P192, P256 etc.)
0281           is A NIST cryptographic standard algorithm. Only signature verification
0282           is implemented.
0283 
0284 config CRYPTO_ECRDSA
0285         tristate "EC-RDSA (GOST 34.10) algorithm"
0286         select CRYPTO_ECC
0287         select CRYPTO_AKCIPHER
0288         select CRYPTO_STREEBOG
0289         select OID_REGISTRY
0290         select ASN1
0291         help
0292           Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
0293           RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
0294           standard algorithms (called GOST algorithms). Only signature verification
0295           is implemented.
0296 
0297 config CRYPTO_SM2
0298         tristate "SM2 algorithm"
0299         select CRYPTO_SM3
0300         select CRYPTO_AKCIPHER
0301         select CRYPTO_MANAGER
0302         select MPILIB
0303         select ASN1
0304         help
0305           Generic implementation of the SM2 public key algorithm. It was
0306           published by State Encryption Management Bureau, China.
0307           as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
0308 
0309           References:
0310           https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
0311           http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
0312           http://www.gmbz.org.cn/main/bzlb.html
0313 
0314 config CRYPTO_CURVE25519
0315         tristate "Curve25519 algorithm"
0316         select CRYPTO_KPP
0317         select CRYPTO_LIB_CURVE25519_GENERIC
0318 
0319 config CRYPTO_CURVE25519_X86
0320         tristate "x86_64 accelerated Curve25519 scalar multiplication library"
0321         depends on X86 && 64BIT
0322         select CRYPTO_LIB_CURVE25519_GENERIC
0323         select CRYPTO_ARCH_HAVE_LIB_CURVE25519
0324 
0325 comment "Authenticated Encryption with Associated Data"
0326 
0327 config CRYPTO_CCM
0328         tristate "CCM support"
0329         select CRYPTO_CTR
0330         select CRYPTO_HASH
0331         select CRYPTO_AEAD
0332         select CRYPTO_MANAGER
0333         help
0334           Support for Counter with CBC MAC. Required for IPsec.
0335 
0336 config CRYPTO_GCM
0337         tristate "GCM/GMAC support"
0338         select CRYPTO_CTR
0339         select CRYPTO_AEAD
0340         select CRYPTO_GHASH
0341         select CRYPTO_NULL
0342         select CRYPTO_MANAGER
0343         help
0344           Support for Galois/Counter Mode (GCM) and Galois Message
0345           Authentication Code (GMAC). Required for IPSec.
0346 
0347 config CRYPTO_CHACHA20POLY1305
0348         tristate "ChaCha20-Poly1305 AEAD support"
0349         select CRYPTO_CHACHA20
0350         select CRYPTO_POLY1305
0351         select CRYPTO_AEAD
0352         select CRYPTO_MANAGER
0353         help
0354           ChaCha20-Poly1305 AEAD support, RFC7539.
0355 
0356           Support for the AEAD wrapper using the ChaCha20 stream cipher combined
0357           with the Poly1305 authenticator. It is defined in RFC7539 for use in
0358           IETF protocols.
0359 
0360 config CRYPTO_AEGIS128
0361         tristate "AEGIS-128 AEAD algorithm"
0362         select CRYPTO_AEAD
0363         select CRYPTO_AES  # for AES S-box tables
0364         help
0365          Support for the AEGIS-128 dedicated AEAD algorithm.
0366 
0367 config CRYPTO_AEGIS128_SIMD
0368         bool "Support SIMD acceleration for AEGIS-128"
0369         depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
0370         default y
0371 
0372 config CRYPTO_AEGIS128_AESNI_SSE2
0373         tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
0374         depends on X86 && 64BIT
0375         select CRYPTO_AEAD
0376         select CRYPTO_SIMD
0377         help
0378          AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
0379 
0380 config CRYPTO_SEQIV
0381         tristate "Sequence Number IV Generator"
0382         select CRYPTO_AEAD
0383         select CRYPTO_SKCIPHER
0384         select CRYPTO_NULL
0385         select CRYPTO_RNG_DEFAULT
0386         select CRYPTO_MANAGER
0387         help
0388           This IV generator generates an IV based on a sequence number by
0389           xoring it with a salt.  This algorithm is mainly useful for CTR
0390 
0391 config CRYPTO_ECHAINIV
0392         tristate "Encrypted Chain IV Generator"
0393         select CRYPTO_AEAD
0394         select CRYPTO_NULL
0395         select CRYPTO_RNG_DEFAULT
0396         select CRYPTO_MANAGER
0397         help
0398           This IV generator generates an IV based on the encryption of
0399           a sequence number xored with a salt.  This is the default
0400           algorithm for CBC.
0401 
0402 comment "Block modes"
0403 
0404 config CRYPTO_CBC
0405         tristate "CBC support"
0406         select CRYPTO_SKCIPHER
0407         select CRYPTO_MANAGER
0408         help
0409           CBC: Cipher Block Chaining mode
0410           This block cipher algorithm is required for IPSec.
0411 
0412 config CRYPTO_CFB
0413         tristate "CFB support"
0414         select CRYPTO_SKCIPHER
0415         select CRYPTO_MANAGER
0416         help
0417           CFB: Cipher FeedBack mode
0418           This block cipher algorithm is required for TPM2 Cryptography.
0419 
0420 config CRYPTO_CTR
0421         tristate "CTR support"
0422         select CRYPTO_SKCIPHER
0423         select CRYPTO_MANAGER
0424         help
0425           CTR: Counter mode
0426           This block cipher algorithm is required for IPSec.
0427 
0428 config CRYPTO_CTS
0429         tristate "CTS support"
0430         select CRYPTO_SKCIPHER
0431         select CRYPTO_MANAGER
0432         help
0433           CTS: Cipher Text Stealing
0434           This is the Cipher Text Stealing mode as described by
0435           Section 8 of rfc2040 and referenced by rfc3962
0436           (rfc3962 includes errata information in its Appendix A) or
0437           CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
0438           This mode is required for Kerberos gss mechanism support
0439           for AES encryption.
0440 
0441           See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
0442 
0443 config CRYPTO_ECB
0444         tristate "ECB support"
0445         select CRYPTO_SKCIPHER
0446         select CRYPTO_MANAGER
0447         help
0448           ECB: Electronic CodeBook mode
0449           This is the simplest block cipher algorithm.  It simply encrypts
0450           the input block by block.
0451 
0452 config CRYPTO_LRW
0453         tristate "LRW support"
0454         select CRYPTO_SKCIPHER
0455         select CRYPTO_MANAGER
0456         select CRYPTO_GF128MUL
0457         select CRYPTO_ECB
0458         help
0459           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
0460           narrow block cipher mode for dm-crypt.  Use it with cipher
0461           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
0462           The first 128, 192 or 256 bits in the key are used for AES and the
0463           rest is used to tie each cipher block to its logical position.
0464 
0465 config CRYPTO_OFB
0466         tristate "OFB support"
0467         select CRYPTO_SKCIPHER
0468         select CRYPTO_MANAGER
0469         help
0470           OFB: the Output Feedback mode makes a block cipher into a synchronous
0471           stream cipher. It generates keystream blocks, which are then XORed
0472           with the plaintext blocks to get the ciphertext. Flipping a bit in the
0473           ciphertext produces a flipped bit in the plaintext at the same
0474           location. This property allows many error correcting codes to function
0475           normally even when applied before encryption.
0476 
0477 config CRYPTO_PCBC
0478         tristate "PCBC support"
0479         select CRYPTO_SKCIPHER
0480         select CRYPTO_MANAGER
0481         help
0482           PCBC: Propagating Cipher Block Chaining mode
0483           This block cipher algorithm is required for RxRPC.
0484 
0485 config CRYPTO_XCTR
0486         tristate
0487         select CRYPTO_SKCIPHER
0488         select CRYPTO_MANAGER
0489         help
0490           XCTR: XOR Counter mode. This blockcipher mode is a variant of CTR mode
0491           using XORs and little-endian addition rather than big-endian arithmetic.
0492           XCTR mode is used to implement HCTR2.
0493 
0494 config CRYPTO_XTS
0495         tristate "XTS support"
0496         select CRYPTO_SKCIPHER
0497         select CRYPTO_MANAGER
0498         select CRYPTO_ECB
0499         help
0500           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
0501           key size 256, 384 or 512 bits. This implementation currently
0502           can't handle a sectorsize which is not a multiple of 16 bytes.
0503 
0504 config CRYPTO_KEYWRAP
0505         tristate "Key wrapping support"
0506         select CRYPTO_SKCIPHER
0507         select CRYPTO_MANAGER
0508         help
0509           Support for key wrapping (NIST SP800-38F / RFC3394) without
0510           padding.
0511 
0512 config CRYPTO_NHPOLY1305
0513         tristate
0514         select CRYPTO_HASH
0515         select CRYPTO_LIB_POLY1305_GENERIC
0516 
0517 config CRYPTO_NHPOLY1305_SSE2
0518         tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
0519         depends on X86 && 64BIT
0520         select CRYPTO_NHPOLY1305
0521         help
0522           SSE2 optimized implementation of the hash function used by the
0523           Adiantum encryption mode.
0524 
0525 config CRYPTO_NHPOLY1305_AVX2
0526         tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
0527         depends on X86 && 64BIT
0528         select CRYPTO_NHPOLY1305
0529         help
0530           AVX2 optimized implementation of the hash function used by the
0531           Adiantum encryption mode.
0532 
0533 config CRYPTO_ADIANTUM
0534         tristate "Adiantum support"
0535         select CRYPTO_CHACHA20
0536         select CRYPTO_LIB_POLY1305_GENERIC
0537         select CRYPTO_NHPOLY1305
0538         select CRYPTO_MANAGER
0539         help
0540           Adiantum is a tweakable, length-preserving encryption mode
0541           designed for fast and secure disk encryption, especially on
0542           CPUs without dedicated crypto instructions.  It encrypts
0543           each sector using the XChaCha12 stream cipher, two passes of
0544           an ε-almost-∆-universal hash function, and an invocation of
0545           the AES-256 block cipher on a single 16-byte block.  On CPUs
0546           without AES instructions, Adiantum is much faster than
0547           AES-XTS.
0548 
0549           Adiantum's security is provably reducible to that of its
0550           underlying stream and block ciphers, subject to a security
0551           bound.  Unlike XTS, Adiantum is a true wide-block encryption
0552           mode, so it actually provides an even stronger notion of
0553           security than XTS, subject to the security bound.
0554 
0555           If unsure, say N.
0556 
0557 config CRYPTO_HCTR2
0558         tristate "HCTR2 support"
0559         select CRYPTO_XCTR
0560         select CRYPTO_POLYVAL
0561         select CRYPTO_MANAGER
0562         help
0563           HCTR2 is a length-preserving encryption mode for storage encryption that
0564           is efficient on processors with instructions to accelerate AES and
0565           carryless multiplication, e.g. x86 processors with AES-NI and CLMUL, and
0566           ARM processors with the ARMv8 crypto extensions.
0567 
0568 config CRYPTO_ESSIV
0569         tristate "ESSIV support for block encryption"
0570         select CRYPTO_AUTHENC
0571         help
0572           Encrypted salt-sector initialization vector (ESSIV) is an IV
0573           generation method that is used in some cases by fscrypt and/or
0574           dm-crypt. It uses the hash of the block encryption key as the
0575           symmetric key for a block encryption pass applied to the input
0576           IV, making low entropy IV sources more suitable for block
0577           encryption.
0578 
0579           This driver implements a crypto API template that can be
0580           instantiated either as an skcipher or as an AEAD (depending on the
0581           type of the first template argument), and which defers encryption
0582           and decryption requests to the encapsulated cipher after applying
0583           ESSIV to the input IV. Note that in the AEAD case, it is assumed
0584           that the keys are presented in the same format used by the authenc
0585           template, and that the IV appears at the end of the authenticated
0586           associated data (AAD) region (which is how dm-crypt uses it.)
0587 
0588           Note that the use of ESSIV is not recommended for new deployments,
0589           and so this only needs to be enabled when interoperability with
0590           existing encrypted volumes of filesystems is required, or when
0591           building for a particular system that requires it (e.g., when
0592           the SoC in question has accelerated CBC but not XTS, making CBC
0593           combined with ESSIV the only feasible mode for h/w accelerated
0594           block encryption)
0595 
0596 comment "Hash modes"
0597 
0598 config CRYPTO_CMAC
0599         tristate "CMAC support"
0600         select CRYPTO_HASH
0601         select CRYPTO_MANAGER
0602         help
0603           Cipher-based Message Authentication Code (CMAC) specified by
0604           The National Institute of Standards and Technology (NIST).
0605 
0606           https://tools.ietf.org/html/rfc4493
0607           http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
0608 
0609 config CRYPTO_HMAC
0610         tristate "HMAC support"
0611         select CRYPTO_HASH
0612         select CRYPTO_MANAGER
0613         help
0614           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
0615           This is required for IPSec.
0616 
0617 config CRYPTO_XCBC
0618         tristate "XCBC support"
0619         select CRYPTO_HASH
0620         select CRYPTO_MANAGER
0621         help
0622           XCBC: Keyed-Hashing with encryption algorithm
0623                 https://www.ietf.org/rfc/rfc3566.txt
0624                 http://csrc.nist.gov/encryption/modes/proposedmodes/
0625                  xcbc-mac/xcbc-mac-spec.pdf
0626 
0627 config CRYPTO_VMAC
0628         tristate "VMAC support"
0629         select CRYPTO_HASH
0630         select CRYPTO_MANAGER
0631         help
0632           VMAC is a message authentication algorithm designed for
0633           very high speed on 64-bit architectures.
0634 
0635           See also:
0636           <https://fastcrypto.org/vmac>
0637 
0638 comment "Digest"
0639 
0640 config CRYPTO_CRC32C
0641         tristate "CRC32c CRC algorithm"
0642         select CRYPTO_HASH
0643         select CRC32
0644         help
0645           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
0646           by iSCSI for header and data digests and by others.
0647           See Castagnoli93.  Module will be crc32c.
0648 
0649 config CRYPTO_CRC32C_INTEL
0650         tristate "CRC32c INTEL hardware acceleration"
0651         depends on X86
0652         select CRYPTO_HASH
0653         help
0654           In Intel processor with SSE4.2 supported, the processor will
0655           support CRC32C implementation using hardware accelerated CRC32
0656           instruction. This option will create 'crc32c-intel' module,
0657           which will enable any routine to use the CRC32 instruction to
0658           gain performance compared with software implementation.
0659           Module will be crc32c-intel.
0660 
0661 config CRYPTO_CRC32C_VPMSUM
0662         tristate "CRC32c CRC algorithm (powerpc64)"
0663         depends on PPC64 && ALTIVEC
0664         select CRYPTO_HASH
0665         select CRC32
0666         help
0667           CRC32c algorithm implemented using vector polynomial multiply-sum
0668           (vpmsum) instructions, introduced in POWER8. Enable on POWER8
0669           and newer processors for improved performance.
0670 
0671 
0672 config CRYPTO_CRC32C_SPARC64
0673         tristate "CRC32c CRC algorithm (SPARC64)"
0674         depends on SPARC64
0675         select CRYPTO_HASH
0676         select CRC32
0677         help
0678           CRC32c CRC algorithm implemented using sparc64 crypto instructions,
0679           when available.
0680 
0681 config CRYPTO_CRC32
0682         tristate "CRC32 CRC algorithm"
0683         select CRYPTO_HASH
0684         select CRC32
0685         help
0686           CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
0687           Shash crypto api wrappers to crc32_le function.
0688 
0689 config CRYPTO_CRC32_PCLMUL
0690         tristate "CRC32 PCLMULQDQ hardware acceleration"
0691         depends on X86
0692         select CRYPTO_HASH
0693         select CRC32
0694         help
0695           From Intel Westmere and AMD Bulldozer processor with SSE4.2
0696           and PCLMULQDQ supported, the processor will support
0697           CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
0698           instruction. This option will create 'crc32-pclmul' module,
0699           which will enable any routine to use the CRC-32-IEEE 802.3 checksum
0700           and gain better performance as compared with the table implementation.
0701 
0702 config CRYPTO_CRC32_MIPS
0703         tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
0704         depends on MIPS_CRC_SUPPORT
0705         select CRYPTO_HASH
0706         help
0707           CRC32c and CRC32 CRC algorithms implemented using mips crypto
0708           instructions, when available.
0709 
0710 config CRYPTO_CRC32_S390
0711         tristate "CRC-32 algorithms"
0712         depends on S390
0713         select CRYPTO_HASH
0714         select CRC32
0715         help
0716           Select this option if you want to use hardware accelerated
0717           implementations of CRC algorithms.  With this option, you
0718           can optimize the computation of CRC-32 (IEEE 802.3 Ethernet)
0719           and CRC-32C (Castagnoli).
0720 
0721           It is available with IBM z13 or later.
0722 
0723 config CRYPTO_XXHASH
0724         tristate "xxHash hash algorithm"
0725         select CRYPTO_HASH
0726         select XXHASH
0727         help
0728           xxHash non-cryptographic hash algorithm. Extremely fast, working at
0729           speeds close to RAM limits.
0730 
0731 config CRYPTO_BLAKE2B
0732         tristate "BLAKE2b digest algorithm"
0733         select CRYPTO_HASH
0734         help
0735           Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
0736           optimized for 64bit platforms and can produce digests of any size
0737           between 1 to 64.  The keyed hash is also implemented.
0738 
0739           This module provides the following algorithms:
0740 
0741           - blake2b-160
0742           - blake2b-256
0743           - blake2b-384
0744           - blake2b-512
0745 
0746           See https://blake2.net for further information.
0747 
0748 config CRYPTO_BLAKE2S_X86
0749         bool "BLAKE2s digest algorithm (x86 accelerated version)"
0750         depends on X86 && 64BIT
0751         select CRYPTO_LIB_BLAKE2S_GENERIC
0752         select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
0753 
0754 config CRYPTO_CRCT10DIF
0755         tristate "CRCT10DIF algorithm"
0756         select CRYPTO_HASH
0757         help
0758           CRC T10 Data Integrity Field computation is being cast as
0759           a crypto transform.  This allows for faster crc t10 diff
0760           transforms to be used if they are available.
0761 
0762 config CRYPTO_CRCT10DIF_PCLMUL
0763         tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
0764         depends on X86 && 64BIT && CRC_T10DIF
0765         select CRYPTO_HASH
0766         help
0767           For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
0768           CRC T10 DIF PCLMULQDQ computation can be hardware
0769           accelerated PCLMULQDQ instruction. This option will create
0770           'crct10dif-pclmul' module, which is faster when computing the
0771           crct10dif checksum as compared with the generic table implementation.
0772 
0773 config CRYPTO_CRCT10DIF_VPMSUM
0774         tristate "CRC32T10DIF powerpc64 hardware acceleration"
0775         depends on PPC64 && ALTIVEC && CRC_T10DIF
0776         select CRYPTO_HASH
0777         help
0778           CRC10T10DIF algorithm implemented using vector polynomial
0779           multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
0780           POWER8 and newer processors for improved performance.
0781 
0782 config CRYPTO_CRC64_ROCKSOFT
0783         tristate "Rocksoft Model CRC64 algorithm"
0784         depends on CRC64
0785         select CRYPTO_HASH
0786 
0787 config CRYPTO_VPMSUM_TESTER
0788         tristate "Powerpc64 vpmsum hardware acceleration tester"
0789         depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
0790         help
0791           Stress test for CRC32c and CRC-T10DIF algorithms implemented with
0792           POWER8 vpmsum instructions.
0793           Unless you are testing these algorithms, you don't need this.
0794 
0795 config CRYPTO_GHASH
0796         tristate "GHASH hash function"
0797         select CRYPTO_GF128MUL
0798         select CRYPTO_HASH
0799         help
0800           GHASH is the hash function used in GCM (Galois/Counter Mode).
0801           It is not a general-purpose cryptographic hash function.
0802 
0803 config CRYPTO_POLYVAL
0804         tristate
0805         select CRYPTO_GF128MUL
0806         select CRYPTO_HASH
0807         help
0808           POLYVAL is the hash function used in HCTR2.  It is not a general-purpose
0809           cryptographic hash function.
0810 
0811 config CRYPTO_POLYVAL_CLMUL_NI
0812         tristate "POLYVAL hash function (CLMUL-NI accelerated)"
0813         depends on X86 && 64BIT
0814         select CRYPTO_POLYVAL
0815         help
0816           This is the x86_64 CLMUL-NI accelerated implementation of POLYVAL. It is
0817           used to efficiently implement HCTR2 on x86-64 processors that support
0818           carry-less multiplication instructions.
0819 
0820 config CRYPTO_POLY1305
0821         tristate "Poly1305 authenticator algorithm"
0822         select CRYPTO_HASH
0823         select CRYPTO_LIB_POLY1305_GENERIC
0824         help
0825           Poly1305 authenticator algorithm, RFC7539.
0826 
0827           Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
0828           It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
0829           in IETF protocols. This is the portable C implementation of Poly1305.
0830 
0831 config CRYPTO_POLY1305_X86_64
0832         tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
0833         depends on X86 && 64BIT
0834         select CRYPTO_LIB_POLY1305_GENERIC
0835         select CRYPTO_ARCH_HAVE_LIB_POLY1305
0836         help
0837           Poly1305 authenticator algorithm, RFC7539.
0838 
0839           Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
0840           It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
0841           in IETF protocols. This is the x86_64 assembler implementation using SIMD
0842           instructions.
0843 
0844 config CRYPTO_POLY1305_MIPS
0845         tristate "Poly1305 authenticator algorithm (MIPS optimized)"
0846         depends on MIPS
0847         select CRYPTO_ARCH_HAVE_LIB_POLY1305
0848 
0849 config CRYPTO_MD4
0850         tristate "MD4 digest algorithm"
0851         select CRYPTO_HASH
0852         help
0853           MD4 message digest algorithm (RFC1320).
0854 
0855 config CRYPTO_MD5
0856         tristate "MD5 digest algorithm"
0857         select CRYPTO_HASH
0858         help
0859           MD5 message digest algorithm (RFC1321).
0860 
0861 config CRYPTO_MD5_OCTEON
0862         tristate "MD5 digest algorithm (OCTEON)"
0863         depends on CPU_CAVIUM_OCTEON
0864         select CRYPTO_MD5
0865         select CRYPTO_HASH
0866         help
0867           MD5 message digest algorithm (RFC1321) implemented
0868           using OCTEON crypto instructions, when available.
0869 
0870 config CRYPTO_MD5_PPC
0871         tristate "MD5 digest algorithm (PPC)"
0872         depends on PPC
0873         select CRYPTO_HASH
0874         help
0875           MD5 message digest algorithm (RFC1321) implemented
0876           in PPC assembler.
0877 
0878 config CRYPTO_MD5_SPARC64
0879         tristate "MD5 digest algorithm (SPARC64)"
0880         depends on SPARC64
0881         select CRYPTO_MD5
0882         select CRYPTO_HASH
0883         help
0884           MD5 message digest algorithm (RFC1321) implemented
0885           using sparc64 crypto instructions, when available.
0886 
0887 config CRYPTO_MICHAEL_MIC
0888         tristate "Michael MIC keyed digest algorithm"
0889         select CRYPTO_HASH
0890         help
0891           Michael MIC is used for message integrity protection in TKIP
0892           (IEEE 802.11i). This algorithm is required for TKIP, but it
0893           should not be used for other purposes because of the weakness
0894           of the algorithm.
0895 
0896 config CRYPTO_RMD160
0897         tristate "RIPEMD-160 digest algorithm"
0898         select CRYPTO_HASH
0899         help
0900           RIPEMD-160 (ISO/IEC 10118-3:2004).
0901 
0902           RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
0903           to be used as a secure replacement for the 128-bit hash functions
0904           MD4, MD5 and its predecessor RIPEMD
0905           (not to be confused with RIPEMD-128).
0906 
0907           It's speed is comparable to SHA1 and there are no known attacks
0908           against RIPEMD-160.
0909 
0910           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
0911           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
0912 
0913 config CRYPTO_SHA1
0914         tristate "SHA1 digest algorithm"
0915         select CRYPTO_HASH
0916         select CRYPTO_LIB_SHA1
0917         help
0918           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
0919 
0920 config CRYPTO_SHA1_SSSE3
0921         tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
0922         depends on X86 && 64BIT
0923         select CRYPTO_SHA1
0924         select CRYPTO_HASH
0925         help
0926           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0927           using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
0928           Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
0929           when available.
0930 
0931 config CRYPTO_SHA256_SSSE3
0932         tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
0933         depends on X86 && 64BIT
0934         select CRYPTO_SHA256
0935         select CRYPTO_HASH
0936         help
0937           SHA-256 secure hash standard (DFIPS 180-2) implemented
0938           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
0939           Extensions version 1 (AVX1), or Advanced Vector Extensions
0940           version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
0941           Instructions) when available.
0942 
0943 config CRYPTO_SHA512_SSSE3
0944         tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
0945         depends on X86 && 64BIT
0946         select CRYPTO_SHA512
0947         select CRYPTO_HASH
0948         help
0949           SHA-512 secure hash standard (DFIPS 180-2) implemented
0950           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
0951           Extensions version 1 (AVX1), or Advanced Vector Extensions
0952           version 2 (AVX2) instructions, when available.
0953 
0954 config CRYPTO_SHA512_S390
0955         tristate "SHA384 and SHA512 digest algorithm"
0956         depends on S390
0957         select CRYPTO_HASH
0958         help
0959           This is the s390 hardware accelerated implementation of the
0960           SHA512 secure hash standard.
0961 
0962           It is available as of z10.
0963 
0964 config CRYPTO_SHA1_OCTEON
0965         tristate "SHA1 digest algorithm (OCTEON)"
0966         depends on CPU_CAVIUM_OCTEON
0967         select CRYPTO_SHA1
0968         select CRYPTO_HASH
0969         help
0970           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0971           using OCTEON crypto instructions, when available.
0972 
0973 config CRYPTO_SHA1_SPARC64
0974         tristate "SHA1 digest algorithm (SPARC64)"
0975         depends on SPARC64
0976         select CRYPTO_SHA1
0977         select CRYPTO_HASH
0978         help
0979           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0980           using sparc64 crypto instructions, when available.
0981 
0982 config CRYPTO_SHA1_PPC
0983         tristate "SHA1 digest algorithm (powerpc)"
0984         depends on PPC
0985         help
0986           This is the powerpc hardware accelerated implementation of the
0987           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
0988 
0989 config CRYPTO_SHA1_PPC_SPE
0990         tristate "SHA1 digest algorithm (PPC SPE)"
0991         depends on PPC && SPE
0992         help
0993           SHA-1 secure hash standard (DFIPS 180-4) implemented
0994           using powerpc SPE SIMD instruction set.
0995 
0996 config CRYPTO_SHA1_S390
0997         tristate "SHA1 digest algorithm"
0998         depends on S390
0999         select CRYPTO_HASH
1000         help
1001           This is the s390 hardware accelerated implementation of the
1002           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
1003 
1004           It is available as of z990.
1005 
1006 config CRYPTO_SHA256
1007         tristate "SHA224 and SHA256 digest algorithm"
1008         select CRYPTO_HASH
1009         select CRYPTO_LIB_SHA256
1010         help
1011           SHA256 secure hash standard (DFIPS 180-2).
1012 
1013           This version of SHA implements a 256 bit hash with 128 bits of
1014           security against collision attacks.
1015 
1016           This code also includes SHA-224, a 224 bit hash with 112 bits
1017           of security against collision attacks.
1018 
1019 config CRYPTO_SHA256_PPC_SPE
1020         tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
1021         depends on PPC && SPE
1022         select CRYPTO_SHA256
1023         select CRYPTO_HASH
1024         help
1025           SHA224 and SHA256 secure hash standard (DFIPS 180-2)
1026           implemented using powerpc SPE SIMD instruction set.
1027 
1028 config CRYPTO_SHA256_OCTEON
1029         tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
1030         depends on CPU_CAVIUM_OCTEON
1031         select CRYPTO_SHA256
1032         select CRYPTO_HASH
1033         help
1034           SHA-256 secure hash standard (DFIPS 180-2) implemented
1035           using OCTEON crypto instructions, when available.
1036 
1037 config CRYPTO_SHA256_SPARC64
1038         tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
1039         depends on SPARC64
1040         select CRYPTO_SHA256
1041         select CRYPTO_HASH
1042         help
1043           SHA-256 secure hash standard (DFIPS 180-2) implemented
1044           using sparc64 crypto instructions, when available.
1045 
1046 config CRYPTO_SHA256_S390
1047         tristate "SHA256 digest algorithm"
1048         depends on S390
1049         select CRYPTO_HASH
1050         help
1051           This is the s390 hardware accelerated implementation of the
1052           SHA256 secure hash standard (DFIPS 180-2).
1053 
1054           It is available as of z9.
1055 
1056 config CRYPTO_SHA512
1057         tristate "SHA384 and SHA512 digest algorithms"
1058         select CRYPTO_HASH
1059         help
1060           SHA512 secure hash standard (DFIPS 180-2).
1061 
1062           This version of SHA implements a 512 bit hash with 256 bits of
1063           security against collision attacks.
1064 
1065           This code also includes SHA-384, a 384 bit hash with 192 bits
1066           of security against collision attacks.
1067 
1068 config CRYPTO_SHA512_OCTEON
1069         tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1070         depends on CPU_CAVIUM_OCTEON
1071         select CRYPTO_SHA512
1072         select CRYPTO_HASH
1073         help
1074           SHA-512 secure hash standard (DFIPS 180-2) implemented
1075           using OCTEON crypto instructions, when available.
1076 
1077 config CRYPTO_SHA512_SPARC64
1078         tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1079         depends on SPARC64
1080         select CRYPTO_SHA512
1081         select CRYPTO_HASH
1082         help
1083           SHA-512 secure hash standard (DFIPS 180-2) implemented
1084           using sparc64 crypto instructions, when available.
1085 
1086 config CRYPTO_SHA3
1087         tristate "SHA3 digest algorithm"
1088         select CRYPTO_HASH
1089         help
1090           SHA-3 secure hash standard (DFIPS 202). It's based on
1091           cryptographic sponge function family called Keccak.
1092 
1093           References:
1094           http://keccak.noekeon.org/
1095 
1096 config CRYPTO_SHA3_256_S390
1097         tristate "SHA3_224 and SHA3_256 digest algorithm"
1098         depends on S390
1099         select CRYPTO_HASH
1100         help
1101           This is the s390 hardware accelerated implementation of the
1102           SHA3_256 secure hash standard.
1103 
1104           It is available as of z14.
1105 
1106 config CRYPTO_SHA3_512_S390
1107         tristate "SHA3_384 and SHA3_512 digest algorithm"
1108         depends on S390
1109         select CRYPTO_HASH
1110         help
1111           This is the s390 hardware accelerated implementation of the
1112           SHA3_512 secure hash standard.
1113 
1114           It is available as of z14.
1115 
1116 config CRYPTO_SM3
1117         tristate
1118 
1119 config CRYPTO_SM3_GENERIC
1120         tristate "SM3 digest algorithm"
1121         select CRYPTO_HASH
1122         select CRYPTO_SM3
1123         help
1124           SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1125           It is part of the Chinese Commercial Cryptography suite.
1126 
1127           References:
1128           http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1129           https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1130 
1131 config CRYPTO_SM3_AVX_X86_64
1132         tristate "SM3 digest algorithm (x86_64/AVX)"
1133         depends on X86 && 64BIT
1134         select CRYPTO_HASH
1135         select CRYPTO_SM3
1136         help
1137           SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1138           It is part of the Chinese Commercial Cryptography suite. This is
1139           SM3 optimized implementation using Advanced Vector Extensions (AVX)
1140           when available.
1141 
1142           If unsure, say N.
1143 
1144 config CRYPTO_STREEBOG
1145         tristate "Streebog Hash Function"
1146         select CRYPTO_HASH
1147         help
1148           Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1149           cryptographic standard algorithms (called GOST algorithms).
1150           This setting enables two hash algorithms with 256 and 512 bits output.
1151 
1152           References:
1153           https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1154           https://tools.ietf.org/html/rfc6986
1155 
1156 config CRYPTO_WP512
1157         tristate "Whirlpool digest algorithms"
1158         select CRYPTO_HASH
1159         help
1160           Whirlpool hash algorithm 512, 384 and 256-bit hashes
1161 
1162           Whirlpool-512 is part of the NESSIE cryptographic primitives.
1163           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1164 
1165           See also:
1166           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
1167 
1168 config CRYPTO_GHASH_CLMUL_NI_INTEL
1169         tristate "GHASH hash function (CLMUL-NI accelerated)"
1170         depends on X86 && 64BIT
1171         select CRYPTO_CRYPTD
1172         help
1173           This is the x86_64 CLMUL-NI accelerated implementation of
1174           GHASH, the hash function used in GCM (Galois/Counter mode).
1175 
1176 config CRYPTO_GHASH_S390
1177         tristate "GHASH hash function"
1178         depends on S390
1179         select CRYPTO_HASH
1180         help
1181           This is the s390 hardware accelerated implementation of GHASH,
1182           the hash function used in GCM (Galois/Counter mode).
1183 
1184           It is available as of z196.
1185 
1186 comment "Ciphers"
1187 
1188 config CRYPTO_AES
1189         tristate "AES cipher algorithms"
1190         select CRYPTO_ALGAPI
1191         select CRYPTO_LIB_AES
1192         help
1193           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1194           algorithm.
1195 
1196           Rijndael appears to be consistently a very good performer in
1197           both hardware and software across a wide range of computing
1198           environments regardless of its use in feedback or non-feedback
1199           modes. Its key setup time is excellent, and its key agility is
1200           good. Rijndael's very low memory requirements make it very well
1201           suited for restricted-space environments, in which it also
1202           demonstrates excellent performance. Rijndael's operations are
1203           among the easiest to defend against power and timing attacks.
1204 
1205           The AES specifies three key sizes: 128, 192 and 256 bits
1206 
1207           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1208 
1209 config CRYPTO_AES_TI
1210         tristate "Fixed time AES cipher"
1211         select CRYPTO_ALGAPI
1212         select CRYPTO_LIB_AES
1213         help
1214           This is a generic implementation of AES that attempts to eliminate
1215           data dependent latencies as much as possible without affecting
1216           performance too much. It is intended for use by the generic CCM
1217           and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1218           solely on encryption (although decryption is supported as well, but
1219           with a more dramatic performance hit)
1220 
1221           Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1222           8 for decryption), this implementation only uses just two S-boxes of
1223           256 bytes each, and attempts to eliminate data dependent latencies by
1224           prefetching the entire table into the cache at the start of each
1225           block. Interrupts are also disabled to avoid races where cachelines
1226           are evicted when the CPU is interrupted to do something else.
1227 
1228 config CRYPTO_AES_NI_INTEL
1229         tristate "AES cipher algorithms (AES-NI)"
1230         depends on X86
1231         select CRYPTO_AEAD
1232         select CRYPTO_LIB_AES
1233         select CRYPTO_ALGAPI
1234         select CRYPTO_SKCIPHER
1235         select CRYPTO_SIMD
1236         help
1237           Use Intel AES-NI instructions for AES algorithm.
1238 
1239           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1240           algorithm.
1241 
1242           Rijndael appears to be consistently a very good performer in
1243           both hardware and software across a wide range of computing
1244           environments regardless of its use in feedback or non-feedback
1245           modes. Its key setup time is excellent, and its key agility is
1246           good. Rijndael's very low memory requirements make it very well
1247           suited for restricted-space environments, in which it also
1248           demonstrates excellent performance. Rijndael's operations are
1249           among the easiest to defend against power and timing attacks.
1250 
1251           The AES specifies three key sizes: 128, 192 and 256 bits
1252 
1253           See <http://csrc.nist.gov/encryption/aes/> for more information.
1254 
1255           In addition to AES cipher algorithm support, the acceleration
1256           for some popular block cipher mode is supported too, including
1257           ECB, CBC, LRW, XTS. The 64 bit version has additional
1258           acceleration for CTR and XCTR.
1259 
1260 config CRYPTO_AES_SPARC64
1261         tristate "AES cipher algorithms (SPARC64)"
1262         depends on SPARC64
1263         select CRYPTO_SKCIPHER
1264         help
1265           Use SPARC64 crypto opcodes for AES algorithm.
1266 
1267           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1268           algorithm.
1269 
1270           Rijndael appears to be consistently a very good performer in
1271           both hardware and software across a wide range of computing
1272           environments regardless of its use in feedback or non-feedback
1273           modes. Its key setup time is excellent, and its key agility is
1274           good. Rijndael's very low memory requirements make it very well
1275           suited for restricted-space environments, in which it also
1276           demonstrates excellent performance. Rijndael's operations are
1277           among the easiest to defend against power and timing attacks.
1278 
1279           The AES specifies three key sizes: 128, 192 and 256 bits
1280 
1281           See <http://csrc.nist.gov/encryption/aes/> for more information.
1282 
1283           In addition to AES cipher algorithm support, the acceleration
1284           for some popular block cipher mode is supported too, including
1285           ECB and CBC.
1286 
1287 config CRYPTO_AES_PPC_SPE
1288         tristate "AES cipher algorithms (PPC SPE)"
1289         depends on PPC && SPE
1290         select CRYPTO_SKCIPHER
1291         help
1292           AES cipher algorithms (FIPS-197). Additionally the acceleration
1293           for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1294           This module should only be used for low power (router) devices
1295           without hardware AES acceleration (e.g. caam crypto). It reduces the
1296           size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1297           timining attacks. Nevertheless it might be not as secure as other
1298           architecture specific assembler implementations that work on 1KB
1299           tables or 256 bytes S-boxes.
1300 
1301 config CRYPTO_AES_S390
1302         tristate "AES cipher algorithms"
1303         depends on S390
1304         select CRYPTO_ALGAPI
1305         select CRYPTO_SKCIPHER
1306         help
1307           This is the s390 hardware accelerated implementation of the
1308           AES cipher algorithms (FIPS-197).
1309 
1310           As of z9 the ECB and CBC modes are hardware accelerated
1311           for 128 bit keys.
1312           As of z10 the ECB and CBC modes are hardware accelerated
1313           for all AES key sizes.
1314           As of z196 the CTR mode is hardware accelerated for all AES
1315           key sizes and XTS mode is hardware accelerated for 256 and
1316           512 bit keys.
1317 
1318 config CRYPTO_ANUBIS
1319         tristate "Anubis cipher algorithm"
1320         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1321         select CRYPTO_ALGAPI
1322         help
1323           Anubis cipher algorithm.
1324 
1325           Anubis is a variable key length cipher which can use keys from
1326           128 bits to 320 bits in length.  It was evaluated as a entrant
1327           in the NESSIE competition.
1328 
1329           See also:
1330           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1331           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1332 
1333 config CRYPTO_ARC4
1334         tristate "ARC4 cipher algorithm"
1335         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1336         select CRYPTO_SKCIPHER
1337         select CRYPTO_LIB_ARC4
1338         help
1339           ARC4 cipher algorithm.
1340 
1341           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1342           bits in length.  This algorithm is required for driver-based
1343           WEP, but it should not be for other purposes because of the
1344           weakness of the algorithm.
1345 
1346 config CRYPTO_BLOWFISH
1347         tristate "Blowfish cipher algorithm"
1348         select CRYPTO_ALGAPI
1349         select CRYPTO_BLOWFISH_COMMON
1350         help
1351           Blowfish cipher algorithm, by Bruce Schneier.
1352 
1353           This is a variable key length cipher which can use keys from 32
1354           bits to 448 bits in length.  It's fast, simple and specifically
1355           designed for use on "large microprocessors".
1356 
1357           See also:
1358           <https://www.schneier.com/blowfish.html>
1359 
1360 config CRYPTO_BLOWFISH_COMMON
1361         tristate
1362         help
1363           Common parts of the Blowfish cipher algorithm shared by the
1364           generic c and the assembler implementations.
1365 
1366           See also:
1367           <https://www.schneier.com/blowfish.html>
1368 
1369 config CRYPTO_BLOWFISH_X86_64
1370         tristate "Blowfish cipher algorithm (x86_64)"
1371         depends on X86 && 64BIT
1372         select CRYPTO_SKCIPHER
1373         select CRYPTO_BLOWFISH_COMMON
1374         imply CRYPTO_CTR
1375         help
1376           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1377 
1378           This is a variable key length cipher which can use keys from 32
1379           bits to 448 bits in length.  It's fast, simple and specifically
1380           designed for use on "large microprocessors".
1381 
1382           See also:
1383           <https://www.schneier.com/blowfish.html>
1384 
1385 config CRYPTO_CAMELLIA
1386         tristate "Camellia cipher algorithms"
1387         select CRYPTO_ALGAPI
1388         help
1389           Camellia cipher algorithms module.
1390 
1391           Camellia is a symmetric key block cipher developed jointly
1392           at NTT and Mitsubishi Electric Corporation.
1393 
1394           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1395 
1396           See also:
1397           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1398 
1399 config CRYPTO_CAMELLIA_X86_64
1400         tristate "Camellia cipher algorithm (x86_64)"
1401         depends on X86 && 64BIT
1402         select CRYPTO_SKCIPHER
1403         imply CRYPTO_CTR
1404         help
1405           Camellia cipher algorithm module (x86_64).
1406 
1407           Camellia is a symmetric key block cipher developed jointly
1408           at NTT and Mitsubishi Electric Corporation.
1409 
1410           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1411 
1412           See also:
1413           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1414 
1415 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1416         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1417         depends on X86 && 64BIT
1418         select CRYPTO_SKCIPHER
1419         select CRYPTO_CAMELLIA_X86_64
1420         select CRYPTO_SIMD
1421         imply CRYPTO_XTS
1422         help
1423           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1424 
1425           Camellia is a symmetric key block cipher developed jointly
1426           at NTT and Mitsubishi Electric Corporation.
1427 
1428           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1429 
1430           See also:
1431           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1432 
1433 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1434         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1435         depends on X86 && 64BIT
1436         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1437         help
1438           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1439 
1440           Camellia is a symmetric key block cipher developed jointly
1441           at NTT and Mitsubishi Electric Corporation.
1442 
1443           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1444 
1445           See also:
1446           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1447 
1448 config CRYPTO_CAMELLIA_SPARC64
1449         tristate "Camellia cipher algorithm (SPARC64)"
1450         depends on SPARC64
1451         select CRYPTO_ALGAPI
1452         select CRYPTO_SKCIPHER
1453         help
1454           Camellia cipher algorithm module (SPARC64).
1455 
1456           Camellia is a symmetric key block cipher developed jointly
1457           at NTT and Mitsubishi Electric Corporation.
1458 
1459           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1460 
1461           See also:
1462           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1463 
1464 config CRYPTO_CAST_COMMON
1465         tristate
1466         help
1467           Common parts of the CAST cipher algorithms shared by the
1468           generic c and the assembler implementations.
1469 
1470 config CRYPTO_CAST5
1471         tristate "CAST5 (CAST-128) cipher algorithm"
1472         select CRYPTO_ALGAPI
1473         select CRYPTO_CAST_COMMON
1474         help
1475           The CAST5 encryption algorithm (synonymous with CAST-128) is
1476           described in RFC2144.
1477 
1478 config CRYPTO_CAST5_AVX_X86_64
1479         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1480         depends on X86 && 64BIT
1481         select CRYPTO_SKCIPHER
1482         select CRYPTO_CAST5
1483         select CRYPTO_CAST_COMMON
1484         select CRYPTO_SIMD
1485         imply CRYPTO_CTR
1486         help
1487           The CAST5 encryption algorithm (synonymous with CAST-128) is
1488           described in RFC2144.
1489 
1490           This module provides the Cast5 cipher algorithm that processes
1491           sixteen blocks parallel using the AVX instruction set.
1492 
1493 config CRYPTO_CAST6
1494         tristate "CAST6 (CAST-256) cipher algorithm"
1495         select CRYPTO_ALGAPI
1496         select CRYPTO_CAST_COMMON
1497         help
1498           The CAST6 encryption algorithm (synonymous with CAST-256) is
1499           described in RFC2612.
1500 
1501 config CRYPTO_CAST6_AVX_X86_64
1502         tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1503         depends on X86 && 64BIT
1504         select CRYPTO_SKCIPHER
1505         select CRYPTO_CAST6
1506         select CRYPTO_CAST_COMMON
1507         select CRYPTO_SIMD
1508         imply CRYPTO_XTS
1509         imply CRYPTO_CTR
1510         help
1511           The CAST6 encryption algorithm (synonymous with CAST-256) is
1512           described in RFC2612.
1513 
1514           This module provides the Cast6 cipher algorithm that processes
1515           eight blocks parallel using the AVX instruction set.
1516 
1517 config CRYPTO_DES
1518         tristate "DES and Triple DES EDE cipher algorithms"
1519         select CRYPTO_ALGAPI
1520         select CRYPTO_LIB_DES
1521         help
1522           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1523 
1524 config CRYPTO_DES_SPARC64
1525         tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1526         depends on SPARC64
1527         select CRYPTO_ALGAPI
1528         select CRYPTO_LIB_DES
1529         select CRYPTO_SKCIPHER
1530         help
1531           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1532           optimized using SPARC64 crypto opcodes.
1533 
1534 config CRYPTO_DES3_EDE_X86_64
1535         tristate "Triple DES EDE cipher algorithm (x86-64)"
1536         depends on X86 && 64BIT
1537         select CRYPTO_SKCIPHER
1538         select CRYPTO_LIB_DES
1539         imply CRYPTO_CTR
1540         help
1541           Triple DES EDE (FIPS 46-3) algorithm.
1542 
1543           This module provides implementation of the Triple DES EDE cipher
1544           algorithm that is optimized for x86-64 processors. Two versions of
1545           algorithm are provided; regular processing one input block and
1546           one that processes three blocks parallel.
1547 
1548 config CRYPTO_DES_S390
1549         tristate "DES and Triple DES cipher algorithms"
1550         depends on S390
1551         select CRYPTO_ALGAPI
1552         select CRYPTO_SKCIPHER
1553         select CRYPTO_LIB_DES
1554         help
1555           This is the s390 hardware accelerated implementation of the
1556           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1557 
1558           As of z990 the ECB and CBC mode are hardware accelerated.
1559           As of z196 the CTR mode is hardware accelerated.
1560 
1561 config CRYPTO_FCRYPT
1562         tristate "FCrypt cipher algorithm"
1563         select CRYPTO_ALGAPI
1564         select CRYPTO_SKCIPHER
1565         help
1566           FCrypt algorithm used by RxRPC.
1567 
1568 config CRYPTO_KHAZAD
1569         tristate "Khazad cipher algorithm"
1570         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1571         select CRYPTO_ALGAPI
1572         help
1573           Khazad cipher algorithm.
1574 
1575           Khazad was a finalist in the initial NESSIE competition.  It is
1576           an algorithm optimized for 64-bit processors with good performance
1577           on 32-bit processors.  Khazad uses an 128 bit key size.
1578 
1579           See also:
1580           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1581 
1582 config CRYPTO_CHACHA20
1583         tristate "ChaCha stream cipher algorithms"
1584         select CRYPTO_LIB_CHACHA_GENERIC
1585         select CRYPTO_SKCIPHER
1586         help
1587           The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
1588 
1589           ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1590           Bernstein and further specified in RFC7539 for use in IETF protocols.
1591           This is the portable C implementation of ChaCha20.  See also:
1592           <https://cr.yp.to/chacha/chacha-20080128.pdf>
1593 
1594           XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1595           rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
1596           from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1597           while provably retaining ChaCha20's security.  See also:
1598           <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1599 
1600           XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1601           reduced security margin but increased performance.  It can be needed
1602           in some performance-sensitive scenarios.
1603 
1604 config CRYPTO_CHACHA20_X86_64
1605         tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
1606         depends on X86 && 64BIT
1607         select CRYPTO_SKCIPHER
1608         select CRYPTO_LIB_CHACHA_GENERIC
1609         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1610         help
1611           SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1612           XChaCha20, and XChaCha12 stream ciphers.
1613 
1614 config CRYPTO_CHACHA_MIPS
1615         tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1616         depends on CPU_MIPS32_R2
1617         select CRYPTO_SKCIPHER
1618         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1619 
1620 config CRYPTO_CHACHA_S390
1621         tristate "ChaCha20 stream cipher"
1622         depends on S390
1623         select CRYPTO_SKCIPHER
1624         select CRYPTO_LIB_CHACHA_GENERIC
1625         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1626         help
1627           This is the s390 SIMD implementation of the ChaCha20 stream
1628           cipher (RFC 7539).
1629 
1630           It is available as of z13.
1631 
1632 config CRYPTO_SEED
1633         tristate "SEED cipher algorithm"
1634         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1635         select CRYPTO_ALGAPI
1636         help
1637           SEED cipher algorithm (RFC4269).
1638 
1639           SEED is a 128-bit symmetric key block cipher that has been
1640           developed by KISA (Korea Information Security Agency) as a
1641           national standard encryption algorithm of the Republic of Korea.
1642           It is a 16 round block cipher with the key size of 128 bit.
1643 
1644           See also:
1645           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1646 
1647 config CRYPTO_ARIA
1648         tristate "ARIA cipher algorithm"
1649         select CRYPTO_ALGAPI
1650         help
1651           ARIA cipher algorithm (RFC5794).
1652 
1653           ARIA is a standard encryption algorithm of the Republic of Korea.
1654           The ARIA specifies three key sizes and rounds.
1655           128-bit: 12 rounds.
1656           192-bit: 14 rounds.
1657           256-bit: 16 rounds.
1658 
1659           See also:
1660           <https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do>
1661 
1662 config CRYPTO_SERPENT
1663         tristate "Serpent cipher algorithm"
1664         select CRYPTO_ALGAPI
1665         help
1666           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1667 
1668           Keys are allowed to be from 0 to 256 bits in length, in steps
1669           of 8 bits.
1670 
1671           See also:
1672           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1673 
1674 config CRYPTO_SERPENT_SSE2_X86_64
1675         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1676         depends on X86 && 64BIT
1677         select CRYPTO_SKCIPHER
1678         select CRYPTO_SERPENT
1679         select CRYPTO_SIMD
1680         imply CRYPTO_CTR
1681         help
1682           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1683 
1684           Keys are allowed to be from 0 to 256 bits in length, in steps
1685           of 8 bits.
1686 
1687           This module provides Serpent cipher algorithm that processes eight
1688           blocks parallel using SSE2 instruction set.
1689 
1690           See also:
1691           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1692 
1693 config CRYPTO_SERPENT_SSE2_586
1694         tristate "Serpent cipher algorithm (i586/SSE2)"
1695         depends on X86 && !64BIT
1696         select CRYPTO_SKCIPHER
1697         select CRYPTO_SERPENT
1698         select CRYPTO_SIMD
1699         imply CRYPTO_CTR
1700         help
1701           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1702 
1703           Keys are allowed to be from 0 to 256 bits in length, in steps
1704           of 8 bits.
1705 
1706           This module provides Serpent cipher algorithm that processes four
1707           blocks parallel using SSE2 instruction set.
1708 
1709           See also:
1710           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1711 
1712 config CRYPTO_SERPENT_AVX_X86_64
1713         tristate "Serpent cipher algorithm (x86_64/AVX)"
1714         depends on X86 && 64BIT
1715         select CRYPTO_SKCIPHER
1716         select CRYPTO_SERPENT
1717         select CRYPTO_SIMD
1718         imply CRYPTO_XTS
1719         imply CRYPTO_CTR
1720         help
1721           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1722 
1723           Keys are allowed to be from 0 to 256 bits in length, in steps
1724           of 8 bits.
1725 
1726           This module provides the Serpent cipher algorithm that processes
1727           eight blocks parallel using the AVX instruction set.
1728 
1729           See also:
1730           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1731 
1732 config CRYPTO_SERPENT_AVX2_X86_64
1733         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1734         depends on X86 && 64BIT
1735         select CRYPTO_SERPENT_AVX_X86_64
1736         help
1737           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1738 
1739           Keys are allowed to be from 0 to 256 bits in length, in steps
1740           of 8 bits.
1741 
1742           This module provides Serpent cipher algorithm that processes 16
1743           blocks parallel using AVX2 instruction set.
1744 
1745           See also:
1746           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1747 
1748 config CRYPTO_SM4
1749         tristate
1750 
1751 config CRYPTO_SM4_GENERIC
1752         tristate "SM4 cipher algorithm"
1753         select CRYPTO_ALGAPI
1754         select CRYPTO_SM4
1755         help
1756           SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1757 
1758           SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1759           Organization of State Commercial Administration of China (OSCCA)
1760           as an authorized cryptographic algorithms for the use within China.
1761 
1762           SMS4 was originally created for use in protecting wireless
1763           networks, and is mandated in the Chinese National Standard for
1764           Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1765           (GB.15629.11-2003).
1766 
1767           The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1768           standardized through TC 260 of the Standardization Administration
1769           of the People's Republic of China (SAC).
1770 
1771           The input, output, and key of SMS4 are each 128 bits.
1772 
1773           See also: <https://eprint.iacr.org/2008/329.pdf>
1774 
1775           If unsure, say N.
1776 
1777 config CRYPTO_SM4_AESNI_AVX_X86_64
1778         tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)"
1779         depends on X86 && 64BIT
1780         select CRYPTO_SKCIPHER
1781         select CRYPTO_SIMD
1782         select CRYPTO_ALGAPI
1783         select CRYPTO_SM4
1784         help
1785           SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX).
1786 
1787           SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1788           Organization of State Commercial Administration of China (OSCCA)
1789           as an authorized cryptographic algorithms for the use within China.
1790 
1791           This is SM4 optimized implementation using AES-NI/AVX/x86_64
1792           instruction set for block cipher. Through two affine transforms,
1793           we can use the AES S-Box to simulate the SM4 S-Box to achieve the
1794           effect of instruction acceleration.
1795 
1796           If unsure, say N.
1797 
1798 config CRYPTO_SM4_AESNI_AVX2_X86_64
1799         tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)"
1800         depends on X86 && 64BIT
1801         select CRYPTO_SKCIPHER
1802         select CRYPTO_SIMD
1803         select CRYPTO_ALGAPI
1804         select CRYPTO_SM4
1805         select CRYPTO_SM4_AESNI_AVX_X86_64
1806         help
1807           SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2).
1808 
1809           SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1810           Organization of State Commercial Administration of China (OSCCA)
1811           as an authorized cryptographic algorithms for the use within China.
1812 
1813           This is SM4 optimized implementation using AES-NI/AVX2/x86_64
1814           instruction set for block cipher. Through two affine transforms,
1815           we can use the AES S-Box to simulate the SM4 S-Box to achieve the
1816           effect of instruction acceleration.
1817 
1818           If unsure, say N.
1819 
1820 config CRYPTO_TEA
1821         tristate "TEA, XTEA and XETA cipher algorithms"
1822         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1823         select CRYPTO_ALGAPI
1824         help
1825           TEA cipher algorithm.
1826 
1827           Tiny Encryption Algorithm is a simple cipher that uses
1828           many rounds for security.  It is very fast and uses
1829           little memory.
1830 
1831           Xtendend Tiny Encryption Algorithm is a modification to
1832           the TEA algorithm to address a potential key weakness
1833           in the TEA algorithm.
1834 
1835           Xtendend Encryption Tiny Algorithm is a mis-implementation
1836           of the XTEA algorithm for compatibility purposes.
1837 
1838 config CRYPTO_TWOFISH
1839         tristate "Twofish cipher algorithm"
1840         select CRYPTO_ALGAPI
1841         select CRYPTO_TWOFISH_COMMON
1842         help
1843           Twofish cipher algorithm.
1844 
1845           Twofish was submitted as an AES (Advanced Encryption Standard)
1846           candidate cipher by researchers at CounterPane Systems.  It is a
1847           16 round block cipher supporting key sizes of 128, 192, and 256
1848           bits.
1849 
1850           See also:
1851           <https://www.schneier.com/twofish.html>
1852 
1853 config CRYPTO_TWOFISH_COMMON
1854         tristate
1855         help
1856           Common parts of the Twofish cipher algorithm shared by the
1857           generic c and the assembler implementations.
1858 
1859 config CRYPTO_TWOFISH_586
1860         tristate "Twofish cipher algorithms (i586)"
1861         depends on (X86 || UML_X86) && !64BIT
1862         select CRYPTO_ALGAPI
1863         select CRYPTO_TWOFISH_COMMON
1864         imply CRYPTO_CTR
1865         help
1866           Twofish cipher algorithm.
1867 
1868           Twofish was submitted as an AES (Advanced Encryption Standard)
1869           candidate cipher by researchers at CounterPane Systems.  It is a
1870           16 round block cipher supporting key sizes of 128, 192, and 256
1871           bits.
1872 
1873           See also:
1874           <https://www.schneier.com/twofish.html>
1875 
1876 config CRYPTO_TWOFISH_X86_64
1877         tristate "Twofish cipher algorithm (x86_64)"
1878         depends on (X86 || UML_X86) && 64BIT
1879         select CRYPTO_ALGAPI
1880         select CRYPTO_TWOFISH_COMMON
1881         imply CRYPTO_CTR
1882         help
1883           Twofish cipher algorithm (x86_64).
1884 
1885           Twofish was submitted as an AES (Advanced Encryption Standard)
1886           candidate cipher by researchers at CounterPane Systems.  It is a
1887           16 round block cipher supporting key sizes of 128, 192, and 256
1888           bits.
1889 
1890           See also:
1891           <https://www.schneier.com/twofish.html>
1892 
1893 config CRYPTO_TWOFISH_X86_64_3WAY
1894         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1895         depends on X86 && 64BIT
1896         select CRYPTO_SKCIPHER
1897         select CRYPTO_TWOFISH_COMMON
1898         select CRYPTO_TWOFISH_X86_64
1899         help
1900           Twofish cipher algorithm (x86_64, 3-way parallel).
1901 
1902           Twofish was submitted as an AES (Advanced Encryption Standard)
1903           candidate cipher by researchers at CounterPane Systems.  It is a
1904           16 round block cipher supporting key sizes of 128, 192, and 256
1905           bits.
1906 
1907           This module provides Twofish cipher algorithm that processes three
1908           blocks parallel, utilizing resources of out-of-order CPUs better.
1909 
1910           See also:
1911           <https://www.schneier.com/twofish.html>
1912 
1913 config CRYPTO_TWOFISH_AVX_X86_64
1914         tristate "Twofish cipher algorithm (x86_64/AVX)"
1915         depends on X86 && 64BIT
1916         select CRYPTO_SKCIPHER
1917         select CRYPTO_SIMD
1918         select CRYPTO_TWOFISH_COMMON
1919         select CRYPTO_TWOFISH_X86_64
1920         select CRYPTO_TWOFISH_X86_64_3WAY
1921         imply CRYPTO_XTS
1922         help
1923           Twofish cipher algorithm (x86_64/AVX).
1924 
1925           Twofish was submitted as an AES (Advanced Encryption Standard)
1926           candidate cipher by researchers at CounterPane Systems.  It is a
1927           16 round block cipher supporting key sizes of 128, 192, and 256
1928           bits.
1929 
1930           This module provides the Twofish cipher algorithm that processes
1931           eight blocks parallel using the AVX Instruction Set.
1932 
1933           See also:
1934           <https://www.schneier.com/twofish.html>
1935 
1936 comment "Compression"
1937 
1938 config CRYPTO_DEFLATE
1939         tristate "Deflate compression algorithm"
1940         select CRYPTO_ALGAPI
1941         select CRYPTO_ACOMP2
1942         select ZLIB_INFLATE
1943         select ZLIB_DEFLATE
1944         help
1945           This is the Deflate algorithm (RFC1951), specified for use in
1946           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1947 
1948           You will most probably want this if using IPSec.
1949 
1950 config CRYPTO_LZO
1951         tristate "LZO compression algorithm"
1952         select CRYPTO_ALGAPI
1953         select CRYPTO_ACOMP2
1954         select LZO_COMPRESS
1955         select LZO_DECOMPRESS
1956         help
1957           This is the LZO algorithm.
1958 
1959 config CRYPTO_842
1960         tristate "842 compression algorithm"
1961         select CRYPTO_ALGAPI
1962         select CRYPTO_ACOMP2
1963         select 842_COMPRESS
1964         select 842_DECOMPRESS
1965         help
1966           This is the 842 algorithm.
1967 
1968 config CRYPTO_LZ4
1969         tristate "LZ4 compression algorithm"
1970         select CRYPTO_ALGAPI
1971         select CRYPTO_ACOMP2
1972         select LZ4_COMPRESS
1973         select LZ4_DECOMPRESS
1974         help
1975           This is the LZ4 algorithm.
1976 
1977 config CRYPTO_LZ4HC
1978         tristate "LZ4HC compression algorithm"
1979         select CRYPTO_ALGAPI
1980         select CRYPTO_ACOMP2
1981         select LZ4HC_COMPRESS
1982         select LZ4_DECOMPRESS
1983         help
1984           This is the LZ4 high compression mode algorithm.
1985 
1986 config CRYPTO_ZSTD
1987         tristate "Zstd compression algorithm"
1988         select CRYPTO_ALGAPI
1989         select CRYPTO_ACOMP2
1990         select ZSTD_COMPRESS
1991         select ZSTD_DECOMPRESS
1992         help
1993           This is the zstd algorithm.
1994 
1995 comment "Random Number Generation"
1996 
1997 config CRYPTO_ANSI_CPRNG
1998         tristate "Pseudo Random Number Generation for Cryptographic modules"
1999         select CRYPTO_AES
2000         select CRYPTO_RNG
2001         help
2002           This option enables the generic pseudo random number generator
2003           for cryptographic modules.  Uses the Algorithm specified in
2004           ANSI X9.31 A.2.4. Note that this option must be enabled if
2005           CRYPTO_FIPS is selected
2006 
2007 menuconfig CRYPTO_DRBG_MENU
2008         tristate "NIST SP800-90A DRBG"
2009         help
2010           NIST SP800-90A compliant DRBG. In the following submenu, one or
2011           more of the DRBG types must be selected.
2012 
2013 if CRYPTO_DRBG_MENU
2014 
2015 config CRYPTO_DRBG_HMAC
2016         bool
2017         default y
2018         select CRYPTO_HMAC
2019         select CRYPTO_SHA512
2020 
2021 config CRYPTO_DRBG_HASH
2022         bool "Enable Hash DRBG"
2023         select CRYPTO_SHA256
2024         help
2025           Enable the Hash DRBG variant as defined in NIST SP800-90A.
2026 
2027 config CRYPTO_DRBG_CTR
2028         bool "Enable CTR DRBG"
2029         select CRYPTO_AES
2030         select CRYPTO_CTR
2031         help
2032           Enable the CTR DRBG variant as defined in NIST SP800-90A.
2033 
2034 config CRYPTO_DRBG
2035         tristate
2036         default CRYPTO_DRBG_MENU
2037         select CRYPTO_RNG
2038         select CRYPTO_JITTERENTROPY
2039 
2040 endif   # if CRYPTO_DRBG_MENU
2041 
2042 config CRYPTO_JITTERENTROPY
2043         tristate "Jitterentropy Non-Deterministic Random Number Generator"
2044         select CRYPTO_RNG
2045         help
2046           The Jitterentropy RNG is a noise that is intended
2047           to provide seed to another RNG. The RNG does not
2048           perform any cryptographic whitening of the generated
2049           random numbers. This Jitterentropy RNG registers with
2050           the kernel crypto API and can be used by any caller.
2051 
2052 config CRYPTO_KDF800108_CTR
2053         tristate
2054         select CRYPTO_HMAC
2055         select CRYPTO_SHA256
2056 
2057 config CRYPTO_USER_API
2058         tristate
2059 
2060 config CRYPTO_USER_API_HASH
2061         tristate "User-space interface for hash algorithms"
2062         depends on NET
2063         select CRYPTO_HASH
2064         select CRYPTO_USER_API
2065         help
2066           This option enables the user-spaces interface for hash
2067           algorithms.
2068 
2069 config CRYPTO_USER_API_SKCIPHER
2070         tristate "User-space interface for symmetric key cipher algorithms"
2071         depends on NET
2072         select CRYPTO_SKCIPHER
2073         select CRYPTO_USER_API
2074         help
2075           This option enables the user-spaces interface for symmetric
2076           key cipher algorithms.
2077 
2078 config CRYPTO_USER_API_RNG
2079         tristate "User-space interface for random number generator algorithms"
2080         depends on NET
2081         select CRYPTO_RNG
2082         select CRYPTO_USER_API
2083         help
2084           This option enables the user-spaces interface for random
2085           number generator algorithms.
2086 
2087 config CRYPTO_USER_API_RNG_CAVP
2088         bool "Enable CAVP testing of DRBG"
2089         depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
2090         help
2091           This option enables extra API for CAVP testing via the user-space
2092           interface: resetting of DRBG entropy, and providing Additional Data.
2093           This should only be enabled for CAVP testing. You should say
2094           no unless you know what this is.
2095 
2096 config CRYPTO_USER_API_AEAD
2097         tristate "User-space interface for AEAD cipher algorithms"
2098         depends on NET
2099         select CRYPTO_AEAD
2100         select CRYPTO_SKCIPHER
2101         select CRYPTO_NULL
2102         select CRYPTO_USER_API
2103         help
2104           This option enables the user-spaces interface for AEAD
2105           cipher algorithms.
2106 
2107 config CRYPTO_USER_API_ENABLE_OBSOLETE
2108         bool "Enable obsolete cryptographic algorithms for userspace"
2109         depends on CRYPTO_USER_API
2110         default y
2111         help
2112           Allow obsolete cryptographic algorithms to be selected that have
2113           already been phased out from internal use by the kernel, and are
2114           only useful for userspace clients that still rely on them.
2115 
2116 config CRYPTO_STATS
2117         bool "Crypto usage statistics for User-space"
2118         depends on CRYPTO_USER
2119         help
2120           This option enables the gathering of crypto stats.
2121           This will collect:
2122           - encrypt/decrypt size and numbers of symmeric operations
2123           - compress/decompress size and numbers of compress operations
2124           - size and numbers of hash operations
2125           - encrypt/decrypt/sign/verify numbers for asymmetric operations
2126           - generate/seed numbers for rng operations
2127 
2128 config CRYPTO_HASH_INFO
2129         bool
2130 
2131 source "drivers/crypto/Kconfig"
2132 source "crypto/asymmetric_keys/Kconfig"
2133 source "certs/Kconfig"
2134 
2135 endif   # if CRYPTO