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