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