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