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