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