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