xref: /openbmc/linux/crypto/Kconfig (revision 95e9fd10)
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_MANAGER_DISABLE_TESTS
27	help
28	  This options enables the fips boot option which is
29	  required if you want to system to operate in a FIPS 200
30	  certification.  You should say no unless you know what
31	  this is.
32
33config CRYPTO_ALGAPI
34	tristate
35	select CRYPTO_ALGAPI2
36	help
37	  This option provides the API for cryptographic algorithms.
38
39config CRYPTO_ALGAPI2
40	tristate
41
42config CRYPTO_AEAD
43	tristate
44	select CRYPTO_AEAD2
45	select CRYPTO_ALGAPI
46
47config CRYPTO_AEAD2
48	tristate
49	select CRYPTO_ALGAPI2
50
51config CRYPTO_BLKCIPHER
52	tristate
53	select CRYPTO_BLKCIPHER2
54	select CRYPTO_ALGAPI
55
56config CRYPTO_BLKCIPHER2
57	tristate
58	select CRYPTO_ALGAPI2
59	select CRYPTO_RNG2
60	select CRYPTO_WORKQUEUE
61
62config CRYPTO_HASH
63	tristate
64	select CRYPTO_HASH2
65	select CRYPTO_ALGAPI
66
67config CRYPTO_HASH2
68	tristate
69	select CRYPTO_ALGAPI2
70
71config CRYPTO_RNG
72	tristate
73	select CRYPTO_RNG2
74	select CRYPTO_ALGAPI
75
76config CRYPTO_RNG2
77	tristate
78	select CRYPTO_ALGAPI2
79
80config CRYPTO_PCOMP
81	tristate
82	select CRYPTO_PCOMP2
83	select CRYPTO_ALGAPI
84
85config CRYPTO_PCOMP2
86	tristate
87	select CRYPTO_ALGAPI2
88
89config CRYPTO_MANAGER
90	tristate "Cryptographic algorithm manager"
91	select CRYPTO_MANAGER2
92	help
93	  Create default cryptographic template instantiations such as
94	  cbc(aes).
95
96config CRYPTO_MANAGER2
97	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
98	select CRYPTO_AEAD2
99	select CRYPTO_HASH2
100	select CRYPTO_BLKCIPHER2
101	select CRYPTO_PCOMP2
102
103config CRYPTO_USER
104	tristate "Userspace cryptographic algorithm configuration"
105	depends on NET
106	select CRYPTO_MANAGER
107	help
108	  Userspace configuration for cryptographic instantiations such as
109	  cbc(aes).
110
111config CRYPTO_MANAGER_DISABLE_TESTS
112	bool "Disable run-time self tests"
113	default y
114	depends on CRYPTO_MANAGER2
115	help
116	  Disable run-time self tests that normally take place at
117	  algorithm registration.
118
119config CRYPTO_GF128MUL
120	tristate "GF(2^128) multiplication functions"
121	help
122	  Efficient table driven implementation of multiplications in the
123	  field GF(2^128).  This is needed by some cypher modes. This
124	  option will be selected automatically if you select such a
125	  cipher mode.  Only select this option by hand if you expect to load
126	  an external module that requires these functions.
127
128config CRYPTO_NULL
129	tristate "Null algorithms"
130	select CRYPTO_ALGAPI
131	select CRYPTO_BLKCIPHER
132	select CRYPTO_HASH
133	help
134	  These are 'Null' algorithms, used by IPsec, which do nothing.
135
136config CRYPTO_PCRYPT
137	tristate "Parallel crypto engine (EXPERIMENTAL)"
138	depends on SMP && EXPERIMENTAL
139	select PADATA
140	select CRYPTO_MANAGER
141	select CRYPTO_AEAD
142	help
143	  This converts an arbitrary crypto algorithm into a parallel
144	  algorithm that executes in kernel threads.
145
146config CRYPTO_WORKQUEUE
147       tristate
148
149config CRYPTO_CRYPTD
150	tristate "Software async crypto daemon"
151	select CRYPTO_BLKCIPHER
152	select CRYPTO_HASH
153	select CRYPTO_MANAGER
154	select CRYPTO_WORKQUEUE
155	help
156	  This is a generic software asynchronous crypto daemon that
157	  converts an arbitrary synchronous software crypto algorithm
158	  into an asynchronous algorithm that executes in a kernel thread.
159
160config CRYPTO_AUTHENC
161	tristate "Authenc support"
162	select CRYPTO_AEAD
163	select CRYPTO_BLKCIPHER
164	select CRYPTO_MANAGER
165	select CRYPTO_HASH
166	help
167	  Authenc: Combined mode wrapper for IPsec.
168	  This is required for IPSec.
169
170config CRYPTO_TEST
171	tristate "Testing module"
172	depends on m
173	select CRYPTO_MANAGER
174	help
175	  Quick & dirty crypto test module.
176
177config CRYPTO_ABLK_HELPER_X86
178	tristate
179	depends on X86
180	select CRYPTO_CRYPTD
181
182config CRYPTO_GLUE_HELPER_X86
183	tristate
184	depends on X86
185	select CRYPTO_ALGAPI
186
187comment "Authenticated Encryption with Associated Data"
188
189config CRYPTO_CCM
190	tristate "CCM support"
191	select CRYPTO_CTR
192	select CRYPTO_AEAD
193	help
194	  Support for Counter with CBC MAC. Required for IPsec.
195
196config CRYPTO_GCM
197	tristate "GCM/GMAC support"
198	select CRYPTO_CTR
199	select CRYPTO_AEAD
200	select CRYPTO_GHASH
201	help
202	  Support for Galois/Counter Mode (GCM) and Galois Message
203	  Authentication Code (GMAC). Required for IPSec.
204
205config CRYPTO_SEQIV
206	tristate "Sequence Number IV Generator"
207	select CRYPTO_AEAD
208	select CRYPTO_BLKCIPHER
209	select CRYPTO_RNG
210	help
211	  This IV generator generates an IV based on a sequence number by
212	  xoring it with a salt.  This algorithm is mainly useful for CTR
213
214comment "Block modes"
215
216config CRYPTO_CBC
217	tristate "CBC support"
218	select CRYPTO_BLKCIPHER
219	select CRYPTO_MANAGER
220	help
221	  CBC: Cipher Block Chaining mode
222	  This block cipher algorithm is required for IPSec.
223
224config CRYPTO_CTR
225	tristate "CTR support"
226	select CRYPTO_BLKCIPHER
227	select CRYPTO_SEQIV
228	select CRYPTO_MANAGER
229	help
230	  CTR: Counter mode
231	  This block cipher algorithm is required for IPSec.
232
233config CRYPTO_CTS
234	tristate "CTS support"
235	select CRYPTO_BLKCIPHER
236	help
237	  CTS: Cipher Text Stealing
238	  This is the Cipher Text Stealing mode as described by
239	  Section 8 of rfc2040 and referenced by rfc3962.
240	  (rfc3962 includes errata information in its Appendix A)
241	  This mode is required for Kerberos gss mechanism support
242	  for AES encryption.
243
244config CRYPTO_ECB
245	tristate "ECB support"
246	select CRYPTO_BLKCIPHER
247	select CRYPTO_MANAGER
248	help
249	  ECB: Electronic CodeBook mode
250	  This is the simplest block cipher algorithm.  It simply encrypts
251	  the input block by block.
252
253config CRYPTO_LRW
254	tristate "LRW support"
255	select CRYPTO_BLKCIPHER
256	select CRYPTO_MANAGER
257	select CRYPTO_GF128MUL
258	help
259	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
260	  narrow block cipher mode for dm-crypt.  Use it with cipher
261	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
262	  The first 128, 192 or 256 bits in the key are used for AES and the
263	  rest is used to tie each cipher block to its logical position.
264
265config CRYPTO_PCBC
266	tristate "PCBC support"
267	select CRYPTO_BLKCIPHER
268	select CRYPTO_MANAGER
269	help
270	  PCBC: Propagating Cipher Block Chaining mode
271	  This block cipher algorithm is required for RxRPC.
272
273config CRYPTO_XTS
274	tristate "XTS support"
275	select CRYPTO_BLKCIPHER
276	select CRYPTO_MANAGER
277	select CRYPTO_GF128MUL
278	help
279	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
280	  key size 256, 384 or 512 bits. This implementation currently
281	  can't handle a sectorsize which is not a multiple of 16 bytes.
282
283comment "Hash modes"
284
285config CRYPTO_HMAC
286	tristate "HMAC support"
287	select CRYPTO_HASH
288	select CRYPTO_MANAGER
289	help
290	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
291	  This is required for IPSec.
292
293config CRYPTO_XCBC
294	tristate "XCBC support"
295	depends on EXPERIMENTAL
296	select CRYPTO_HASH
297	select CRYPTO_MANAGER
298	help
299	  XCBC: Keyed-Hashing with encryption algorithm
300		http://www.ietf.org/rfc/rfc3566.txt
301		http://csrc.nist.gov/encryption/modes/proposedmodes/
302		 xcbc-mac/xcbc-mac-spec.pdf
303
304config CRYPTO_VMAC
305	tristate "VMAC support"
306	depends on EXPERIMENTAL
307	select CRYPTO_HASH
308	select CRYPTO_MANAGER
309	help
310	  VMAC is a message authentication algorithm designed for
311	  very high speed on 64-bit architectures.
312
313	  See also:
314	  <http://fastcrypto.org/vmac>
315
316comment "Digest"
317
318config CRYPTO_CRC32C
319	tristate "CRC32c CRC algorithm"
320	select CRYPTO_HASH
321	select CRC32
322	help
323	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
324	  by iSCSI for header and data digests and by others.
325	  See Castagnoli93.  Module will be crc32c.
326
327config CRYPTO_CRC32C_INTEL
328	tristate "CRC32c INTEL hardware acceleration"
329	depends on X86
330	select CRYPTO_HASH
331	help
332	  In Intel processor with SSE4.2 supported, the processor will
333	  support CRC32C implementation using hardware accelerated CRC32
334	  instruction. This option will create 'crc32c-intel' module,
335	  which will enable any routine to use the CRC32 instruction to
336	  gain performance compared with software implementation.
337	  Module will be crc32c-intel.
338
339config CRYPTO_GHASH
340	tristate "GHASH digest algorithm"
341	select CRYPTO_GF128MUL
342	help
343	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
344
345config CRYPTO_MD4
346	tristate "MD4 digest algorithm"
347	select CRYPTO_HASH
348	help
349	  MD4 message digest algorithm (RFC1320).
350
351config CRYPTO_MD5
352	tristate "MD5 digest algorithm"
353	select CRYPTO_HASH
354	help
355	  MD5 message digest algorithm (RFC1321).
356
357config CRYPTO_MICHAEL_MIC
358	tristate "Michael MIC keyed digest algorithm"
359	select CRYPTO_HASH
360	help
361	  Michael MIC is used for message integrity protection in TKIP
362	  (IEEE 802.11i). This algorithm is required for TKIP, but it
363	  should not be used for other purposes because of the weakness
364	  of the algorithm.
365
366config CRYPTO_RMD128
367	tristate "RIPEMD-128 digest algorithm"
368	select CRYPTO_HASH
369	help
370	  RIPEMD-128 (ISO/IEC 10118-3:2004).
371
372	  RIPEMD-128 is a 128-bit cryptographic hash function. It should only
373	  be used as a secure replacement for RIPEMD. For other use cases,
374	  RIPEMD-160 should be used.
375
376	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
377	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
378
379config CRYPTO_RMD160
380	tristate "RIPEMD-160 digest algorithm"
381	select CRYPTO_HASH
382	help
383	  RIPEMD-160 (ISO/IEC 10118-3:2004).
384
385	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
386	  to be used as a secure replacement for the 128-bit hash functions
387	  MD4, MD5 and it's predecessor RIPEMD
388	  (not to be confused with RIPEMD-128).
389
390	  It's speed is comparable to SHA1 and there are no known attacks
391	  against RIPEMD-160.
392
393	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
394	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
395
396config CRYPTO_RMD256
397	tristate "RIPEMD-256 digest algorithm"
398	select CRYPTO_HASH
399	help
400	  RIPEMD-256 is an optional extension of RIPEMD-128 with a
401	  256 bit hash. It is intended for applications that require
402	  longer hash-results, without needing a larger security level
403	  (than RIPEMD-128).
404
405	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
406	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
407
408config CRYPTO_RMD320
409	tristate "RIPEMD-320 digest algorithm"
410	select CRYPTO_HASH
411	help
412	  RIPEMD-320 is an optional extension of RIPEMD-160 with a
413	  320 bit hash. It is intended for applications that require
414	  longer hash-results, without needing a larger security level
415	  (than RIPEMD-160).
416
417	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
418	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
419
420config CRYPTO_SHA1
421	tristate "SHA1 digest algorithm"
422	select CRYPTO_HASH
423	help
424	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
425
426config CRYPTO_SHA1_SSSE3
427	tristate "SHA1 digest algorithm (SSSE3/AVX)"
428	depends on X86 && 64BIT
429	select CRYPTO_SHA1
430	select CRYPTO_HASH
431	help
432	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
433	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
434	  Extensions (AVX), when available.
435
436config CRYPTO_SHA256
437	tristate "SHA224 and SHA256 digest algorithm"
438	select CRYPTO_HASH
439	help
440	  SHA256 secure hash standard (DFIPS 180-2).
441
442	  This version of SHA implements a 256 bit hash with 128 bits of
443	  security against collision attacks.
444
445	  This code also includes SHA-224, a 224 bit hash with 112 bits
446	  of security against collision attacks.
447
448config CRYPTO_SHA512
449	tristate "SHA384 and SHA512 digest algorithms"
450	select CRYPTO_HASH
451	help
452	  SHA512 secure hash standard (DFIPS 180-2).
453
454	  This version of SHA implements a 512 bit hash with 256 bits of
455	  security against collision attacks.
456
457	  This code also includes SHA-384, a 384 bit hash with 192 bits
458	  of security against collision attacks.
459
460config CRYPTO_TGR192
461	tristate "Tiger digest algorithms"
462	select CRYPTO_HASH
463	help
464	  Tiger hash algorithm 192, 160 and 128-bit hashes
465
466	  Tiger is a hash function optimized for 64-bit processors while
467	  still having decent performance on 32-bit processors.
468	  Tiger was developed by Ross Anderson and Eli Biham.
469
470	  See also:
471	  <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
472
473config CRYPTO_WP512
474	tristate "Whirlpool digest algorithms"
475	select CRYPTO_HASH
476	help
477	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
478
479	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
480	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
481
482	  See also:
483	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
484
485config CRYPTO_GHASH_CLMUL_NI_INTEL
486	tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
487	depends on X86 && 64BIT
488	select CRYPTO_CRYPTD
489	help
490	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
491	  The implementation is accelerated by CLMUL-NI of Intel.
492
493comment "Ciphers"
494
495config CRYPTO_AES
496	tristate "AES cipher algorithms"
497	select CRYPTO_ALGAPI
498	help
499	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
500	  algorithm.
501
502	  Rijndael appears to be consistently a very good performer in
503	  both hardware and software across a wide range of computing
504	  environments regardless of its use in feedback or non-feedback
505	  modes. Its key setup time is excellent, and its key agility is
506	  good. Rijndael's very low memory requirements make it very well
507	  suited for restricted-space environments, in which it also
508	  demonstrates excellent performance. Rijndael's operations are
509	  among the easiest to defend against power and timing attacks.
510
511	  The AES specifies three key sizes: 128, 192 and 256 bits
512
513	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
514
515config CRYPTO_AES_586
516	tristate "AES cipher algorithms (i586)"
517	depends on (X86 || UML_X86) && !64BIT
518	select CRYPTO_ALGAPI
519	select CRYPTO_AES
520	help
521	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
522	  algorithm.
523
524	  Rijndael appears to be consistently a very good performer in
525	  both hardware and software across a wide range of computing
526	  environments regardless of its use in feedback or non-feedback
527	  modes. Its key setup time is excellent, and its key agility is
528	  good. Rijndael's very low memory requirements make it very well
529	  suited for restricted-space environments, in which it also
530	  demonstrates excellent performance. Rijndael's operations are
531	  among the easiest to defend against power and timing attacks.
532
533	  The AES specifies three key sizes: 128, 192 and 256 bits
534
535	  See <http://csrc.nist.gov/encryption/aes/> for more information.
536
537config CRYPTO_AES_X86_64
538	tristate "AES cipher algorithms (x86_64)"
539	depends on (X86 || UML_X86) && 64BIT
540	select CRYPTO_ALGAPI
541	select CRYPTO_AES
542	help
543	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
544	  algorithm.
545
546	  Rijndael appears to be consistently a very good performer in
547	  both hardware and software across a wide range of computing
548	  environments regardless of its use in feedback or non-feedback
549	  modes. Its key setup time is excellent, and its key agility is
550	  good. Rijndael's very low memory requirements make it very well
551	  suited for restricted-space environments, in which it also
552	  demonstrates excellent performance. Rijndael's operations are
553	  among the easiest to defend against power and timing attacks.
554
555	  The AES specifies three key sizes: 128, 192 and 256 bits
556
557	  See <http://csrc.nist.gov/encryption/aes/> for more information.
558
559config CRYPTO_AES_NI_INTEL
560	tristate "AES cipher algorithms (AES-NI)"
561	depends on X86
562	select CRYPTO_AES_X86_64 if 64BIT
563	select CRYPTO_AES_586 if !64BIT
564	select CRYPTO_CRYPTD
565	select CRYPTO_ABLK_HELPER_X86
566	select CRYPTO_ALGAPI
567	help
568	  Use Intel AES-NI instructions for AES algorithm.
569
570	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
571	  algorithm.
572
573	  Rijndael appears to be consistently a very good performer in
574	  both hardware and software across a wide range of computing
575	  environments regardless of its use in feedback or non-feedback
576	  modes. Its key setup time is excellent, and its key agility is
577	  good. Rijndael's very low memory requirements make it very well
578	  suited for restricted-space environments, in which it also
579	  demonstrates excellent performance. Rijndael's operations are
580	  among the easiest to defend against power and timing attacks.
581
582	  The AES specifies three key sizes: 128, 192 and 256 bits
583
584	  See <http://csrc.nist.gov/encryption/aes/> for more information.
585
586	  In addition to AES cipher algorithm support, the acceleration
587	  for some popular block cipher mode is supported too, including
588	  ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
589	  acceleration for CTR.
590
591config CRYPTO_ANUBIS
592	tristate "Anubis cipher algorithm"
593	select CRYPTO_ALGAPI
594	help
595	  Anubis cipher algorithm.
596
597	  Anubis is a variable key length cipher which can use keys from
598	  128 bits to 320 bits in length.  It was evaluated as a entrant
599	  in the NESSIE competition.
600
601	  See also:
602	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
603	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
604
605config CRYPTO_ARC4
606	tristate "ARC4 cipher algorithm"
607	select CRYPTO_BLKCIPHER
608	help
609	  ARC4 cipher algorithm.
610
611	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
612	  bits in length.  This algorithm is required for driver-based
613	  WEP, but it should not be for other purposes because of the
614	  weakness of the algorithm.
615
616config CRYPTO_BLOWFISH
617	tristate "Blowfish cipher algorithm"
618	select CRYPTO_ALGAPI
619	select CRYPTO_BLOWFISH_COMMON
620	help
621	  Blowfish cipher algorithm, by Bruce Schneier.
622
623	  This is a variable key length cipher which can use keys from 32
624	  bits to 448 bits in length.  It's fast, simple and specifically
625	  designed for use on "large microprocessors".
626
627	  See also:
628	  <http://www.schneier.com/blowfish.html>
629
630config CRYPTO_BLOWFISH_COMMON
631	tristate
632	help
633	  Common parts of the Blowfish cipher algorithm shared by the
634	  generic c and the assembler implementations.
635
636	  See also:
637	  <http://www.schneier.com/blowfish.html>
638
639config CRYPTO_BLOWFISH_X86_64
640	tristate "Blowfish cipher algorithm (x86_64)"
641	depends on X86 && 64BIT
642	select CRYPTO_ALGAPI
643	select CRYPTO_BLOWFISH_COMMON
644	help
645	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
646
647	  This is a variable key length cipher which can use keys from 32
648	  bits to 448 bits in length.  It's fast, simple and specifically
649	  designed for use on "large microprocessors".
650
651	  See also:
652	  <http://www.schneier.com/blowfish.html>
653
654config CRYPTO_CAMELLIA
655	tristate "Camellia cipher algorithms"
656	depends on CRYPTO
657	select CRYPTO_ALGAPI
658	help
659	  Camellia cipher algorithms module.
660
661	  Camellia is a symmetric key block cipher developed jointly
662	  at NTT and Mitsubishi Electric Corporation.
663
664	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
665
666	  See also:
667	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
668
669config CRYPTO_CAMELLIA_X86_64
670	tristate "Camellia cipher algorithm (x86_64)"
671	depends on X86 && 64BIT
672	depends on CRYPTO
673	select CRYPTO_ALGAPI
674	select CRYPTO_GLUE_HELPER_X86
675	select CRYPTO_LRW
676	select CRYPTO_XTS
677	help
678	  Camellia cipher algorithm module (x86_64).
679
680	  Camellia is a symmetric key block cipher developed jointly
681	  at NTT and Mitsubishi Electric Corporation.
682
683	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
684
685	  See also:
686	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
687
688config CRYPTO_CAST5
689	tristate "CAST5 (CAST-128) cipher algorithm"
690	select CRYPTO_ALGAPI
691	help
692	  The CAST5 encryption algorithm (synonymous with CAST-128) is
693	  described in RFC2144.
694
695config CRYPTO_CAST6
696	tristate "CAST6 (CAST-256) cipher algorithm"
697	select CRYPTO_ALGAPI
698	help
699	  The CAST6 encryption algorithm (synonymous with CAST-256) is
700	  described in RFC2612.
701
702config CRYPTO_DES
703	tristate "DES and Triple DES EDE cipher algorithms"
704	select CRYPTO_ALGAPI
705	help
706	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
707
708config CRYPTO_FCRYPT
709	tristate "FCrypt cipher algorithm"
710	select CRYPTO_ALGAPI
711	select CRYPTO_BLKCIPHER
712	help
713	  FCrypt algorithm used by RxRPC.
714
715config CRYPTO_KHAZAD
716	tristate "Khazad cipher algorithm"
717	select CRYPTO_ALGAPI
718	help
719	  Khazad cipher algorithm.
720
721	  Khazad was a finalist in the initial NESSIE competition.  It is
722	  an algorithm optimized for 64-bit processors with good performance
723	  on 32-bit processors.  Khazad uses an 128 bit key size.
724
725	  See also:
726	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
727
728config CRYPTO_SALSA20
729	tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
730	depends on EXPERIMENTAL
731	select CRYPTO_BLKCIPHER
732	help
733	  Salsa20 stream cipher algorithm.
734
735	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
736	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
737
738	  The Salsa20 stream cipher algorithm is designed by Daniel J.
739	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
740
741config CRYPTO_SALSA20_586
742	tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
743	depends on (X86 || UML_X86) && !64BIT
744	depends on EXPERIMENTAL
745	select CRYPTO_BLKCIPHER
746	help
747	  Salsa20 stream cipher algorithm.
748
749	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
750	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
751
752	  The Salsa20 stream cipher algorithm is designed by Daniel J.
753	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
754
755config CRYPTO_SALSA20_X86_64
756	tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
757	depends on (X86 || UML_X86) && 64BIT
758	depends on EXPERIMENTAL
759	select CRYPTO_BLKCIPHER
760	help
761	  Salsa20 stream cipher algorithm.
762
763	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
764	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
765
766	  The Salsa20 stream cipher algorithm is designed by Daniel J.
767	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
768
769config CRYPTO_SEED
770	tristate "SEED cipher algorithm"
771	select CRYPTO_ALGAPI
772	help
773	  SEED cipher algorithm (RFC4269).
774
775	  SEED is a 128-bit symmetric key block cipher that has been
776	  developed by KISA (Korea Information Security Agency) as a
777	  national standard encryption algorithm of the Republic of Korea.
778	  It is a 16 round block cipher with the key size of 128 bit.
779
780	  See also:
781	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
782
783config CRYPTO_SERPENT
784	tristate "Serpent cipher algorithm"
785	select CRYPTO_ALGAPI
786	help
787	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
788
789	  Keys are allowed to be from 0 to 256 bits in length, in steps
790	  of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
791	  variant of Serpent for compatibility with old kerneli.org code.
792
793	  See also:
794	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
795
796config CRYPTO_SERPENT_SSE2_X86_64
797	tristate "Serpent cipher algorithm (x86_64/SSE2)"
798	depends on X86 && 64BIT
799	select CRYPTO_ALGAPI
800	select CRYPTO_CRYPTD
801	select CRYPTO_ABLK_HELPER_X86
802	select CRYPTO_GLUE_HELPER_X86
803	select CRYPTO_SERPENT
804	select CRYPTO_LRW
805	select CRYPTO_XTS
806	help
807	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
808
809	  Keys are allowed to be from 0 to 256 bits in length, in steps
810	  of 8 bits.
811
812	  This module provides Serpent cipher algorithm that processes eigth
813	  blocks parallel using SSE2 instruction set.
814
815	  See also:
816	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
817
818config CRYPTO_SERPENT_SSE2_586
819	tristate "Serpent cipher algorithm (i586/SSE2)"
820	depends on X86 && !64BIT
821	select CRYPTO_ALGAPI
822	select CRYPTO_CRYPTD
823	select CRYPTO_ABLK_HELPER_X86
824	select CRYPTO_GLUE_HELPER_X86
825	select CRYPTO_SERPENT
826	select CRYPTO_LRW
827	select CRYPTO_XTS
828	help
829	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
830
831	  Keys are allowed to be from 0 to 256 bits in length, in steps
832	  of 8 bits.
833
834	  This module provides Serpent cipher algorithm that processes four
835	  blocks parallel using SSE2 instruction set.
836
837	  See also:
838	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
839
840config CRYPTO_SERPENT_AVX_X86_64
841	tristate "Serpent cipher algorithm (x86_64/AVX)"
842	depends on X86 && 64BIT
843	select CRYPTO_ALGAPI
844	select CRYPTO_CRYPTD
845	select CRYPTO_ABLK_HELPER_X86
846	select CRYPTO_GLUE_HELPER_X86
847	select CRYPTO_SERPENT
848	select CRYPTO_LRW
849	select CRYPTO_XTS
850	help
851	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
852
853	  Keys are allowed to be from 0 to 256 bits in length, in steps
854	  of 8 bits.
855
856	  This module provides the Serpent cipher algorithm that processes
857	  eight blocks parallel using the AVX instruction set.
858
859	  See also:
860	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
861
862config CRYPTO_TEA
863	tristate "TEA, XTEA and XETA cipher algorithms"
864	select CRYPTO_ALGAPI
865	help
866	  TEA cipher algorithm.
867
868	  Tiny Encryption Algorithm is a simple cipher that uses
869	  many rounds for security.  It is very fast and uses
870	  little memory.
871
872	  Xtendend Tiny Encryption Algorithm is a modification to
873	  the TEA algorithm to address a potential key weakness
874	  in the TEA algorithm.
875
876	  Xtendend Encryption Tiny Algorithm is a mis-implementation
877	  of the XTEA algorithm for compatibility purposes.
878
879config CRYPTO_TWOFISH
880	tristate "Twofish cipher algorithm"
881	select CRYPTO_ALGAPI
882	select CRYPTO_TWOFISH_COMMON
883	help
884	  Twofish cipher algorithm.
885
886	  Twofish was submitted as an AES (Advanced Encryption Standard)
887	  candidate cipher by researchers at CounterPane Systems.  It is a
888	  16 round block cipher supporting key sizes of 128, 192, and 256
889	  bits.
890
891	  See also:
892	  <http://www.schneier.com/twofish.html>
893
894config CRYPTO_TWOFISH_COMMON
895	tristate
896	help
897	  Common parts of the Twofish cipher algorithm shared by the
898	  generic c and the assembler implementations.
899
900config CRYPTO_TWOFISH_586
901	tristate "Twofish cipher algorithms (i586)"
902	depends on (X86 || UML_X86) && !64BIT
903	select CRYPTO_ALGAPI
904	select CRYPTO_TWOFISH_COMMON
905	help
906	  Twofish cipher algorithm.
907
908	  Twofish was submitted as an AES (Advanced Encryption Standard)
909	  candidate cipher by researchers at CounterPane Systems.  It is a
910	  16 round block cipher supporting key sizes of 128, 192, and 256
911	  bits.
912
913	  See also:
914	  <http://www.schneier.com/twofish.html>
915
916config CRYPTO_TWOFISH_X86_64
917	tristate "Twofish cipher algorithm (x86_64)"
918	depends on (X86 || UML_X86) && 64BIT
919	select CRYPTO_ALGAPI
920	select CRYPTO_TWOFISH_COMMON
921	help
922	  Twofish cipher algorithm (x86_64).
923
924	  Twofish was submitted as an AES (Advanced Encryption Standard)
925	  candidate cipher by researchers at CounterPane Systems.  It is a
926	  16 round block cipher supporting key sizes of 128, 192, and 256
927	  bits.
928
929	  See also:
930	  <http://www.schneier.com/twofish.html>
931
932config CRYPTO_TWOFISH_X86_64_3WAY
933	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
934	depends on X86 && 64BIT
935	select CRYPTO_ALGAPI
936	select CRYPTO_TWOFISH_COMMON
937	select CRYPTO_TWOFISH_X86_64
938	select CRYPTO_GLUE_HELPER_X86
939	select CRYPTO_LRW
940	select CRYPTO_XTS
941	help
942	  Twofish cipher algorithm (x86_64, 3-way parallel).
943
944	  Twofish was submitted as an AES (Advanced Encryption Standard)
945	  candidate cipher by researchers at CounterPane Systems.  It is a
946	  16 round block cipher supporting key sizes of 128, 192, and 256
947	  bits.
948
949	  This module provides Twofish cipher algorithm that processes three
950	  blocks parallel, utilizing resources of out-of-order CPUs better.
951
952	  See also:
953	  <http://www.schneier.com/twofish.html>
954
955config CRYPTO_TWOFISH_AVX_X86_64
956	tristate "Twofish cipher algorithm (x86_64/AVX)"
957	depends on X86 && 64BIT
958	select CRYPTO_ALGAPI
959	select CRYPTO_CRYPTD
960	select CRYPTO_ABLK_HELPER_X86
961	select CRYPTO_GLUE_HELPER_X86
962	select CRYPTO_TWOFISH_COMMON
963	select CRYPTO_TWOFISH_X86_64
964	select CRYPTO_TWOFISH_X86_64_3WAY
965	select CRYPTO_LRW
966	select CRYPTO_XTS
967	help
968	  Twofish cipher algorithm (x86_64/AVX).
969
970	  Twofish was submitted as an AES (Advanced Encryption Standard)
971	  candidate cipher by researchers at CounterPane Systems.  It is a
972	  16 round block cipher supporting key sizes of 128, 192, and 256
973	  bits.
974
975	  This module provides the Twofish cipher algorithm that processes
976	  eight blocks parallel using the AVX Instruction Set.
977
978	  See also:
979	  <http://www.schneier.com/twofish.html>
980
981comment "Compression"
982
983config CRYPTO_DEFLATE
984	tristate "Deflate compression algorithm"
985	select CRYPTO_ALGAPI
986	select ZLIB_INFLATE
987	select ZLIB_DEFLATE
988	help
989	  This is the Deflate algorithm (RFC1951), specified for use in
990	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
991
992	  You will most probably want this if using IPSec.
993
994config CRYPTO_ZLIB
995	tristate "Zlib compression algorithm"
996	select CRYPTO_PCOMP
997	select ZLIB_INFLATE
998	select ZLIB_DEFLATE
999	select NLATTR
1000	help
1001	  This is the zlib algorithm.
1002
1003config CRYPTO_LZO
1004	tristate "LZO compression algorithm"
1005	select CRYPTO_ALGAPI
1006	select LZO_COMPRESS
1007	select LZO_DECOMPRESS
1008	help
1009	  This is the LZO algorithm.
1010
1011comment "Random Number Generation"
1012
1013config CRYPTO_ANSI_CPRNG
1014	tristate "Pseudo Random Number Generation for Cryptographic modules"
1015	default m
1016	select CRYPTO_AES
1017	select CRYPTO_RNG
1018	help
1019	  This option enables the generic pseudo random number generator
1020	  for cryptographic modules.  Uses the Algorithm specified in
1021	  ANSI X9.31 A.2.4. Note that this option must be enabled if
1022	  CRYPTO_FIPS is selected
1023
1024config CRYPTO_USER_API
1025	tristate
1026
1027config CRYPTO_USER_API_HASH
1028	tristate "User-space interface for hash algorithms"
1029	depends on NET
1030	select CRYPTO_HASH
1031	select CRYPTO_USER_API
1032	help
1033	  This option enables the user-spaces interface for hash
1034	  algorithms.
1035
1036config CRYPTO_USER_API_SKCIPHER
1037	tristate "User-space interface for symmetric key cipher algorithms"
1038	depends on NET
1039	select CRYPTO_BLKCIPHER
1040	select CRYPTO_USER_API
1041	help
1042	  This option enables the user-spaces interface for symmetric
1043	  key cipher algorithms.
1044
1045source "drivers/crypto/Kconfig"
1046
1047endif	# if CRYPTO
1048