crypto: x86/cast6 - drop dependency on glue helper
[linux-2.6-microblaze.git] / crypto / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # Generic algorithms support
4 #
5 config XOR_BLOCKS
6         tristate
7
8 #
9 # async_tx api: hardware offloaded memory transfer/transform support
10 #
11 source "crypto/async_tx/Kconfig"
12
13 #
14 # Cryptographic API Configuration
15 #
16 menuconfig CRYPTO
17         tristate "Cryptographic API"
18         help
19           This option provides the core Cryptographic API.
20
21 if CRYPTO
22
23 comment "Crypto core or helper"
24
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.
34
35 config CRYPTO_ALGAPI
36         tristate
37         select CRYPTO_ALGAPI2
38         help
39           This option provides the API for cryptographic algorithms.
40
41 config CRYPTO_ALGAPI2
42         tristate
43
44 config CRYPTO_AEAD
45         tristate
46         select CRYPTO_AEAD2
47         select CRYPTO_ALGAPI
48
49 config CRYPTO_AEAD2
50         tristate
51         select CRYPTO_ALGAPI2
52         select CRYPTO_NULL2
53         select CRYPTO_RNG2
54
55 config CRYPTO_SKCIPHER
56         tristate
57         select CRYPTO_SKCIPHER2
58         select CRYPTO_ALGAPI
59
60 config CRYPTO_SKCIPHER2
61         tristate
62         select CRYPTO_ALGAPI2
63         select CRYPTO_RNG2
64
65 config CRYPTO_HASH
66         tristate
67         select CRYPTO_HASH2
68         select CRYPTO_ALGAPI
69
70 config CRYPTO_HASH2
71         tristate
72         select CRYPTO_ALGAPI2
73
74 config CRYPTO_RNG
75         tristate
76         select CRYPTO_RNG2
77         select CRYPTO_ALGAPI
78
79 config CRYPTO_RNG2
80         tristate
81         select CRYPTO_ALGAPI2
82
83 config CRYPTO_RNG_DEFAULT
84         tristate
85         select CRYPTO_DRBG_MENU
86
87 config CRYPTO_AKCIPHER2
88         tristate
89         select CRYPTO_ALGAPI2
90
91 config CRYPTO_AKCIPHER
92         tristate
93         select CRYPTO_AKCIPHER2
94         select CRYPTO_ALGAPI
95
96 config CRYPTO_KPP2
97         tristate
98         select CRYPTO_ALGAPI2
99
100 config CRYPTO_KPP
101         tristate
102         select CRYPTO_ALGAPI
103         select CRYPTO_KPP2
104
105 config CRYPTO_ACOMP2
106         tristate
107         select CRYPTO_ALGAPI2
108         select SGL_ALLOC
109
110 config CRYPTO_ACOMP
111         tristate
112         select CRYPTO_ALGAPI
113         select CRYPTO_ACOMP2
114
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).
121
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
130
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).
138
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.
145
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.
152
153           This is intended for developer use only, as these tests take much
154           longer to run than the normal self tests.
155
156 config CRYPTO_GF128MUL
157         tristate
158
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.
164
165 config CRYPTO_NULL2
166         tristate
167         select CRYPTO_ALGAPI2
168         select CRYPTO_SKCIPHER2
169         select CRYPTO_HASH2
170
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.
180
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.
190
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.
201
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.
208
209 config CRYPTO_SIMD
210         tristate
211         select CRYPTO_CRYPTD
212
213 config CRYPTO_GLUE_HELPER_X86
214         tristate
215         depends on X86
216         select CRYPTO_SKCIPHER
217
218 config CRYPTO_ENGINE
219         tristate
220
221 comment "Public-key cryptography"
222
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.
231
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.
238
239 config CRYPTO_ECC
240         tristate
241
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
249
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.
262
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.
274
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
279
280 config CRYPTO_CURVE25519
281         tristate "Curve25519 algorithm"
282         select CRYPTO_KPP
283         select CRYPTO_LIB_CURVE25519_GENERIC
284
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
290
291 comment "Authenticated Encryption with Associated Data"
292
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.
301
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.
312
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.
321
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.
325
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.
332
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
337
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.
345
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
356
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.
367
368 comment "Block modes"
369
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.
377
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.
385
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.
393
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.
406
407           See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
408
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.
417
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.
429
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.
441
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.
449
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.
459
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.
467
468 config CRYPTO_NHPOLY1305
469         tristate
470         select CRYPTO_HASH
471         select CRYPTO_LIB_POLY1305_GENERIC
472
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.
480
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.
488
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.
504
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.
510
511           If unsure, say N.
512
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.
523
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.)
532
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)
540
541 comment "Hash modes"
542
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).
550
551           https://tools.ietf.org/html/rfc4493
552           http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
553
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.
561
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
571
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.
579
580           See also:
581           <https://fastcrypto.org/vmac>
582
583 comment "Digest"
584
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.
593
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.
605
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.
615
616
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.
625
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.
633
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.
646
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.
654
655
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.
663
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.
671
672           This module provides the following algorithms:
673
674           - blake2b-160
675           - blake2b-256
676           - blake2b-384
677           - blake2b-512
678
679           See https://blake2.net for further information.
680
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.
689
690           This module provides the following algorithms:
691
692           - blake2s-128
693           - blake2s-160
694           - blake2s-224
695           - blake2s-256
696
697           See https://blake2.net for further information.
698
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
704
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.
712
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.
723
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.
732
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.
740
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.
748
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.
755
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.
759
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.
767
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.
772
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
777
778 config CRYPTO_MD4
779         tristate "MD4 digest algorithm"
780         select CRYPTO_HASH
781         help
782           MD4 message digest algorithm (RFC1320).
783
784 config CRYPTO_MD5
785         tristate "MD5 digest algorithm"
786         select CRYPTO_HASH
787         help
788           MD5 message digest algorithm (RFC1321).
789
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.
798
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.
806
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.
815
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.
824
825 config CRYPTO_RMD128
826         tristate "RIPEMD-128 digest algorithm"
827         select CRYPTO_HASH
828         help
829           RIPEMD-128 (ISO/IEC 10118-3:2004).
830
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.
834
835           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
836           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
837
838 config CRYPTO_RMD160
839         tristate "RIPEMD-160 digest algorithm"
840         select CRYPTO_HASH
841         help
842           RIPEMD-160 (ISO/IEC 10118-3:2004).
843
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).
848
849           It's speed is comparable to SHA1 and there are no known attacks
850           against RIPEMD-160.
851
852           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
853           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
854
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).
863
864           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
865           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
866
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).
875
876           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
877           See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
878
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).
884
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.
895
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.
907
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.
918
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.
927
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.
936
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).
943
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.
950
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).
957
958           This version of SHA implements a 256 bit hash with 128 bits of
959           security against collision attacks.
960
961           This code also includes SHA-224, a 224 bit hash with 112 bits
962           of security against collision attacks.
963
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.
972
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.
981
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.
990
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).
996
997           This version of SHA implements a 512 bit hash with 256 bits of
998           security against collision attacks.
999
1000           This code also includes SHA-384, a 384 bit hash with 192 bits
1001           of security against collision attacks.
1002
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.
1011
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.
1020
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.
1027
1028           References:
1029           http://keccak.noekeon.org/
1030
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.
1037
1038           References:
1039           http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1040           https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1041
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.
1049
1050           References:
1051           https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1052           https://tools.ietf.org/html/rfc6986
1053
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
1059
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.
1063
1064           See also:
1065           <https://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
1066
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
1072
1073           Whirlpool-512 is part of the NESSIE cryptographic primitives.
1074           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1075
1076           See also:
1077           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
1078
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).
1086
1087 comment "Ciphers"
1088
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.
1096
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.
1105
1106           The AES specifies three key sizes: 128, 192 and 256 bits
1107
1108           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1109
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)
1121
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.
1128
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_SIMD
1137         help
1138           Use Intel AES-NI instructions for AES algorithm.
1139
1140           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1141           algorithm.
1142
1143           Rijndael appears to be consistently a very good performer in
1144           both hardware and software across a wide range of computing
1145           environments regardless of its use in feedback or non-feedback
1146           modes. Its key setup time is excellent, and its key agility is
1147           good. Rijndael's very low memory requirements make it very well
1148           suited for restricted-space environments, in which it also
1149           demonstrates excellent performance. Rijndael's operations are
1150           among the easiest to defend against power and timing attacks.
1151
1152           The AES specifies three key sizes: 128, 192 and 256 bits
1153
1154           See <http://csrc.nist.gov/encryption/aes/> for more information.
1155
1156           In addition to AES cipher algorithm support, the acceleration
1157           for some popular block cipher mode is supported too, including
1158           ECB, CBC, LRW, XTS. The 64 bit version has additional
1159           acceleration for CTR.
1160
1161 config CRYPTO_AES_SPARC64
1162         tristate "AES cipher algorithms (SPARC64)"
1163         depends on SPARC64
1164         select CRYPTO_SKCIPHER
1165         help
1166           Use SPARC64 crypto opcodes for AES algorithm.
1167
1168           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1169           algorithm.
1170
1171           Rijndael appears to be consistently a very good performer in
1172           both hardware and software across a wide range of computing
1173           environments regardless of its use in feedback or non-feedback
1174           modes. Its key setup time is excellent, and its key agility is
1175           good. Rijndael's very low memory requirements make it very well
1176           suited for restricted-space environments, in which it also
1177           demonstrates excellent performance. Rijndael's operations are
1178           among the easiest to defend against power and timing attacks.
1179
1180           The AES specifies three key sizes: 128, 192 and 256 bits
1181
1182           See <http://csrc.nist.gov/encryption/aes/> for more information.
1183
1184           In addition to AES cipher algorithm support, the acceleration
1185           for some popular block cipher mode is supported too, including
1186           ECB and CBC.
1187
1188 config CRYPTO_AES_PPC_SPE
1189         tristate "AES cipher algorithms (PPC SPE)"
1190         depends on PPC && SPE
1191         select CRYPTO_SKCIPHER
1192         help
1193           AES cipher algorithms (FIPS-197). Additionally the acceleration
1194           for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1195           This module should only be used for low power (router) devices
1196           without hardware AES acceleration (e.g. caam crypto). It reduces the
1197           size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1198           timining attacks. Nevertheless it might be not as secure as other
1199           architecture specific assembler implementations that work on 1KB
1200           tables or 256 bytes S-boxes.
1201
1202 config CRYPTO_ANUBIS
1203         tristate "Anubis cipher algorithm"
1204         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1205         select CRYPTO_ALGAPI
1206         help
1207           Anubis cipher algorithm.
1208
1209           Anubis is a variable key length cipher which can use keys from
1210           128 bits to 320 bits in length.  It was evaluated as a entrant
1211           in the NESSIE competition.
1212
1213           See also:
1214           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1215           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1216
1217 config CRYPTO_ARC4
1218         tristate "ARC4 cipher algorithm"
1219         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1220         select CRYPTO_SKCIPHER
1221         select CRYPTO_LIB_ARC4
1222         help
1223           ARC4 cipher algorithm.
1224
1225           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1226           bits in length.  This algorithm is required for driver-based
1227           WEP, but it should not be for other purposes because of the
1228           weakness of the algorithm.
1229
1230 config CRYPTO_BLOWFISH
1231         tristate "Blowfish cipher algorithm"
1232         select CRYPTO_ALGAPI
1233         select CRYPTO_BLOWFISH_COMMON
1234         help
1235           Blowfish cipher algorithm, by Bruce Schneier.
1236
1237           This is a variable key length cipher which can use keys from 32
1238           bits to 448 bits in length.  It's fast, simple and specifically
1239           designed for use on "large microprocessors".
1240
1241           See also:
1242           <https://www.schneier.com/blowfish.html>
1243
1244 config CRYPTO_BLOWFISH_COMMON
1245         tristate
1246         help
1247           Common parts of the Blowfish cipher algorithm shared by the
1248           generic c and the assembler implementations.
1249
1250           See also:
1251           <https://www.schneier.com/blowfish.html>
1252
1253 config CRYPTO_BLOWFISH_X86_64
1254         tristate "Blowfish cipher algorithm (x86_64)"
1255         depends on X86 && 64BIT
1256         select CRYPTO_SKCIPHER
1257         select CRYPTO_BLOWFISH_COMMON
1258         imply CRYPTO_CTR
1259         help
1260           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1261
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".
1265
1266           See also:
1267           <https://www.schneier.com/blowfish.html>
1268
1269 config CRYPTO_CAMELLIA
1270         tristate "Camellia cipher algorithms"
1271         depends on CRYPTO
1272         select CRYPTO_ALGAPI
1273         help
1274           Camellia cipher algorithms module.
1275
1276           Camellia is a symmetric key block cipher developed jointly
1277           at NTT and Mitsubishi Electric Corporation.
1278
1279           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1280
1281           See also:
1282           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1283
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         imply CRYPTO_CTR
1290         help
1291           Camellia cipher algorithm module (x86_64).
1292
1293           Camellia is a symmetric key block cipher developed jointly
1294           at NTT and Mitsubishi Electric Corporation.
1295
1296           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1297
1298           See also:
1299           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1300
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_SIMD
1308         imply CRYPTO_XTS
1309         help
1310           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1311
1312           Camellia is a symmetric key block cipher developed jointly
1313           at NTT and Mitsubishi Electric Corporation.
1314
1315           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1316
1317           See also:
1318           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1319
1320 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1321         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1322         depends on X86 && 64BIT
1323         depends on CRYPTO
1324         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1325         help
1326           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1327
1328           Camellia is a symmetric key block cipher developed jointly
1329           at NTT and Mitsubishi Electric Corporation.
1330
1331           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1332
1333           See also:
1334           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1335
1336 config CRYPTO_CAMELLIA_SPARC64
1337         tristate "Camellia cipher algorithm (SPARC64)"
1338         depends on SPARC64
1339         depends on CRYPTO
1340         select CRYPTO_ALGAPI
1341         select CRYPTO_SKCIPHER
1342         help
1343           Camellia cipher algorithm module (SPARC64).
1344
1345           Camellia is a symmetric key block cipher developed jointly
1346           at NTT and Mitsubishi Electric Corporation.
1347
1348           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1349
1350           See also:
1351           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1352
1353 config CRYPTO_CAST_COMMON
1354         tristate
1355         help
1356           Common parts of the CAST cipher algorithms shared by the
1357           generic c and the assembler implementations.
1358
1359 config CRYPTO_CAST5
1360         tristate "CAST5 (CAST-128) cipher algorithm"
1361         select CRYPTO_ALGAPI
1362         select CRYPTO_CAST_COMMON
1363         help
1364           The CAST5 encryption algorithm (synonymous with CAST-128) is
1365           described in RFC2144.
1366
1367 config CRYPTO_CAST5_AVX_X86_64
1368         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1369         depends on X86 && 64BIT
1370         select CRYPTO_SKCIPHER
1371         select CRYPTO_CAST5
1372         select CRYPTO_CAST_COMMON
1373         select CRYPTO_SIMD
1374         imply CRYPTO_CTR
1375         help
1376           The CAST5 encryption algorithm (synonymous with CAST-128) is
1377           described in RFC2144.
1378
1379           This module provides the Cast5 cipher algorithm that processes
1380           sixteen blocks parallel using the AVX instruction set.
1381
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.
1389
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_SIMD
1397         imply CRYPTO_XTS
1398         imply CRYPTO_CTR
1399         help
1400           The CAST6 encryption algorithm (synonymous with CAST-256) is
1401           described in RFC2612.
1402
1403           This module provides the Cast6 cipher algorithm that processes
1404           eight blocks parallel using the AVX instruction set.
1405
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).
1412
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.
1422
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         imply CRYPTO_CTR
1429         help
1430           Triple DES EDE (FIPS 46-3) algorithm.
1431
1432           This module provides implementation of the Triple DES EDE cipher
1433           algorithm that is optimized for x86-64 processors. Two versions of
1434           algorithm are provided; regular processing one input block and
1435           one that processes three blocks parallel.
1436
1437 config CRYPTO_FCRYPT
1438         tristate "FCrypt cipher algorithm"
1439         select CRYPTO_ALGAPI
1440         select CRYPTO_SKCIPHER
1441         help
1442           FCrypt algorithm used by RxRPC.
1443
1444 config CRYPTO_KHAZAD
1445         tristate "Khazad cipher algorithm"
1446         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1447         select CRYPTO_ALGAPI
1448         help
1449           Khazad cipher algorithm.
1450
1451           Khazad was a finalist in the initial NESSIE competition.  It is
1452           an algorithm optimized for 64-bit processors with good performance
1453           on 32-bit processors.  Khazad uses an 128 bit key size.
1454
1455           See also:
1456           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1457
1458 config CRYPTO_SALSA20
1459         tristate "Salsa20 stream cipher algorithm"
1460         select CRYPTO_SKCIPHER
1461         help
1462           Salsa20 stream cipher algorithm.
1463
1464           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1465           Stream Cipher Project. See <https://www.ecrypt.eu.org/stream/>
1466
1467           The Salsa20 stream cipher algorithm is designed by Daniel J.
1468           Bernstein <djb@cr.yp.to>. See <https://cr.yp.to/snuffle.html>
1469
1470 config CRYPTO_CHACHA20
1471         tristate "ChaCha stream cipher algorithms"
1472         select CRYPTO_LIB_CHACHA_GENERIC
1473         select CRYPTO_SKCIPHER
1474         help
1475           The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
1476
1477           ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1478           Bernstein and further specified in RFC7539 for use in IETF protocols.
1479           This is the portable C implementation of ChaCha20.  See also:
1480           <https://cr.yp.to/chacha/chacha-20080128.pdf>
1481
1482           XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1483           rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
1484           from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1485           while provably retaining ChaCha20's security.  See also:
1486           <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1487
1488           XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1489           reduced security margin but increased performance.  It can be needed
1490           in some performance-sensitive scenarios.
1491
1492 config CRYPTO_CHACHA20_X86_64
1493         tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
1494         depends on X86 && 64BIT
1495         select CRYPTO_SKCIPHER
1496         select CRYPTO_LIB_CHACHA_GENERIC
1497         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1498         help
1499           SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1500           XChaCha20, and XChaCha12 stream ciphers.
1501
1502 config CRYPTO_CHACHA_MIPS
1503         tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1504         depends on CPU_MIPS32_R2
1505         select CRYPTO_SKCIPHER
1506         select CRYPTO_ARCH_HAVE_LIB_CHACHA
1507
1508 config CRYPTO_SEED
1509         tristate "SEED cipher algorithm"
1510         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1511         select CRYPTO_ALGAPI
1512         help
1513           SEED cipher algorithm (RFC4269).
1514
1515           SEED is a 128-bit symmetric key block cipher that has been
1516           developed by KISA (Korea Information Security Agency) as a
1517           national standard encryption algorithm of the Republic of Korea.
1518           It is a 16 round block cipher with the key size of 128 bit.
1519
1520           See also:
1521           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1522
1523 config CRYPTO_SERPENT
1524         tristate "Serpent cipher algorithm"
1525         select CRYPTO_ALGAPI
1526         help
1527           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1528
1529           Keys are allowed to be from 0 to 256 bits in length, in steps
1530           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1531           variant of Serpent for compatibility with old kerneli.org code.
1532
1533           See also:
1534           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1535
1536 config CRYPTO_SERPENT_SSE2_X86_64
1537         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1538         depends on X86 && 64BIT
1539         select CRYPTO_SKCIPHER
1540         select CRYPTO_SERPENT
1541         select CRYPTO_SIMD
1542         imply CRYPTO_CTR
1543         help
1544           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1545
1546           Keys are allowed to be from 0 to 256 bits in length, in steps
1547           of 8 bits.
1548
1549           This module provides Serpent cipher algorithm that processes eight
1550           blocks parallel using SSE2 instruction set.
1551
1552           See also:
1553           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1554
1555 config CRYPTO_SERPENT_SSE2_586
1556         tristate "Serpent cipher algorithm (i586/SSE2)"
1557         depends on X86 && !64BIT
1558         select CRYPTO_SKCIPHER
1559         select CRYPTO_SERPENT
1560         select CRYPTO_SIMD
1561         imply CRYPTO_CTR
1562         help
1563           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1564
1565           Keys are allowed to be from 0 to 256 bits in length, in steps
1566           of 8 bits.
1567
1568           This module provides Serpent cipher algorithm that processes four
1569           blocks parallel using SSE2 instruction set.
1570
1571           See also:
1572           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1573
1574 config CRYPTO_SERPENT_AVX_X86_64
1575         tristate "Serpent cipher algorithm (x86_64/AVX)"
1576         depends on X86 && 64BIT
1577         select CRYPTO_SKCIPHER
1578         select CRYPTO_SERPENT
1579         select CRYPTO_SIMD
1580         imply CRYPTO_XTS
1581         imply CRYPTO_CTR
1582         help
1583           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1584
1585           Keys are allowed to be from 0 to 256 bits in length, in steps
1586           of 8 bits.
1587
1588           This module provides the Serpent cipher algorithm that processes
1589           eight blocks parallel using the AVX instruction set.
1590
1591           See also:
1592           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1593
1594 config CRYPTO_SERPENT_AVX2_X86_64
1595         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1596         depends on X86 && 64BIT
1597         select CRYPTO_SERPENT_AVX_X86_64
1598         help
1599           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1600
1601           Keys are allowed to be from 0 to 256 bits in length, in steps
1602           of 8 bits.
1603
1604           This module provides Serpent cipher algorithm that processes 16
1605           blocks parallel using AVX2 instruction set.
1606
1607           See also:
1608           <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1609
1610 config CRYPTO_SM4
1611         tristate "SM4 cipher algorithm"
1612         select CRYPTO_ALGAPI
1613         help
1614           SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1615
1616           SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1617           Organization of State Commercial Administration of China (OSCCA)
1618           as an authorized cryptographic algorithms for the use within China.
1619
1620           SMS4 was originally created for use in protecting wireless
1621           networks, and is mandated in the Chinese National Standard for
1622           Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1623           (GB.15629.11-2003).
1624
1625           The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1626           standardized through TC 260 of the Standardization Administration
1627           of the People's Republic of China (SAC).
1628
1629           The input, output, and key of SMS4 are each 128 bits.
1630
1631           See also: <https://eprint.iacr.org/2008/329.pdf>
1632
1633           If unsure, say N.
1634
1635 config CRYPTO_TEA
1636         tristate "TEA, XTEA and XETA cipher algorithms"
1637         depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1638         select CRYPTO_ALGAPI
1639         help
1640           TEA cipher algorithm.
1641
1642           Tiny Encryption Algorithm is a simple cipher that uses
1643           many rounds for security.  It is very fast and uses
1644           little memory.
1645
1646           Xtendend Tiny Encryption Algorithm is a modification to
1647           the TEA algorithm to address a potential key weakness
1648           in the TEA algorithm.
1649
1650           Xtendend Encryption Tiny Algorithm is a mis-implementation
1651           of the XTEA algorithm for compatibility purposes.
1652
1653 config CRYPTO_TWOFISH
1654         tristate "Twofish cipher algorithm"
1655         select CRYPTO_ALGAPI
1656         select CRYPTO_TWOFISH_COMMON
1657         help
1658           Twofish cipher algorithm.
1659
1660           Twofish was submitted as an AES (Advanced Encryption Standard)
1661           candidate cipher by researchers at CounterPane Systems.  It is a
1662           16 round block cipher supporting key sizes of 128, 192, and 256
1663           bits.
1664
1665           See also:
1666           <https://www.schneier.com/twofish.html>
1667
1668 config CRYPTO_TWOFISH_COMMON
1669         tristate
1670         help
1671           Common parts of the Twofish cipher algorithm shared by the
1672           generic c and the assembler implementations.
1673
1674 config CRYPTO_TWOFISH_586
1675         tristate "Twofish cipher algorithms (i586)"
1676         depends on (X86 || UML_X86) && !64BIT
1677         select CRYPTO_ALGAPI
1678         select CRYPTO_TWOFISH_COMMON
1679         imply CRYPTO_CTR
1680         help
1681           Twofish cipher algorithm.
1682
1683           Twofish was submitted as an AES (Advanced Encryption Standard)
1684           candidate cipher by researchers at CounterPane Systems.  It is a
1685           16 round block cipher supporting key sizes of 128, 192, and 256
1686           bits.
1687
1688           See also:
1689           <https://www.schneier.com/twofish.html>
1690
1691 config CRYPTO_TWOFISH_X86_64
1692         tristate "Twofish cipher algorithm (x86_64)"
1693         depends on (X86 || UML_X86) && 64BIT
1694         select CRYPTO_ALGAPI
1695         select CRYPTO_TWOFISH_COMMON
1696         imply CRYPTO_CTR
1697         help
1698           Twofish cipher algorithm (x86_64).
1699
1700           Twofish was submitted as an AES (Advanced Encryption Standard)
1701           candidate cipher by researchers at CounterPane Systems.  It is a
1702           16 round block cipher supporting key sizes of 128, 192, and 256
1703           bits.
1704
1705           See also:
1706           <https://www.schneier.com/twofish.html>
1707
1708 config CRYPTO_TWOFISH_X86_64_3WAY
1709         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1710         depends on X86 && 64BIT
1711         select CRYPTO_SKCIPHER
1712         select CRYPTO_TWOFISH_COMMON
1713         select CRYPTO_TWOFISH_X86_64
1714         select CRYPTO_GLUE_HELPER_X86
1715         help
1716           Twofish cipher algorithm (x86_64, 3-way parallel).
1717
1718           Twofish was submitted as an AES (Advanced Encryption Standard)
1719           candidate cipher by researchers at CounterPane Systems.  It is a
1720           16 round block cipher supporting key sizes of 128, 192, and 256
1721           bits.
1722
1723           This module provides Twofish cipher algorithm that processes three
1724           blocks parallel, utilizing resources of out-of-order CPUs better.
1725
1726           See also:
1727           <https://www.schneier.com/twofish.html>
1728
1729 config CRYPTO_TWOFISH_AVX_X86_64
1730         tristate "Twofish cipher algorithm (x86_64/AVX)"
1731         depends on X86 && 64BIT
1732         select CRYPTO_SKCIPHER
1733         select CRYPTO_GLUE_HELPER_X86
1734         select CRYPTO_SIMD
1735         select CRYPTO_TWOFISH_COMMON
1736         select CRYPTO_TWOFISH_X86_64
1737         select CRYPTO_TWOFISH_X86_64_3WAY
1738         imply CRYPTO_XTS
1739         help
1740           Twofish cipher algorithm (x86_64/AVX).
1741
1742           Twofish was submitted as an AES (Advanced Encryption Standard)
1743           candidate cipher by researchers at CounterPane Systems.  It is a
1744           16 round block cipher supporting key sizes of 128, 192, and 256
1745           bits.
1746
1747           This module provides the Twofish cipher algorithm that processes
1748           eight blocks parallel using the AVX Instruction Set.
1749
1750           See also:
1751           <https://www.schneier.com/twofish.html>
1752
1753 comment "Compression"
1754
1755 config CRYPTO_DEFLATE
1756         tristate "Deflate compression algorithm"
1757         select CRYPTO_ALGAPI
1758         select CRYPTO_ACOMP2
1759         select ZLIB_INFLATE
1760         select ZLIB_DEFLATE
1761         help
1762           This is the Deflate algorithm (RFC1951), specified for use in
1763           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1764
1765           You will most probably want this if using IPSec.
1766
1767 config CRYPTO_LZO
1768         tristate "LZO compression algorithm"
1769         select CRYPTO_ALGAPI
1770         select CRYPTO_ACOMP2
1771         select LZO_COMPRESS
1772         select LZO_DECOMPRESS
1773         help
1774           This is the LZO algorithm.
1775
1776 config CRYPTO_842
1777         tristate "842 compression algorithm"
1778         select CRYPTO_ALGAPI
1779         select CRYPTO_ACOMP2
1780         select 842_COMPRESS
1781         select 842_DECOMPRESS
1782         help
1783           This is the 842 algorithm.
1784
1785 config CRYPTO_LZ4
1786         tristate "LZ4 compression algorithm"
1787         select CRYPTO_ALGAPI
1788         select CRYPTO_ACOMP2
1789         select LZ4_COMPRESS
1790         select LZ4_DECOMPRESS
1791         help
1792           This is the LZ4 algorithm.
1793
1794 config CRYPTO_LZ4HC
1795         tristate "LZ4HC compression algorithm"
1796         select CRYPTO_ALGAPI
1797         select CRYPTO_ACOMP2
1798         select LZ4HC_COMPRESS
1799         select LZ4_DECOMPRESS
1800         help
1801           This is the LZ4 high compression mode algorithm.
1802
1803 config CRYPTO_ZSTD
1804         tristate "Zstd compression algorithm"
1805         select CRYPTO_ALGAPI
1806         select CRYPTO_ACOMP2
1807         select ZSTD_COMPRESS
1808         select ZSTD_DECOMPRESS
1809         help
1810           This is the zstd algorithm.
1811
1812 comment "Random Number Generation"
1813
1814 config CRYPTO_ANSI_CPRNG
1815         tristate "Pseudo Random Number Generation for Cryptographic modules"
1816         select CRYPTO_AES
1817         select CRYPTO_RNG
1818         help
1819           This option enables the generic pseudo random number generator
1820           for cryptographic modules.  Uses the Algorithm specified in
1821           ANSI X9.31 A.2.4. Note that this option must be enabled if
1822           CRYPTO_FIPS is selected
1823
1824 menuconfig CRYPTO_DRBG_MENU
1825         tristate "NIST SP800-90A DRBG"
1826         help
1827           NIST SP800-90A compliant DRBG. In the following submenu, one or
1828           more of the DRBG types must be selected.
1829
1830 if CRYPTO_DRBG_MENU
1831
1832 config CRYPTO_DRBG_HMAC
1833         bool
1834         default y
1835         select CRYPTO_HMAC
1836         select CRYPTO_SHA256
1837
1838 config CRYPTO_DRBG_HASH
1839         bool "Enable Hash DRBG"
1840         select CRYPTO_SHA256
1841         help
1842           Enable the Hash DRBG variant as defined in NIST SP800-90A.
1843
1844 config CRYPTO_DRBG_CTR
1845         bool "Enable CTR DRBG"
1846         select CRYPTO_AES
1847         select CRYPTO_CTR
1848         help
1849           Enable the CTR DRBG variant as defined in NIST SP800-90A.
1850
1851 config CRYPTO_DRBG
1852         tristate
1853         default CRYPTO_DRBG_MENU
1854         select CRYPTO_RNG
1855         select CRYPTO_JITTERENTROPY
1856
1857 endif   # if CRYPTO_DRBG_MENU
1858
1859 config CRYPTO_JITTERENTROPY
1860         tristate "Jitterentropy Non-Deterministic Random Number Generator"
1861         select CRYPTO_RNG
1862         help
1863           The Jitterentropy RNG is a noise that is intended
1864           to provide seed to another RNG. The RNG does not
1865           perform any cryptographic whitening of the generated
1866           random numbers. This Jitterentropy RNG registers with
1867           the kernel crypto API and can be used by any caller.
1868
1869 config CRYPTO_USER_API
1870         tristate
1871
1872 config CRYPTO_USER_API_HASH
1873         tristate "User-space interface for hash algorithms"
1874         depends on NET
1875         select CRYPTO_HASH
1876         select CRYPTO_USER_API
1877         help
1878           This option enables the user-spaces interface for hash
1879           algorithms.
1880
1881 config CRYPTO_USER_API_SKCIPHER
1882         tristate "User-space interface for symmetric key cipher algorithms"
1883         depends on NET
1884         select CRYPTO_SKCIPHER
1885         select CRYPTO_USER_API
1886         help
1887           This option enables the user-spaces interface for symmetric
1888           key cipher algorithms.
1889
1890 config CRYPTO_USER_API_RNG
1891         tristate "User-space interface for random number generator algorithms"
1892         depends on NET
1893         select CRYPTO_RNG
1894         select CRYPTO_USER_API
1895         help
1896           This option enables the user-spaces interface for random
1897           number generator algorithms.
1898
1899 config CRYPTO_USER_API_RNG_CAVP
1900         bool "Enable CAVP testing of DRBG"
1901         depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1902         help
1903           This option enables extra API for CAVP testing via the user-space
1904           interface: resetting of DRBG entropy, and providing Additional Data.
1905           This should only be enabled for CAVP testing. You should say
1906           no unless you know what this is.
1907
1908 config CRYPTO_USER_API_AEAD
1909         tristate "User-space interface for AEAD cipher algorithms"
1910         depends on NET
1911         select CRYPTO_AEAD
1912         select CRYPTO_SKCIPHER
1913         select CRYPTO_NULL
1914         select CRYPTO_USER_API
1915         help
1916           This option enables the user-spaces interface for AEAD
1917           cipher algorithms.
1918
1919 config CRYPTO_USER_API_ENABLE_OBSOLETE
1920         bool "Enable obsolete cryptographic algorithms for userspace"
1921         depends on CRYPTO_USER_API
1922         default y
1923         help
1924           Allow obsolete cryptographic algorithms to be selected that have
1925           already been phased out from internal use by the kernel, and are
1926           only useful for userspace clients that still rely on them.
1927
1928 config CRYPTO_STATS
1929         bool "Crypto usage statistics for User-space"
1930         depends on CRYPTO_USER
1931         help
1932           This option enables the gathering of crypto stats.
1933           This will collect:
1934           - encrypt/decrypt size and numbers of symmeric operations
1935           - compress/decompress size and numbers of compress operations
1936           - size and numbers of hash operations
1937           - encrypt/decrypt/sign/verify numbers for asymmetric operations
1938           - generate/seed numbers for rng operations
1939
1940 config CRYPTO_HASH_INFO
1941         bool
1942
1943 source "lib/crypto/Kconfig"
1944 source "drivers/crypto/Kconfig"
1945 source "crypto/asymmetric_keys/Kconfig"
1946 source "certs/Kconfig"
1947
1948 endif   # if CRYPTO