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