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