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