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