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