Merge tag 'block-5.11-2021-01-16' of git://git.kernel.dk/linux-block
[linux/fpc-iii.git] / crypto / Kconfig
bloba367fcfeb5d4528c8565e32ef0b03cfbf8ea1653
1 # SPDX-License-Identifier: GPL-2.0
3 # Generic algorithms support
5 config XOR_BLOCKS
6         tristate
9 # async_tx api: hardware offloaded memory transfer/transform support
11 source "crypto/async_tx/Kconfig"
14 # Cryptographic API Configuration
16 menuconfig CRYPTO
17         tristate "Cryptographic API"
18         help
19           This option provides the core Cryptographic API.
21 if CRYPTO
23 comment "Crypto core or helper"
25 config CRYPTO_FIPS
26         bool "FIPS 200 compliance"
27         depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
28         depends on (MODULE_SIG || !MODULES)
29         help
30           This option enables the fips boot option which is
31           required if you want the system to operate in a FIPS 200
32           certification.  You should say no unless you know what
33           this is.
35 config CRYPTO_ALGAPI
36         tristate
37         select CRYPTO_ALGAPI2
38         help
39           This option provides the API for cryptographic algorithms.
41 config CRYPTO_ALGAPI2
42         tristate
44 config CRYPTO_AEAD
45         tristate
46         select CRYPTO_AEAD2
47         select CRYPTO_ALGAPI
49 config CRYPTO_AEAD2
50         tristate
51         select CRYPTO_ALGAPI2
52         select CRYPTO_NULL2
53         select CRYPTO_RNG2
55 config CRYPTO_SKCIPHER
56         tristate
57         select CRYPTO_SKCIPHER2
58         select CRYPTO_ALGAPI
60 config CRYPTO_SKCIPHER2
61         tristate
62         select CRYPTO_ALGAPI2
63         select CRYPTO_RNG2
65 config CRYPTO_HASH
66         tristate
67         select CRYPTO_HASH2
68         select CRYPTO_ALGAPI
70 config CRYPTO_HASH2
71         tristate
72         select CRYPTO_ALGAPI2
74 config CRYPTO_RNG
75         tristate
76         select CRYPTO_RNG2
77         select CRYPTO_ALGAPI
79 config CRYPTO_RNG2
80         tristate
81         select CRYPTO_ALGAPI2
83 config CRYPTO_RNG_DEFAULT
84         tristate
85         select CRYPTO_DRBG_MENU
87 config CRYPTO_AKCIPHER2
88         tristate
89         select CRYPTO_ALGAPI2
91 config CRYPTO_AKCIPHER
92         tristate
93         select CRYPTO_AKCIPHER2
94         select CRYPTO_ALGAPI
96 config CRYPTO_KPP2
97         tristate
98         select CRYPTO_ALGAPI2
100 config CRYPTO_KPP
101         tristate
102         select CRYPTO_ALGAPI
103         select CRYPTO_KPP2
105 config CRYPTO_ACOMP2
106         tristate
107         select CRYPTO_ALGAPI2
108         select SGL_ALLOC
110 config CRYPTO_ACOMP
111         tristate
112         select CRYPTO_ALGAPI
113         select CRYPTO_ACOMP2
115 config CRYPTO_MANAGER
116         tristate "Cryptographic algorithm manager"
117         select CRYPTO_MANAGER2
118         help
119           Create default cryptographic template instantiations such as
120           cbc(aes).
122 config CRYPTO_MANAGER2
123         def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
124         select CRYPTO_AEAD2
125         select CRYPTO_HASH2
126         select CRYPTO_SKCIPHER2
127         select CRYPTO_AKCIPHER2
128         select CRYPTO_KPP2
129         select CRYPTO_ACOMP2
131 config CRYPTO_USER
132         tristate "Userspace cryptographic algorithm configuration"
133         depends on NET
134         select CRYPTO_MANAGER
135         help
136           Userspace configuration for cryptographic instantiations such as
137           cbc(aes).
139 config CRYPTO_MANAGER_DISABLE_TESTS
140         bool "Disable run-time self tests"
141         default y
142         help
143           Disable run-time self tests that normally take place at
144           algorithm registration.
146 config CRYPTO_MANAGER_EXTRA_TESTS
147         bool "Enable extra run-time crypto self tests"
148         depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
149         help
150           Enable extra run-time self tests of registered crypto algorithms,
151           including randomized fuzz tests.
153           This is intended for developer use only, as these tests take much
154           longer to run than the normal self tests.
156 config CRYPTO_GF128MUL
157         tristate
159 config CRYPTO_NULL
160         tristate "Null algorithms"
161         select CRYPTO_NULL2
162         help
163           These are 'Null' algorithms, used by IPsec, which do nothing.
165 config CRYPTO_NULL2
166         tristate
167         select CRYPTO_ALGAPI2
168         select CRYPTO_SKCIPHER2
169         select CRYPTO_HASH2
171 config CRYPTO_PCRYPT
172         tristate "Parallel crypto engine"
173         depends on SMP
174         select PADATA
175         select CRYPTO_MANAGER
176         select CRYPTO_AEAD
177         help
178           This converts an arbitrary crypto algorithm into a parallel
179           algorithm that executes in kernel threads.
181 config CRYPTO_CRYPTD
182         tristate "Software async crypto daemon"
183         select CRYPTO_SKCIPHER
184         select CRYPTO_HASH
185         select CRYPTO_MANAGER
186         help
187           This is a generic software asynchronous crypto daemon that
188           converts an arbitrary synchronous software crypto algorithm
189           into an asynchronous algorithm that executes in a kernel thread.
191 config CRYPTO_AUTHENC
192         tristate "Authenc support"
193         select CRYPTO_AEAD
194         select CRYPTO_SKCIPHER
195         select CRYPTO_MANAGER
196         select CRYPTO_HASH
197         select CRYPTO_NULL
198         help
199           Authenc: Combined mode wrapper for IPsec.
200           This is required for IPSec.
202 config CRYPTO_TEST
203         tristate "Testing module"
204         depends on m || EXPERT
205         select CRYPTO_MANAGER
206         help
207           Quick & dirty crypto test module.
209 config CRYPTO_SIMD
210         tristate
211         select CRYPTO_CRYPTD
213 config CRYPTO_GLUE_HELPER_X86
214         tristate
215         depends on X86
216         select CRYPTO_SKCIPHER
218 config CRYPTO_ENGINE
219         tristate
221 comment "Public-key cryptography"
223 config CRYPTO_RSA
224         tristate "RSA algorithm"
225         select CRYPTO_AKCIPHER
226         select CRYPTO_MANAGER
227         select MPILIB
228         select ASN1
229         help
230           Generic implementation of the RSA public key algorithm.
232 config CRYPTO_DH
233         tristate "Diffie-Hellman algorithm"
234         select CRYPTO_KPP
235         select MPILIB
236         help
237           Generic implementation of the Diffie-Hellman algorithm.
239 config CRYPTO_ECC
240         tristate
242 config CRYPTO_ECDH
243         tristate "ECDH algorithm"
244         select CRYPTO_ECC
245         select CRYPTO_KPP
246         select CRYPTO_RNG_DEFAULT
247         help
248           Generic implementation of the ECDH algorithm
250 config CRYPTO_ECRDSA
251         tristate "EC-RDSA (GOST 34.10) algorithm"
252         select CRYPTO_ECC
253         select CRYPTO_AKCIPHER
254         select CRYPTO_STREEBOG
255         select OID_REGISTRY
256         select ASN1
257         help
258           Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
259           RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
260           standard algorithms (called GOST algorithms). Only signature verification
261           is implemented.
263 config CRYPTO_SM2
264         tristate "SM2 algorithm"
265         select CRYPTO_SM3
266         select CRYPTO_AKCIPHER
267         select CRYPTO_MANAGER
268         select MPILIB
269         select ASN1
270         help
271           Generic implementation of the SM2 public key algorithm. It was
272           published by State Encryption Management Bureau, China.
273           as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
275           References:
276           https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
277           http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
278           http://www.gmbz.org.cn/main/bzlb.html
280 config CRYPTO_CURVE25519
281         tristate "Curve25519 algorithm"
282         select CRYPTO_KPP
283         select CRYPTO_LIB_CURVE25519_GENERIC
285 config CRYPTO_CURVE25519_X86
286         tristate "x86_64 accelerated Curve25519 scalar multiplication library"
287         depends on X86 && 64BIT
288         select CRYPTO_LIB_CURVE25519_GENERIC
289         select CRYPTO_ARCH_HAVE_LIB_CURVE25519
291 comment "Authenticated Encryption with Associated Data"
293 config CRYPTO_CCM
294         tristate "CCM support"
295         select CRYPTO_CTR
296         select CRYPTO_HASH
297         select CRYPTO_AEAD
298         select CRYPTO_MANAGER
299         help
300           Support for Counter with CBC MAC. Required for IPsec.
302 config CRYPTO_GCM
303         tristate "GCM/GMAC support"
304         select CRYPTO_CTR
305         select CRYPTO_AEAD
306         select CRYPTO_GHASH
307         select CRYPTO_NULL
308         select CRYPTO_MANAGER
309         help
310           Support for Galois/Counter Mode (GCM) and Galois Message
311           Authentication Code (GMAC). Required for IPSec.
313 config CRYPTO_CHACHA20POLY1305
314         tristate "ChaCha20-Poly1305 AEAD support"
315         select CRYPTO_CHACHA20
316         select CRYPTO_POLY1305
317         select CRYPTO_AEAD
318         select CRYPTO_MANAGER
319         help
320           ChaCha20-Poly1305 AEAD support, RFC7539.
322           Support for the AEAD wrapper using the ChaCha20 stream cipher combined
323           with the Poly1305 authenticator. It is defined in RFC7539 for use in
324           IETF protocols.
326 config CRYPTO_AEGIS128
327         tristate "AEGIS-128 AEAD algorithm"
328         select CRYPTO_AEAD
329         select CRYPTO_AES  # for AES S-box tables
330         help
331          Support for the AEGIS-128 dedicated AEAD algorithm.
333 config CRYPTO_AEGIS128_SIMD
334         bool "Support SIMD acceleration for AEGIS-128"
335         depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
336         default y
338 config CRYPTO_AEGIS128_AESNI_SSE2
339         tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
340         depends on X86 && 64BIT
341         select CRYPTO_AEAD
342         select CRYPTO_SIMD
343         help
344          AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
346 config CRYPTO_SEQIV
347         tristate "Sequence Number IV Generator"
348         select CRYPTO_AEAD
349         select CRYPTO_SKCIPHER
350         select CRYPTO_NULL
351         select CRYPTO_RNG_DEFAULT
352         select CRYPTO_MANAGER
353         help
354           This IV generator generates an IV based on a sequence number by
355           xoring it with a salt.  This algorithm is mainly useful for CTR
357 config CRYPTO_ECHAINIV
358         tristate "Encrypted Chain IV Generator"
359         select CRYPTO_AEAD
360         select CRYPTO_NULL
361         select CRYPTO_RNG_DEFAULT
362         select CRYPTO_MANAGER
363         help
364           This IV generator generates an IV based on the encryption of
365           a sequence number xored with a salt.  This is the default
366           algorithm for CBC.
368 comment "Block modes"
370 config CRYPTO_CBC
371         tristate "CBC support"
372         select CRYPTO_SKCIPHER
373         select CRYPTO_MANAGER
374         help
375           CBC: Cipher Block Chaining mode
376           This block cipher algorithm is required for IPSec.
378 config CRYPTO_CFB
379         tristate "CFB support"
380         select CRYPTO_SKCIPHER
381         select CRYPTO_MANAGER
382         help
383           CFB: Cipher FeedBack mode
384           This block cipher algorithm is required for TPM2 Cryptography.
386 config CRYPTO_CTR
387         tristate "CTR support"
388         select CRYPTO_SKCIPHER
389         select CRYPTO_MANAGER
390         help
391           CTR: Counter mode
392           This block cipher algorithm is required for IPSec.
394 config CRYPTO_CTS
395         tristate "CTS support"
396         select CRYPTO_SKCIPHER
397         select CRYPTO_MANAGER
398         help
399           CTS: Cipher Text Stealing
400           This is the Cipher Text Stealing mode as described by
401           Section 8 of rfc2040 and referenced by rfc3962
402           (rfc3962 includes errata information in its Appendix A) or
403           CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
404           This mode is required for Kerberos gss mechanism support
405           for AES encryption.
407           See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
409 config CRYPTO_ECB
410         tristate "ECB support"
411         select CRYPTO_SKCIPHER
412         select CRYPTO_MANAGER
413         help
414           ECB: Electronic CodeBook mode
415           This is the simplest block cipher algorithm.  It simply encrypts
416           the input block by block.
418 config CRYPTO_LRW
419         tristate "LRW support"
420         select CRYPTO_SKCIPHER
421         select CRYPTO_MANAGER
422         select CRYPTO_GF128MUL
423         help
424           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
425           narrow block cipher mode for dm-crypt.  Use it with cipher
426           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
427           The first 128, 192 or 256 bits in the key are used for AES and the
428           rest is used to tie each cipher block to its logical position.
430 config CRYPTO_OFB
431         tristate "OFB support"
432         select CRYPTO_SKCIPHER
433         select CRYPTO_MANAGER
434         help
435           OFB: the Output Feedback mode makes a block cipher into a synchronous
436           stream cipher. It generates keystream blocks, which are then XORed
437           with the plaintext blocks to get the ciphertext. Flipping a bit in the
438           ciphertext produces a flipped bit in the plaintext at the same
439           location. This property allows many error correcting codes to function
440           normally even when applied before encryption.
442 config CRYPTO_PCBC
443         tristate "PCBC support"
444         select CRYPTO_SKCIPHER
445         select CRYPTO_MANAGER
446         help
447           PCBC: Propagating Cipher Block Chaining mode
448           This block cipher algorithm is required for RxRPC.
450 config CRYPTO_XTS
451         tristate "XTS support"
452         select CRYPTO_SKCIPHER
453         select CRYPTO_MANAGER
454         select CRYPTO_ECB
455         help
456           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
457           key size 256, 384 or 512 bits. This implementation currently
458           can't handle a sectorsize which is not a multiple of 16 bytes.
460 config CRYPTO_KEYWRAP
461         tristate "Key wrapping support"
462         select CRYPTO_SKCIPHER
463         select CRYPTO_MANAGER
464         help
465           Support for key wrapping (NIST SP800-38F / RFC3394) without
466           padding.
468 config CRYPTO_NHPOLY1305
469         tristate
470         select CRYPTO_HASH
471         select CRYPTO_LIB_POLY1305_GENERIC
473 config CRYPTO_NHPOLY1305_SSE2
474         tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
475         depends on X86 && 64BIT
476         select CRYPTO_NHPOLY1305
477         help
478           SSE2 optimized implementation of the hash function used by the
479           Adiantum encryption mode.
481 config CRYPTO_NHPOLY1305_AVX2
482         tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
483         depends on X86 && 64BIT
484         select CRYPTO_NHPOLY1305
485         help
486           AVX2 optimized implementation of the hash function used by the
487           Adiantum encryption mode.
489 config CRYPTO_ADIANTUM
490         tristate "Adiantum support"
491         select CRYPTO_CHACHA20
492         select CRYPTO_LIB_POLY1305_GENERIC
493         select CRYPTO_NHPOLY1305
494         select CRYPTO_MANAGER
495         help
496           Adiantum is a tweakable, length-preserving encryption mode
497           designed for fast and secure disk encryption, especially on
498           CPUs without dedicated crypto instructions.  It encrypts
499           each sector using the XChaCha12 stream cipher, two passes of
500           an Îµ-almost-∆-universal hash function, and an invocation of
501           the AES-256 block cipher on a single 16-byte block.  On CPUs
502           without AES instructions, Adiantum is much faster than
503           AES-XTS.
505           Adiantum's security is provably reducible to that of its
506           underlying stream and block ciphers, subject to a security
507           bound.  Unlike XTS, Adiantum is a true wide-block encryption
508           mode, so it actually provides an even stronger notion of
509           security than XTS, subject to the security bound.
511           If unsure, say N.
513 config CRYPTO_ESSIV
514         tristate "ESSIV support for block encryption"
515         select CRYPTO_AUTHENC
516         help
517           Encrypted salt-sector initialization vector (ESSIV) is an IV
518           generation method that is used in some cases by fscrypt and/or
519           dm-crypt. It uses the hash of the block encryption key as the
520           symmetric key for a block encryption pass applied to the input
521           IV, making low entropy IV sources more suitable for block
522           encryption.
524           This driver implements a crypto API template that can be
525           instantiated either as an skcipher or as an AEAD (depending on the
526           type of the first template argument), and which defers encryption
527           and decryption requests to the encapsulated cipher after applying
528           ESSIV to the input IV. Note that in the AEAD case, it is assumed
529           that the keys are presented in the same format used by the authenc
530           template, and that the IV appears at the end of the authenticated
531           associated data (AAD) region (which is how dm-crypt uses it.)
533           Note that the use of ESSIV is not recommended for new deployments,
534           and so this only needs to be enabled when interoperability with
535           existing encrypted volumes of filesystems is required, or when
536           building for a particular system that requires it (e.g., when
537           the SoC in question has accelerated CBC but not XTS, making CBC
538           combined with ESSIV the only feasible mode for h/w accelerated
539           block encryption)
541 comment "Hash modes"
543 config CRYPTO_CMAC
544         tristate "CMAC support"
545         select CRYPTO_HASH
546         select CRYPTO_MANAGER
547         help
548           Cipher-based Message Authentication Code (CMAC) specified by
549           The National Institute of Standards and Technology (NIST).
551           https://tools.ietf.org/html/rfc4493
552           http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
554 config CRYPTO_HMAC
555         tristate "HMAC support"
556         select CRYPTO_HASH
557         select CRYPTO_MANAGER
558         help
559           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
560           This is required for IPSec.
562 config CRYPTO_XCBC
563         tristate "XCBC support"
564         select CRYPTO_HASH
565         select CRYPTO_MANAGER
566         help
567           XCBC: Keyed-Hashing with encryption algorithm
568                 https://www.ietf.org/rfc/rfc3566.txt
569                 http://csrc.nist.gov/encryption/modes/proposedmodes/
570                  xcbc-mac/xcbc-mac-spec.pdf
572 config CRYPTO_VMAC
573         tristate "VMAC support"
574         select CRYPTO_HASH
575         select CRYPTO_MANAGER
576         help
577           VMAC is a message authentication algorithm designed for
578           very high speed on 64-bit architectures.
580           See also:
581           <https://fastcrypto.org/vmac>
583 comment "Digest"
585 config CRYPTO_CRC32C
586         tristate "CRC32c CRC algorithm"
587         select CRYPTO_HASH
588         select CRC32
589         help
590           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
591           by iSCSI for header and data digests and by others.
592           See Castagnoli93.  Module will be crc32c.
594 config CRYPTO_CRC32C_INTEL
595         tristate "CRC32c INTEL hardware acceleration"
596         depends on X86
597         select CRYPTO_HASH
598         help
599           In Intel processor with SSE4.2 supported, the processor will
600           support CRC32C implementation using hardware accelerated CRC32
601           instruction. This option will create 'crc32c-intel' module,
602           which will enable any routine to use the CRC32 instruction to
603           gain performance compared with software implementation.
604           Module will be crc32c-intel.
606 config CRYPTO_CRC32C_VPMSUM
607         tristate "CRC32c CRC algorithm (powerpc64)"
608         depends on PPC64 && ALTIVEC
609         select CRYPTO_HASH
610         select CRC32
611         help
612           CRC32c algorithm implemented using vector polynomial multiply-sum
613           (vpmsum) instructions, introduced in POWER8. Enable on POWER8
614           and newer processors for improved performance.
617 config CRYPTO_CRC32C_SPARC64
618         tristate "CRC32c CRC algorithm (SPARC64)"
619         depends on SPARC64
620         select CRYPTO_HASH
621         select CRC32
622         help
623           CRC32c CRC algorithm implemented using sparc64 crypto instructions,
624           when available.
626 config CRYPTO_CRC32
627         tristate "CRC32 CRC algorithm"
628         select CRYPTO_HASH
629         select CRC32
630         help
631           CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
632           Shash crypto api wrappers to crc32_le function.
634 config CRYPTO_CRC32_PCLMUL
635         tristate "CRC32 PCLMULQDQ hardware acceleration"
636         depends on X86
637         select CRYPTO_HASH
638         select CRC32
639         help
640           From Intel Westmere and AMD Bulldozer processor with SSE4.2
641           and PCLMULQDQ supported, the processor will support
642           CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
643           instruction. This option will create 'crc32-pclmul' module,
644           which will enable any routine to use the CRC-32-IEEE 802.3 checksum
645           and gain better performance as compared with the table implementation.
647 config CRYPTO_CRC32_MIPS
648         tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
649         depends on MIPS_CRC_SUPPORT
650         select CRYPTO_HASH
651         help
652           CRC32c and CRC32 CRC algorithms implemented using mips crypto
653           instructions, when available.
656 config CRYPTO_XXHASH
657         tristate "xxHash hash algorithm"
658         select CRYPTO_HASH
659         select XXHASH
660         help
661           xxHash non-cryptographic hash algorithm. Extremely fast, working at
662           speeds close to RAM limits.
664 config CRYPTO_BLAKE2B
665         tristate "BLAKE2b digest algorithm"
666         select CRYPTO_HASH
667         help
668           Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
669           optimized for 64bit platforms and can produce digests of any size
670           between 1 to 64.  The keyed hash is also implemented.
672           This module provides the following algorithms:
674           - blake2b-160
675           - blake2b-256
676           - blake2b-384
677           - blake2b-512
679           See https://blake2.net for further information.
681 config CRYPTO_BLAKE2S
682         tristate "BLAKE2s digest algorithm"
683         select CRYPTO_LIB_BLAKE2S_GENERIC
684         select CRYPTO_HASH
685         help
686           Implementation of cryptographic hash function BLAKE2s
687           optimized for 8-32bit platforms and can produce digests of any size
688           between 1 to 32.  The keyed hash is also implemented.
690           This module provides the following algorithms:
692           - blake2s-128
693           - blake2s-160
694           - blake2s-224
695           - blake2s-256
697           See https://blake2.net for further information.
699 config CRYPTO_BLAKE2S_X86
700         tristate "BLAKE2s digest algorithm (x86 accelerated version)"
701         depends on X86 && 64BIT
702         select CRYPTO_LIB_BLAKE2S_GENERIC
703         select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
705 config CRYPTO_CRCT10DIF
706         tristate "CRCT10DIF algorithm"
707         select CRYPTO_HASH
708         help
709           CRC T10 Data Integrity Field computation is being cast as
710           a crypto transform.  This allows for faster crc t10 diff
711           transforms to be used if they are available.
713 config CRYPTO_CRCT10DIF_PCLMUL
714         tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
715         depends on X86 && 64BIT && CRC_T10DIF
716         select CRYPTO_HASH
717         help
718           For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
719           CRC T10 DIF PCLMULQDQ computation can be hardware
720           accelerated PCLMULQDQ instruction. This option will create
721           'crct10dif-pclmul' module, which is faster when computing the
722           crct10dif checksum as compared with the generic table implementation.
724 config CRYPTO_CRCT10DIF_VPMSUM
725         tristate "CRC32T10DIF powerpc64 hardware acceleration"
726         depends on PPC64 && ALTIVEC && CRC_T10DIF
727         select CRYPTO_HASH
728         help
729           CRC10T10DIF algorithm implemented using vector polynomial
730           multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
731           POWER8 and newer processors for improved performance.
733 config CRYPTO_VPMSUM_TESTER
734         tristate "Powerpc64 vpmsum hardware acceleration tester"
735         depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
736         help
737           Stress test for CRC32c and CRC-T10DIF algorithms implemented with
738           POWER8 vpmsum instructions.
739           Unless you are testing these algorithms, you don't need this.
741 config CRYPTO_GHASH
742         tristate "GHASH hash function"
743         select CRYPTO_GF128MUL
744         select CRYPTO_HASH
745         help
746           GHASH is the hash function used in GCM (Galois/Counter Mode).
747           It is not a general-purpose cryptographic hash function.
749 config CRYPTO_POLY1305
750         tristate "Poly1305 authenticator algorithm"
751         select CRYPTO_HASH
752         select CRYPTO_LIB_POLY1305_GENERIC
753         help
754           Poly1305 authenticator algorithm, RFC7539.
756           Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
757           It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
758           in IETF protocols. This is the portable C implementation of Poly1305.
760 config CRYPTO_POLY1305_X86_64
761         tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
762         depends on X86 && 64BIT
763         select CRYPTO_LIB_POLY1305_GENERIC
764         select CRYPTO_ARCH_HAVE_LIB_POLY1305
765         help
766           Poly1305 authenticator algorithm, RFC7539.
768           Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
769           It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
770           in IETF protocols. This is the x86_64 assembler implementation using SIMD
771           instructions.
773 config CRYPTO_POLY1305_MIPS
774         tristate "Poly1305 authenticator algorithm (MIPS optimized)"
775         depends on CPU_MIPS32 || (CPU_MIPS64 && 64BIT)
776         select CRYPTO_ARCH_HAVE_LIB_POLY1305
778 config CRYPTO_MD4
779         tristate "MD4 digest algorithm"
780         select CRYPTO_HASH
781         help
782           MD4 message digest algorithm (RFC1320).
784 config CRYPTO_MD5
785         tristate "MD5 digest algorithm"
786         select CRYPTO_HASH
787         help
788           MD5 message digest algorithm (RFC1321).
790 config CRYPTO_MD5_OCTEON
791         tristate "MD5 digest algorithm (OCTEON)"
792         depends on CPU_CAVIUM_OCTEON
793         select CRYPTO_MD5
794         select CRYPTO_HASH
795         help
796           MD5 message digest algorithm (RFC1321) implemented
797           using OCTEON crypto instructions, when available.
799 config CRYPTO_MD5_PPC
800         tristate "MD5 digest algorithm (PPC)"
801         depends on PPC
802         select CRYPTO_HASH
803         help
804           MD5 message digest algorithm (RFC1321) implemented
805           in PPC assembler.
807 config CRYPTO_MD5_SPARC64
808         tristate "MD5 digest algorithm (SPARC64)"
809         depends on SPARC64
810         select CRYPTO_MD5
811         select CRYPTO_HASH
812         help
813           MD5 message digest algorithm (RFC1321) implemented
814           using sparc64 crypto instructions, when available.
816 config CRYPTO_MICHAEL_MIC
817         tristate "Michael MIC keyed digest algorithm"
818         select CRYPTO_HASH
819         help
820           Michael MIC is used for message integrity protection in TKIP
821           (IEEE 802.11i). This algorithm is required for TKIP, but it
822           should not be used for other purposes because of the weakness
823           of the algorithm.
825 config CRYPTO_RMD128
826         tristate "RIPEMD-128 digest algorithm"
827         select CRYPTO_HASH
828         help
829           RIPEMD-128 (ISO/IEC 10118-3:2004).
831           RIPEMD-128 is a 128-bit cryptographic hash function. It should only
832           be used as a secure replacement for RIPEMD. For other use cases,
833           RIPEMD-160 should be used.
835           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
836           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
838 config CRYPTO_RMD160
839         tristate "RIPEMD-160 digest algorithm"
840         select CRYPTO_HASH
841         help
842           RIPEMD-160 (ISO/IEC 10118-3:2004).
844           RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
845           to be used as a secure replacement for the 128-bit hash functions
846           MD4, MD5 and it's predecessor RIPEMD
847           (not to be confused with RIPEMD-128).
849           It's speed is comparable to SHA1 and there are no known attacks
850           against RIPEMD-160.
852           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
853           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
855 config CRYPTO_RMD256
856         tristate "RIPEMD-256 digest algorithm"
857         select CRYPTO_HASH
858         help
859           RIPEMD-256 is an optional extension of RIPEMD-128 with a
860           256 bit hash. It is intended for applications that require
861           longer hash-results, without needing a larger security level
862           (than RIPEMD-128).
864           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
865           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
867 config CRYPTO_RMD320
868         tristate "RIPEMD-320 digest algorithm"
869         select CRYPTO_HASH
870         help
871           RIPEMD-320 is an optional extension of RIPEMD-160 with a
872           320 bit hash. It is intended for applications that require
873           longer hash-results, without needing a larger security level
874           (than RIPEMD-160).
876           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
877           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
879 config CRYPTO_SHA1
880         tristate "SHA1 digest algorithm"
881         select CRYPTO_HASH
882         help
883           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
885 config CRYPTO_SHA1_SSSE3
886         tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
887         depends on X86 && 64BIT
888         select CRYPTO_SHA1
889         select CRYPTO_HASH
890         help
891           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
892           using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
893           Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
894           when available.
896 config CRYPTO_SHA256_SSSE3
897         tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
898         depends on X86 && 64BIT
899         select CRYPTO_SHA256
900         select CRYPTO_HASH
901         help
902           SHA-256 secure hash standard (DFIPS 180-2) implemented
903           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
904           Extensions version 1 (AVX1), or Advanced Vector Extensions
905           version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
906           Instructions) when available.
908 config CRYPTO_SHA512_SSSE3
909         tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
910         depends on X86 && 64BIT
911         select CRYPTO_SHA512
912         select CRYPTO_HASH
913         help
914           SHA-512 secure hash standard (DFIPS 180-2) implemented
915           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
916           Extensions version 1 (AVX1), or Advanced Vector Extensions
917           version 2 (AVX2) instructions, when available.
919 config CRYPTO_SHA1_OCTEON
920         tristate "SHA1 digest algorithm (OCTEON)"
921         depends on CPU_CAVIUM_OCTEON
922         select CRYPTO_SHA1
923         select CRYPTO_HASH
924         help
925           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
926           using OCTEON crypto instructions, when available.
928 config CRYPTO_SHA1_SPARC64
929         tristate "SHA1 digest algorithm (SPARC64)"
930         depends on SPARC64
931         select CRYPTO_SHA1
932         select CRYPTO_HASH
933         help
934           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
935           using sparc64 crypto instructions, when available.
937 config CRYPTO_SHA1_PPC
938         tristate "SHA1 digest algorithm (powerpc)"
939         depends on PPC
940         help
941           This is the powerpc hardware accelerated implementation of the
942           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
944 config CRYPTO_SHA1_PPC_SPE
945         tristate "SHA1 digest algorithm (PPC SPE)"
946         depends on PPC && SPE
947         help
948           SHA-1 secure hash standard (DFIPS 180-4) implemented
949           using powerpc SPE SIMD instruction set.
951 config CRYPTO_SHA256
952         tristate "SHA224 and SHA256 digest algorithm"
953         select CRYPTO_HASH
954         select CRYPTO_LIB_SHA256
955         help
956           SHA256 secure hash standard (DFIPS 180-2).
958           This version of SHA implements a 256 bit hash with 128 bits of
959           security against collision attacks.
961           This code also includes SHA-224, a 224 bit hash with 112 bits
962           of security against collision attacks.
964 config CRYPTO_SHA256_PPC_SPE
965         tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
966         depends on PPC && SPE
967         select CRYPTO_SHA256
968         select CRYPTO_HASH
969         help
970           SHA224 and SHA256 secure hash standard (DFIPS 180-2)
971           implemented using powerpc SPE SIMD instruction set.
973 config CRYPTO_SHA256_OCTEON
974         tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
975         depends on CPU_CAVIUM_OCTEON
976         select CRYPTO_SHA256
977         select CRYPTO_HASH
978         help
979           SHA-256 secure hash standard (DFIPS 180-2) implemented
980           using OCTEON crypto instructions, when available.
982 config CRYPTO_SHA256_SPARC64
983         tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
984         depends on SPARC64
985         select CRYPTO_SHA256
986         select CRYPTO_HASH
987         help
988           SHA-256 secure hash standard (DFIPS 180-2) implemented
989           using sparc64 crypto instructions, when available.
991 config CRYPTO_SHA512
992         tristate "SHA384 and SHA512 digest algorithms"
993         select CRYPTO_HASH
994         help
995           SHA512 secure hash standard (DFIPS 180-2).
997           This version of SHA implements a 512 bit hash with 256 bits of
998           security against collision attacks.
1000           This code also includes SHA-384, a 384 bit hash with 192 bits
1001           of security against collision attacks.
1003 config CRYPTO_SHA512_OCTEON
1004         tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1005         depends on CPU_CAVIUM_OCTEON
1006         select CRYPTO_SHA512
1007         select CRYPTO_HASH
1008         help
1009           SHA-512 secure hash standard (DFIPS 180-2) implemented
1010           using OCTEON crypto instructions, when available.
1012 config CRYPTO_SHA512_SPARC64
1013         tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1014         depends on SPARC64
1015         select CRYPTO_SHA512
1016         select CRYPTO_HASH
1017         help
1018           SHA-512 secure hash standard (DFIPS 180-2) implemented
1019           using sparc64 crypto instructions, when available.
1021 config CRYPTO_SHA3
1022         tristate "SHA3 digest algorithm"
1023         select CRYPTO_HASH
1024         help
1025           SHA-3 secure hash standard (DFIPS 202). It's based on
1026           cryptographic sponge function family called Keccak.
1028           References:
1029           http://keccak.noekeon.org/
1031 config CRYPTO_SM3
1032         tristate "SM3 digest algorithm"
1033         select CRYPTO_HASH
1034         help
1035           SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1036           It is part of the Chinese Commercial Cryptography suite.
1038           References:
1039           http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1040           https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1042 config CRYPTO_STREEBOG
1043         tristate "Streebog Hash Function"
1044         select CRYPTO_HASH
1045         help
1046           Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1047           cryptographic standard algorithms (called GOST algorithms).
1048           This setting enables two hash algorithms with 256 and 512 bits output.
1050           References:
1051           https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1052           https://tools.ietf.org/html/rfc6986
1054 config CRYPTO_TGR192
1055         tristate "Tiger digest algorithms"
1056         select CRYPTO_HASH
1057         help
1058           Tiger hash algorithm 192, 160 and 128-bit hashes
1060           Tiger is a hash function optimized for 64-bit processors while
1061           still having decent performance on 32-bit processors.
1062           Tiger was developed by Ross Anderson and Eli Biham.
1064           See also:
1065           <https://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
1067 config CRYPTO_WP512
1068         tristate "Whirlpool digest algorithms"
1069         select CRYPTO_HASH
1070         help
1071           Whirlpool hash algorithm 512, 384 and 256-bit hashes
1073           Whirlpool-512 is part of the NESSIE cryptographic primitives.
1074           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1076           See also:
1077           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
1079 config CRYPTO_GHASH_CLMUL_NI_INTEL
1080         tristate "GHASH hash function (CLMUL-NI accelerated)"
1081         depends on X86 && 64BIT
1082         select CRYPTO_CRYPTD
1083         help
1084           This is the x86_64 CLMUL-NI accelerated implementation of
1085           GHASH, the hash function used in GCM (Galois/Counter mode).
1087 comment "Ciphers"
1089 config CRYPTO_AES
1090         tristate "AES cipher algorithms"
1091         select CRYPTO_ALGAPI
1092         select CRYPTO_LIB_AES
1093         help
1094           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1095           algorithm.
1097           Rijndael appears to be consistently a very good performer in
1098           both hardware and software across a wide range of computing
1099           environments regardless of its use in feedback or non-feedback
1100           modes. Its key setup time is excellent, and its key agility is
1101           good. Rijndael's very low memory requirements make it very well
1102           suited for restricted-space environments, in which it also
1103           demonstrates excellent performance. Rijndael's operations are
1104           among the easiest to defend against power and timing attacks.
1106           The AES specifies three key sizes: 128, 192 and 256 bits
1108           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1110 config CRYPTO_AES_TI
1111         tristate "Fixed time AES cipher"
1112         select CRYPTO_ALGAPI
1113         select CRYPTO_LIB_AES
1114         help
1115           This is a generic implementation of AES that attempts to eliminate
1116           data dependent latencies as much as possible without affecting
1117           performance too much. It is intended for use by the generic CCM
1118           and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1119           solely on encryption (although decryption is supported as well, but
1120           with a more dramatic performance hit)
1122           Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1123           8 for decryption), this implementation only uses just two S-boxes of
1124           256 bytes each, and attempts to eliminate data dependent latencies by
1125           prefetching the entire table into the cache at the start of each
1126           block. Interrupts are also disabled to avoid races where cachelines
1127           are evicted when the CPU is interrupted to do something else.
1129 config CRYPTO_AES_NI_INTEL
1130         tristate "AES cipher algorithms (AES-NI)"
1131         depends on X86
1132         select CRYPTO_AEAD
1133         select CRYPTO_LIB_AES
1134         select CRYPTO_ALGAPI
1135         select CRYPTO_SKCIPHER
1136         select CRYPTO_GLUE_HELPER_X86 if 64BIT
1137         select CRYPTO_SIMD
1138         help
1139           Use Intel AES-NI instructions for AES algorithm.
1141           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1142           algorithm.
1144           Rijndael appears to be consistently a very good performer in
1145           both hardware and software across a wide range of computing
1146           environments regardless of its use in feedback or non-feedback
1147           modes. Its key setup time is excellent, and its key agility is
1148           good. Rijndael's very low memory requirements make it very well
1149           suited for restricted-space environments, in which it also
1150           demonstrates excellent performance. Rijndael's operations are
1151           among the easiest to defend against power and timing attacks.
1153           The AES specifies three key sizes: 128, 192 and 256 bits
1155           See <http://csrc.nist.gov/encryption/aes/> for more information.
1157           In addition to AES cipher algorithm support, the acceleration
1158           for some popular block cipher mode is supported too, including
1159           ECB, CBC, LRW, XTS. The 64 bit version has additional
1160           acceleration for CTR.
1162 config CRYPTO_AES_SPARC64
1163         tristate "AES cipher algorithms (SPARC64)"
1164         depends on SPARC64
1165         select CRYPTO_SKCIPHER
1166         help
1167           Use SPARC64 crypto opcodes for AES algorithm.
1169           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1170           algorithm.
1172           Rijndael appears to be consistently a very good performer in
1173           both hardware and software across a wide range of computing
1174           environments regardless of its use in feedback or non-feedback
1175           modes. Its key setup time is excellent, and its key agility is
1176           good. Rijndael's very low memory requirements make it very well
1177           suited for restricted-space environments, in which it also
1178           demonstrates excellent performance. Rijndael's operations are
1179           among the easiest to defend against power and timing attacks.
1181           The AES specifies three key sizes: 128, 192 and 256 bits
1183           See <http://csrc.nist.gov/encryption/aes/> for more information.
1185           In addition to AES cipher algorithm support, the acceleration
1186           for some popular block cipher mode is supported too, including
1187           ECB and CBC.
1189 config CRYPTO_AES_PPC_SPE
1190         tristate "AES cipher algorithms (PPC SPE)"
1191         depends on PPC && SPE
1192         select CRYPTO_SKCIPHER
1193         help
1194           AES cipher algorithms (FIPS-197). Additionally the acceleration
1195           for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1196           This module should only be used for low power (router) devices
1197           without hardware AES acceleration (e.g. caam crypto). It reduces the
1198           size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1199           timining attacks. Nevertheless it might be not as secure as other
1200           architecture specific assembler implementations that work on 1KB
1201           tables or 256 bytes S-boxes.
1203 config CRYPTO_ANUBIS
1204         tristate "Anubis cipher algorithm"
1205         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1206         select CRYPTO_ALGAPI
1207         help
1208           Anubis cipher algorithm.
1210           Anubis is a variable key length cipher which can use keys from
1211           128 bits to 320 bits in length.  It was evaluated as a entrant
1212           in the NESSIE competition.
1214           See also:
1215           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1216           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1218 config CRYPTO_ARC4
1219         tristate "ARC4 cipher algorithm"
1220         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1221         select CRYPTO_SKCIPHER
1222         select CRYPTO_LIB_ARC4
1223         help
1224           ARC4 cipher algorithm.
1226           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1227           bits in length.  This algorithm is required for driver-based
1228           WEP, but it should not be for other purposes because of the
1229           weakness of the algorithm.
1231 config CRYPTO_BLOWFISH
1232         tristate "Blowfish cipher algorithm"
1233         select CRYPTO_ALGAPI
1234         select CRYPTO_BLOWFISH_COMMON
1235         help
1236           Blowfish cipher algorithm, by Bruce Schneier.
1238           This is a variable key length cipher which can use keys from 32
1239           bits to 448 bits in length.  It's fast, simple and specifically
1240           designed for use on "large microprocessors".
1242           See also:
1243           <https://www.schneier.com/blowfish.html>
1245 config CRYPTO_BLOWFISH_COMMON
1246         tristate
1247         help
1248           Common parts of the Blowfish cipher algorithm shared by the
1249           generic c and the assembler implementations.
1251           See also:
1252           <https://www.schneier.com/blowfish.html>
1254 config CRYPTO_BLOWFISH_X86_64
1255         tristate "Blowfish cipher algorithm (x86_64)"
1256         depends on X86 && 64BIT
1257         select CRYPTO_SKCIPHER
1258         select CRYPTO_BLOWFISH_COMMON
1259         help
1260           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1262           This is a variable key length cipher which can use keys from 32
1263           bits to 448 bits in length.  It's fast, simple and specifically
1264           designed for use on "large microprocessors".
1266           See also:
1267           <https://www.schneier.com/blowfish.html>
1269 config CRYPTO_CAMELLIA
1270         tristate "Camellia cipher algorithms"
1271         depends on CRYPTO
1272         select CRYPTO_ALGAPI
1273         help
1274           Camellia cipher algorithms module.
1276           Camellia is a symmetric key block cipher developed jointly
1277           at NTT and Mitsubishi Electric Corporation.
1279           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1281           See also:
1282           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1284 config CRYPTO_CAMELLIA_X86_64
1285         tristate "Camellia cipher algorithm (x86_64)"
1286         depends on X86 && 64BIT
1287         depends on CRYPTO
1288         select CRYPTO_SKCIPHER
1289         select CRYPTO_GLUE_HELPER_X86
1290         help
1291           Camellia cipher algorithm module (x86_64).
1293           Camellia is a symmetric key block cipher developed jointly
1294           at NTT and Mitsubishi Electric Corporation.
1296           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1298           See also:
1299           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1301 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1302         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1303         depends on X86 && 64BIT
1304         depends on CRYPTO
1305         select CRYPTO_SKCIPHER
1306         select CRYPTO_CAMELLIA_X86_64
1307         select CRYPTO_GLUE_HELPER_X86
1308         select CRYPTO_SIMD
1309         select CRYPTO_XTS
1310         help
1311           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1313           Camellia is a symmetric key block cipher developed jointly
1314           at NTT and Mitsubishi Electric Corporation.
1316           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1318           See also:
1319           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1321 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1322         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1323         depends on X86 && 64BIT
1324         depends on CRYPTO
1325         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1326         help
1327           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1329           Camellia is a symmetric key block cipher developed jointly
1330           at NTT and Mitsubishi Electric Corporation.
1332           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1334           See also:
1335           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1337 config CRYPTO_CAMELLIA_SPARC64
1338         tristate "Camellia cipher algorithm (SPARC64)"
1339         depends on SPARC64
1340         depends on CRYPTO
1341         select CRYPTO_ALGAPI
1342         select CRYPTO_SKCIPHER
1343         help
1344           Camellia cipher algorithm module (SPARC64).
1346           Camellia is a symmetric key block cipher developed jointly
1347           at NTT and Mitsubishi Electric Corporation.
1349           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1351           See also:
1352           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1354 config CRYPTO_CAST_COMMON
1355         tristate
1356         help
1357           Common parts of the CAST cipher algorithms shared by the
1358           generic c and the assembler implementations.
1360 config CRYPTO_CAST5
1361         tristate "CAST5 (CAST-128) cipher algorithm"
1362         select CRYPTO_ALGAPI
1363         select CRYPTO_CAST_COMMON
1364         help
1365           The CAST5 encryption algorithm (synonymous with CAST-128) is
1366           described in RFC2144.
1368 config CRYPTO_CAST5_AVX_X86_64
1369         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1370         depends on X86 && 64BIT
1371         select CRYPTO_SKCIPHER
1372         select CRYPTO_CAST5
1373         select CRYPTO_CAST_COMMON
1374         select CRYPTO_SIMD
1375         help
1376           The CAST5 encryption algorithm (synonymous with CAST-128) is
1377           described in RFC2144.
1379           This module provides the Cast5 cipher algorithm that processes
1380           sixteen blocks parallel using the AVX instruction set.
1382 config CRYPTO_CAST6
1383         tristate "CAST6 (CAST-256) cipher algorithm"
1384         select CRYPTO_ALGAPI
1385         select CRYPTO_CAST_COMMON
1386         help
1387           The CAST6 encryption algorithm (synonymous with CAST-256) is
1388           described in RFC2612.
1390 config CRYPTO_CAST6_AVX_X86_64
1391         tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1392         depends on X86 && 64BIT
1393         select CRYPTO_SKCIPHER
1394         select CRYPTO_CAST6
1395         select CRYPTO_CAST_COMMON
1396         select CRYPTO_GLUE_HELPER_X86
1397         select CRYPTO_SIMD
1398         select CRYPTO_XTS
1399         help
1400           The CAST6 encryption algorithm (synonymous with CAST-256) is
1401           described in RFC2612.
1403           This module provides the Cast6 cipher algorithm that processes
1404           eight blocks parallel using the AVX instruction set.
1406 config CRYPTO_DES
1407         tristate "DES and Triple DES EDE cipher algorithms"
1408         select CRYPTO_ALGAPI
1409         select CRYPTO_LIB_DES
1410         help
1411           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1413 config CRYPTO_DES_SPARC64
1414         tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1415         depends on SPARC64
1416         select CRYPTO_ALGAPI
1417         select CRYPTO_LIB_DES
1418         select CRYPTO_SKCIPHER
1419         help
1420           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1421           optimized using SPARC64 crypto opcodes.
1423 config CRYPTO_DES3_EDE_X86_64
1424         tristate "Triple DES EDE cipher algorithm (x86-64)"
1425         depends on X86 && 64BIT
1426         select CRYPTO_SKCIPHER
1427         select CRYPTO_LIB_DES
1428         help
1429           Triple DES EDE (FIPS 46-3) algorithm.
1431           This module provides implementation of the Triple DES EDE cipher
1432           algorithm that is optimized for x86-64 processors. Two versions of
1433           algorithm are provided; regular processing one input block and
1434           one that processes three blocks parallel.
1436 config CRYPTO_FCRYPT
1437         tristate "FCrypt cipher algorithm"
1438         select CRYPTO_ALGAPI
1439         select CRYPTO_SKCIPHER
1440         help
1441           FCrypt algorithm used by RxRPC.
1443 config CRYPTO_KHAZAD
1444         tristate "Khazad cipher algorithm"
1445         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1446         select CRYPTO_ALGAPI
1447         help
1448           Khazad cipher algorithm.
1450           Khazad was a finalist in the initial NESSIE competition.  It is
1451           an algorithm optimized for 64-bit processors with good performance
1452           on 32-bit processors.  Khazad uses an 128 bit key size.
1454           See also:
1455           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1457 config CRYPTO_SALSA20
1458         tristate "Salsa20 stream cipher algorithm"
1459         select CRYPTO_SKCIPHER
1460         help
1461           Salsa20 stream cipher algorithm.
1463           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1464           Stream Cipher Project. See <https://www.ecrypt.eu.org/stream/>
1466           The Salsa20 stream cipher algorithm is designed by Daniel J.
1467           Bernstein <djb@cr.yp.to>. See <https://cr.yp.to/snuffle.html>
1469 config CRYPTO_CHACHA20
1470         tristate "ChaCha stream cipher algorithms"
1471         select CRYPTO_LIB_CHACHA_GENERIC
1472         select CRYPTO_SKCIPHER
1473         help
1474           The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
1476           ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1477           Bernstein and further specified in RFC7539 for use in IETF protocols.
1478           This is the portable C implementation of ChaCha20.  See also:
1479           <https://cr.yp.to/chacha/chacha-20080128.pdf>
1481           XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1482           rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
1483           from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1484           while provably retaining ChaCha20's security.  See also:
1485           <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1487           XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1488           reduced security margin but increased performance.  It can be needed
1489           in some performance-sensitive scenarios.
1491 config CRYPTO_CHACHA20_X86_64
1492         tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
1493         depends on X86 && 64BIT
1494         select CRYPTO_SKCIPHER
1495         select CRYPTO_LIB_CHACHA_GENERIC
1496         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1497         help
1498           SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1499           XChaCha20, and XChaCha12 stream ciphers.
1501 config CRYPTO_CHACHA_MIPS
1502         tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1503         depends on CPU_MIPS32_R2
1504         select CRYPTO_SKCIPHER
1505         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1507 config CRYPTO_SEED
1508         tristate "SEED cipher algorithm"
1509         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1510         select CRYPTO_ALGAPI
1511         help
1512           SEED cipher algorithm (RFC4269).
1514           SEED is a 128-bit symmetric key block cipher that has been
1515           developed by KISA (Korea Information Security Agency) as a
1516           national standard encryption algorithm of the Republic of Korea.
1517           It is a 16 round block cipher with the key size of 128 bit.
1519           See also:
1520           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1522 config CRYPTO_SERPENT
1523         tristate "Serpent cipher algorithm"
1524         select CRYPTO_ALGAPI
1525         help
1526           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1528           Keys are allowed to be from 0 to 256 bits in length, in steps
1529           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1530           variant of Serpent for compatibility with old kerneli.org code.
1532           See also:
1533           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1535 config CRYPTO_SERPENT_SSE2_X86_64
1536         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1537         depends on X86 && 64BIT
1538         select CRYPTO_SKCIPHER
1539         select CRYPTO_GLUE_HELPER_X86
1540         select CRYPTO_SERPENT
1541         select CRYPTO_SIMD
1542         help
1543           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1545           Keys are allowed to be from 0 to 256 bits in length, in steps
1546           of 8 bits.
1548           This module provides Serpent cipher algorithm that processes eight
1549           blocks parallel using SSE2 instruction set.
1551           See also:
1552           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1554 config CRYPTO_SERPENT_SSE2_586
1555         tristate "Serpent cipher algorithm (i586/SSE2)"
1556         depends on X86 && !64BIT
1557         select CRYPTO_SKCIPHER
1558         select CRYPTO_GLUE_HELPER_X86
1559         select CRYPTO_SERPENT
1560         select CRYPTO_SIMD
1561         help
1562           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1564           Keys are allowed to be from 0 to 256 bits in length, in steps
1565           of 8 bits.
1567           This module provides Serpent cipher algorithm that processes four
1568           blocks parallel using SSE2 instruction set.
1570           See also:
1571           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1573 config CRYPTO_SERPENT_AVX_X86_64
1574         tristate "Serpent cipher algorithm (x86_64/AVX)"
1575         depends on X86 && 64BIT
1576         select CRYPTO_SKCIPHER
1577         select CRYPTO_GLUE_HELPER_X86
1578         select CRYPTO_SERPENT
1579         select CRYPTO_SIMD
1580         select CRYPTO_XTS
1581         help
1582           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1584           Keys are allowed to be from 0 to 256 bits in length, in steps
1585           of 8 bits.
1587           This module provides the Serpent cipher algorithm that processes
1588           eight blocks parallel using the AVX instruction set.
1590           See also:
1591           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1593 config CRYPTO_SERPENT_AVX2_X86_64
1594         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1595         depends on X86 && 64BIT
1596         select CRYPTO_SERPENT_AVX_X86_64
1597         help
1598           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1600           Keys are allowed to be from 0 to 256 bits in length, in steps
1601           of 8 bits.
1603           This module provides Serpent cipher algorithm that processes 16
1604           blocks parallel using AVX2 instruction set.
1606           See also:
1607           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1609 config CRYPTO_SM4
1610         tristate "SM4 cipher algorithm"
1611         select CRYPTO_ALGAPI
1612         help
1613           SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1615           SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1616           Organization of State Commercial Administration of China (OSCCA)
1617           as an authorized cryptographic algorithms for the use within China.
1619           SMS4 was originally created for use in protecting wireless
1620           networks, and is mandated in the Chinese National Standard for
1621           Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1622           (GB.15629.11-2003).
1624           The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1625           standardized through TC 260 of the Standardization Administration
1626           of the People's Republic of China (SAC).
1628           The input, output, and key of SMS4 are each 128 bits.
1630           See also: <https://eprint.iacr.org/2008/329.pdf>
1632           If unsure, say N.
1634 config CRYPTO_TEA
1635         tristate "TEA, XTEA and XETA cipher algorithms"
1636         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1637         select CRYPTO_ALGAPI
1638         help
1639           TEA cipher algorithm.
1641           Tiny Encryption Algorithm is a simple cipher that uses
1642           many rounds for security.  It is very fast and uses
1643           little memory.
1645           Xtendend Tiny Encryption Algorithm is a modification to
1646           the TEA algorithm to address a potential key weakness
1647           in the TEA algorithm.
1649           Xtendend Encryption Tiny Algorithm is a mis-implementation
1650           of the XTEA algorithm for compatibility purposes.
1652 config CRYPTO_TWOFISH
1653         tristate "Twofish cipher algorithm"
1654         select CRYPTO_ALGAPI
1655         select CRYPTO_TWOFISH_COMMON
1656         help
1657           Twofish cipher algorithm.
1659           Twofish was submitted as an AES (Advanced Encryption Standard)
1660           candidate cipher by researchers at CounterPane Systems.  It is a
1661           16 round block cipher supporting key sizes of 128, 192, and 256
1662           bits.
1664           See also:
1665           <https://www.schneier.com/twofish.html>
1667 config CRYPTO_TWOFISH_COMMON
1668         tristate
1669         help
1670           Common parts of the Twofish cipher algorithm shared by the
1671           generic c and the assembler implementations.
1673 config CRYPTO_TWOFISH_586
1674         tristate "Twofish cipher algorithms (i586)"
1675         depends on (X86 || UML_X86) && !64BIT
1676         select CRYPTO_ALGAPI
1677         select CRYPTO_TWOFISH_COMMON
1678         help
1679           Twofish cipher algorithm.
1681           Twofish was submitted as an AES (Advanced Encryption Standard)
1682           candidate cipher by researchers at CounterPane Systems.  It is a
1683           16 round block cipher supporting key sizes of 128, 192, and 256
1684           bits.
1686           See also:
1687           <https://www.schneier.com/twofish.html>
1689 config CRYPTO_TWOFISH_X86_64
1690         tristate "Twofish cipher algorithm (x86_64)"
1691         depends on (X86 || UML_X86) && 64BIT
1692         select CRYPTO_ALGAPI
1693         select CRYPTO_TWOFISH_COMMON
1694         help
1695           Twofish cipher algorithm (x86_64).
1697           Twofish was submitted as an AES (Advanced Encryption Standard)
1698           candidate cipher by researchers at CounterPane Systems.  It is a
1699           16 round block cipher supporting key sizes of 128, 192, and 256
1700           bits.
1702           See also:
1703           <https://www.schneier.com/twofish.html>
1705 config CRYPTO_TWOFISH_X86_64_3WAY
1706         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1707         depends on X86 && 64BIT
1708         select CRYPTO_SKCIPHER
1709         select CRYPTO_TWOFISH_COMMON
1710         select CRYPTO_TWOFISH_X86_64
1711         select CRYPTO_GLUE_HELPER_X86
1712         help
1713           Twofish cipher algorithm (x86_64, 3-way parallel).
1715           Twofish was submitted as an AES (Advanced Encryption Standard)
1716           candidate cipher by researchers at CounterPane Systems.  It is a
1717           16 round block cipher supporting key sizes of 128, 192, and 256
1718           bits.
1720           This module provides Twofish cipher algorithm that processes three
1721           blocks parallel, utilizing resources of out-of-order CPUs better.
1723           See also:
1724           <https://www.schneier.com/twofish.html>
1726 config CRYPTO_TWOFISH_AVX_X86_64
1727         tristate "Twofish cipher algorithm (x86_64/AVX)"
1728         depends on X86 && 64BIT
1729         select CRYPTO_SKCIPHER
1730         select CRYPTO_GLUE_HELPER_X86
1731         select CRYPTO_SIMD
1732         select CRYPTO_TWOFISH_COMMON
1733         select CRYPTO_TWOFISH_X86_64
1734         select CRYPTO_TWOFISH_X86_64_3WAY
1735         help
1736           Twofish cipher algorithm (x86_64/AVX).
1738           Twofish was submitted as an AES (Advanced Encryption Standard)
1739           candidate cipher by researchers at CounterPane Systems.  It is a
1740           16 round block cipher supporting key sizes of 128, 192, and 256
1741           bits.
1743           This module provides the Twofish cipher algorithm that processes
1744           eight blocks parallel using the AVX Instruction Set.
1746           See also:
1747           <https://www.schneier.com/twofish.html>
1749 comment "Compression"
1751 config CRYPTO_DEFLATE
1752         tristate "Deflate compression algorithm"
1753         select CRYPTO_ALGAPI
1754         select CRYPTO_ACOMP2
1755         select ZLIB_INFLATE
1756         select ZLIB_DEFLATE
1757         help
1758           This is the Deflate algorithm (RFC1951), specified for use in
1759           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1761           You will most probably want this if using IPSec.
1763 config CRYPTO_LZO
1764         tristate "LZO compression algorithm"
1765         select CRYPTO_ALGAPI
1766         select CRYPTO_ACOMP2
1767         select LZO_COMPRESS
1768         select LZO_DECOMPRESS
1769         help
1770           This is the LZO algorithm.
1772 config CRYPTO_842
1773         tristate "842 compression algorithm"
1774         select CRYPTO_ALGAPI
1775         select CRYPTO_ACOMP2
1776         select 842_COMPRESS
1777         select 842_DECOMPRESS
1778         help
1779           This is the 842 algorithm.
1781 config CRYPTO_LZ4
1782         tristate "LZ4 compression algorithm"
1783         select CRYPTO_ALGAPI
1784         select CRYPTO_ACOMP2
1785         select LZ4_COMPRESS
1786         select LZ4_DECOMPRESS
1787         help
1788           This is the LZ4 algorithm.
1790 config CRYPTO_LZ4HC
1791         tristate "LZ4HC compression algorithm"
1792         select CRYPTO_ALGAPI
1793         select CRYPTO_ACOMP2
1794         select LZ4HC_COMPRESS
1795         select LZ4_DECOMPRESS
1796         help
1797           This is the LZ4 high compression mode algorithm.
1799 config CRYPTO_ZSTD
1800         tristate "Zstd compression algorithm"
1801         select CRYPTO_ALGAPI
1802         select CRYPTO_ACOMP2
1803         select ZSTD_COMPRESS
1804         select ZSTD_DECOMPRESS
1805         help
1806           This is the zstd algorithm.
1808 comment "Random Number Generation"
1810 config CRYPTO_ANSI_CPRNG
1811         tristate "Pseudo Random Number Generation for Cryptographic modules"
1812         select CRYPTO_AES
1813         select CRYPTO_RNG
1814         help
1815           This option enables the generic pseudo random number generator
1816           for cryptographic modules.  Uses the Algorithm specified in
1817           ANSI X9.31 A.2.4. Note that this option must be enabled if
1818           CRYPTO_FIPS is selected
1820 menuconfig CRYPTO_DRBG_MENU
1821         tristate "NIST SP800-90A DRBG"
1822         help
1823           NIST SP800-90A compliant DRBG. In the following submenu, one or
1824           more of the DRBG types must be selected.
1826 if CRYPTO_DRBG_MENU
1828 config CRYPTO_DRBG_HMAC
1829         bool
1830         default y
1831         select CRYPTO_HMAC
1832         select CRYPTO_SHA256
1834 config CRYPTO_DRBG_HASH
1835         bool "Enable Hash DRBG"
1836         select CRYPTO_SHA256
1837         help
1838           Enable the Hash DRBG variant as defined in NIST SP800-90A.
1840 config CRYPTO_DRBG_CTR
1841         bool "Enable CTR DRBG"
1842         select CRYPTO_AES
1843         select CRYPTO_CTR
1844         help
1845           Enable the CTR DRBG variant as defined in NIST SP800-90A.
1847 config CRYPTO_DRBG
1848         tristate
1849         default CRYPTO_DRBG_MENU
1850         select CRYPTO_RNG
1851         select CRYPTO_JITTERENTROPY
1853 endif   # if CRYPTO_DRBG_MENU
1855 config CRYPTO_JITTERENTROPY
1856         tristate "Jitterentropy Non-Deterministic Random Number Generator"
1857         select CRYPTO_RNG
1858         help
1859           The Jitterentropy RNG is a noise that is intended
1860           to provide seed to another RNG. The RNG does not
1861           perform any cryptographic whitening of the generated
1862           random numbers. This Jitterentropy RNG registers with
1863           the kernel crypto API and can be used by any caller.
1865 config CRYPTO_USER_API
1866         tristate
1868 config CRYPTO_USER_API_HASH
1869         tristate "User-space interface for hash algorithms"
1870         depends on NET
1871         select CRYPTO_HASH
1872         select CRYPTO_USER_API
1873         help
1874           This option enables the user-spaces interface for hash
1875           algorithms.
1877 config CRYPTO_USER_API_SKCIPHER
1878         tristate "User-space interface for symmetric key cipher algorithms"
1879         depends on NET
1880         select CRYPTO_SKCIPHER
1881         select CRYPTO_USER_API
1882         help
1883           This option enables the user-spaces interface for symmetric
1884           key cipher algorithms.
1886 config CRYPTO_USER_API_RNG
1887         tristate "User-space interface for random number generator algorithms"
1888         depends on NET
1889         select CRYPTO_RNG
1890         select CRYPTO_USER_API
1891         help
1892           This option enables the user-spaces interface for random
1893           number generator algorithms.
1895 config CRYPTO_USER_API_RNG_CAVP
1896         bool "Enable CAVP testing of DRBG"
1897         depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1898         help
1899           This option enables extra API for CAVP testing via the user-space
1900           interface: resetting of DRBG entropy, and providing Additional Data.
1901           This should only be enabled for CAVP testing. You should say
1902           no unless you know what this is.
1904 config CRYPTO_USER_API_AEAD
1905         tristate "User-space interface for AEAD cipher algorithms"
1906         depends on NET
1907         select CRYPTO_AEAD
1908         select CRYPTO_SKCIPHER
1909         select CRYPTO_NULL
1910         select CRYPTO_USER_API
1911         help
1912           This option enables the user-spaces interface for AEAD
1913           cipher algorithms.
1915 config CRYPTO_USER_API_ENABLE_OBSOLETE
1916         bool "Enable obsolete cryptographic algorithms for userspace"
1917         depends on CRYPTO_USER_API
1918         default y
1919         help
1920           Allow obsolete cryptographic algorithms to be selected that have
1921           already been phased out from internal use by the kernel, and are
1922           only useful for userspace clients that still rely on them.
1924 config CRYPTO_STATS
1925         bool "Crypto usage statistics for User-space"
1926         depends on CRYPTO_USER
1927         help
1928           This option enables the gathering of crypto stats.
1929           This will collect:
1930           - encrypt/decrypt size and numbers of symmeric operations
1931           - compress/decompress size and numbers of compress operations
1932           - size and numbers of hash operations
1933           - encrypt/decrypt/sign/verify numbers for asymmetric operations
1934           - generate/seed numbers for rng operations
1936 config CRYPTO_HASH_INFO
1937         bool
1939 source "lib/crypto/Kconfig"
1940 source "drivers/crypto/Kconfig"
1941 source "crypto/asymmetric_keys/Kconfig"
1942 source "certs/Kconfig"
1944 endif   # if CRYPTO