xref: /openbmc/linux/crypto/Kconfig (revision 424f0750edd5af866f80f5e65998e0610503cb5c)
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	  Userapace 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 (EXPERIMENTAL)"
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
177comment "Authenticated Encryption with Associated Data"
178
179config CRYPTO_CCM
180	tristate "CCM support"
181	select CRYPTO_CTR
182	select CRYPTO_AEAD
183	help
184	  Support for Counter with CBC MAC. Required for IPsec.
185
186config CRYPTO_GCM
187	tristate "GCM/GMAC support"
188	select CRYPTO_CTR
189	select CRYPTO_AEAD
190	select CRYPTO_GHASH
191	help
192	  Support for Galois/Counter Mode (GCM) and Galois Message
193	  Authentication Code (GMAC). Required for IPSec.
194
195config CRYPTO_SEQIV
196	tristate "Sequence Number IV Generator"
197	select CRYPTO_AEAD
198	select CRYPTO_BLKCIPHER
199	select CRYPTO_RNG
200	help
201	  This IV generator generates an IV based on a sequence number by
202	  xoring it with a salt.  This algorithm is mainly useful for CTR
203
204comment "Block modes"
205
206config CRYPTO_CBC
207	tristate "CBC support"
208	select CRYPTO_BLKCIPHER
209	select CRYPTO_MANAGER
210	help
211	  CBC: Cipher Block Chaining mode
212	  This block cipher algorithm is required for IPSec.
213
214config CRYPTO_CTR
215	tristate "CTR support"
216	select CRYPTO_BLKCIPHER
217	select CRYPTO_SEQIV
218	select CRYPTO_MANAGER
219	help
220	  CTR: Counter mode
221	  This block cipher algorithm is required for IPSec.
222
223config CRYPTO_CTS
224	tristate "CTS support"
225	select CRYPTO_BLKCIPHER
226	help
227	  CTS: Cipher Text Stealing
228	  This is the Cipher Text Stealing mode as described by
229	  Section 8 of rfc2040 and referenced by rfc3962.
230	  (rfc3962 includes errata information in its Appendix A)
231	  This mode is required for Kerberos gss mechanism support
232	  for AES encryption.
233
234config CRYPTO_ECB
235	tristate "ECB support"
236	select CRYPTO_BLKCIPHER
237	select CRYPTO_MANAGER
238	help
239	  ECB: Electronic CodeBook mode
240	  This is the simplest block cipher algorithm.  It simply encrypts
241	  the input block by block.
242
243config CRYPTO_LRW
244	tristate "LRW support (EXPERIMENTAL)"
245	depends on EXPERIMENTAL
246	select CRYPTO_BLKCIPHER
247	select CRYPTO_MANAGER
248	select CRYPTO_GF128MUL
249	help
250	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
251	  narrow block cipher mode for dm-crypt.  Use it with cipher
252	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
253	  The first 128, 192 or 256 bits in the key are used for AES and the
254	  rest is used to tie each cipher block to its logical position.
255
256config CRYPTO_PCBC
257	tristate "PCBC support"
258	select CRYPTO_BLKCIPHER
259	select CRYPTO_MANAGER
260	help
261	  PCBC: Propagating Cipher Block Chaining mode
262	  This block cipher algorithm is required for RxRPC.
263
264config CRYPTO_XTS
265	tristate "XTS support (EXPERIMENTAL)"
266	depends on EXPERIMENTAL
267	select CRYPTO_BLKCIPHER
268	select CRYPTO_MANAGER
269	select CRYPTO_GF128MUL
270	help
271	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
272	  key size 256, 384 or 512 bits. This implementation currently
273	  can't handle a sectorsize which is not a multiple of 16 bytes.
274
275comment "Hash modes"
276
277config CRYPTO_HMAC
278	tristate "HMAC support"
279	select CRYPTO_HASH
280	select CRYPTO_MANAGER
281	help
282	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
283	  This is required for IPSec.
284
285config CRYPTO_XCBC
286	tristate "XCBC support"
287	depends on EXPERIMENTAL
288	select CRYPTO_HASH
289	select CRYPTO_MANAGER
290	help
291	  XCBC: Keyed-Hashing with encryption algorithm
292		http://www.ietf.org/rfc/rfc3566.txt
293		http://csrc.nist.gov/encryption/modes/proposedmodes/
294		 xcbc-mac/xcbc-mac-spec.pdf
295
296config CRYPTO_VMAC
297	tristate "VMAC support"
298	depends on EXPERIMENTAL
299	select CRYPTO_HASH
300	select CRYPTO_MANAGER
301	help
302	  VMAC is a message authentication algorithm designed for
303	  very high speed on 64-bit architectures.
304
305	  See also:
306	  <http://fastcrypto.org/vmac>
307
308comment "Digest"
309
310config CRYPTO_CRC32C
311	tristate "CRC32c CRC algorithm"
312	select CRYPTO_HASH
313	help
314	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
315	  by iSCSI for header and data digests and by others.
316	  See Castagnoli93.  Module will be crc32c.
317
318config CRYPTO_CRC32C_INTEL
319	tristate "CRC32c INTEL hardware acceleration"
320	depends on X86
321	select CRYPTO_HASH
322	help
323	  In Intel processor with SSE4.2 supported, the processor will
324	  support CRC32C implementation using hardware accelerated CRC32
325	  instruction. This option will create 'crc32c-intel' module,
326	  which will enable any routine to use the CRC32 instruction to
327	  gain performance compared with software implementation.
328	  Module will be crc32c-intel.
329
330config CRYPTO_GHASH
331	tristate "GHASH digest algorithm"
332	select CRYPTO_SHASH
333	select CRYPTO_GF128MUL
334	help
335	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
336
337config CRYPTO_MD4
338	tristate "MD4 digest algorithm"
339	select CRYPTO_HASH
340	help
341	  MD4 message digest algorithm (RFC1320).
342
343config CRYPTO_MD5
344	tristate "MD5 digest algorithm"
345	select CRYPTO_HASH
346	help
347	  MD5 message digest algorithm (RFC1321).
348
349config CRYPTO_MICHAEL_MIC
350	tristate "Michael MIC keyed digest algorithm"
351	select CRYPTO_HASH
352	help
353	  Michael MIC is used for message integrity protection in TKIP
354	  (IEEE 802.11i). This algorithm is required for TKIP, but it
355	  should not be used for other purposes because of the weakness
356	  of the algorithm.
357
358config CRYPTO_RMD128
359	tristate "RIPEMD-128 digest algorithm"
360	select CRYPTO_HASH
361	help
362	  RIPEMD-128 (ISO/IEC 10118-3:2004).
363
364	  RIPEMD-128 is a 128-bit cryptographic hash function. It should only
365	  be used as a secure replacement for RIPEMD. For other use cases,
366	  RIPEMD-160 should be used.
367
368	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
369	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
370
371config CRYPTO_RMD160
372	tristate "RIPEMD-160 digest algorithm"
373	select CRYPTO_HASH
374	help
375	  RIPEMD-160 (ISO/IEC 10118-3:2004).
376
377	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
378	  to be used as a secure replacement for the 128-bit hash functions
379	  MD4, MD5 and it's predecessor RIPEMD
380	  (not to be confused with RIPEMD-128).
381
382	  It's speed is comparable to SHA1 and there are no known attacks
383	  against RIPEMD-160.
384
385	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
386	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
387
388config CRYPTO_RMD256
389	tristate "RIPEMD-256 digest algorithm"
390	select CRYPTO_HASH
391	help
392	  RIPEMD-256 is an optional extension of RIPEMD-128 with a
393	  256 bit hash. It is intended for applications that require
394	  longer hash-results, without needing a larger security level
395	  (than RIPEMD-128).
396
397	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
398	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
399
400config CRYPTO_RMD320
401	tristate "RIPEMD-320 digest algorithm"
402	select CRYPTO_HASH
403	help
404	  RIPEMD-320 is an optional extension of RIPEMD-160 with a
405	  320 bit hash. It is intended for applications that require
406	  longer hash-results, without needing a larger security level
407	  (than RIPEMD-160).
408
409	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
410	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
411
412config CRYPTO_SHA1
413	tristate "SHA1 digest algorithm"
414	select CRYPTO_HASH
415	help
416	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
417
418config CRYPTO_SHA1_SSSE3
419	tristate "SHA1 digest algorithm (SSSE3/AVX)"
420	depends on X86 && 64BIT
421	select CRYPTO_SHA1
422	select CRYPTO_HASH
423	help
424	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
425	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
426	  Extensions (AVX), when available.
427
428config CRYPTO_SHA256
429	tristate "SHA224 and SHA256 digest algorithm"
430	select CRYPTO_HASH
431	help
432	  SHA256 secure hash standard (DFIPS 180-2).
433
434	  This version of SHA implements a 256 bit hash with 128 bits of
435	  security against collision attacks.
436
437	  This code also includes SHA-224, a 224 bit hash with 112 bits
438	  of security against collision attacks.
439
440config CRYPTO_SHA512
441	tristate "SHA384 and SHA512 digest algorithms"
442	select CRYPTO_HASH
443	help
444	  SHA512 secure hash standard (DFIPS 180-2).
445
446	  This version of SHA implements a 512 bit hash with 256 bits of
447	  security against collision attacks.
448
449	  This code also includes SHA-384, a 384 bit hash with 192 bits
450	  of security against collision attacks.
451
452config CRYPTO_TGR192
453	tristate "Tiger digest algorithms"
454	select CRYPTO_HASH
455	help
456	  Tiger hash algorithm 192, 160 and 128-bit hashes
457
458	  Tiger is a hash function optimized for 64-bit processors while
459	  still having decent performance on 32-bit processors.
460	  Tiger was developed by Ross Anderson and Eli Biham.
461
462	  See also:
463	  <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
464
465config CRYPTO_WP512
466	tristate "Whirlpool digest algorithms"
467	select CRYPTO_HASH
468	help
469	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
470
471	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
472	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
473
474	  See also:
475	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
476
477config CRYPTO_GHASH_CLMUL_NI_INTEL
478	tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
479	depends on X86 && 64BIT
480	select CRYPTO_SHASH
481	select CRYPTO_CRYPTD
482	help
483	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
484	  The implementation is accelerated by CLMUL-NI of Intel.
485
486comment "Ciphers"
487
488config CRYPTO_AES
489	tristate "AES cipher algorithms"
490	select CRYPTO_ALGAPI
491	help
492	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
493	  algorithm.
494
495	  Rijndael appears to be consistently a very good performer in
496	  both hardware and software across a wide range of computing
497	  environments regardless of its use in feedback or non-feedback
498	  modes. Its key setup time is excellent, and its key agility is
499	  good. Rijndael's very low memory requirements make it very well
500	  suited for restricted-space environments, in which it also
501	  demonstrates excellent performance. Rijndael's operations are
502	  among the easiest to defend against power and timing attacks.
503
504	  The AES specifies three key sizes: 128, 192 and 256 bits
505
506	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
507
508config CRYPTO_AES_586
509	tristate "AES cipher algorithms (i586)"
510	depends on (X86 || UML_X86) && !64BIT
511	select CRYPTO_ALGAPI
512	select CRYPTO_AES
513	help
514	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
515	  algorithm.
516
517	  Rijndael appears to be consistently a very good performer in
518	  both hardware and software across a wide range of computing
519	  environments regardless of its use in feedback or non-feedback
520	  modes. Its key setup time is excellent, and its key agility is
521	  good. Rijndael's very low memory requirements make it very well
522	  suited for restricted-space environments, in which it also
523	  demonstrates excellent performance. Rijndael's operations are
524	  among the easiest to defend against power and timing attacks.
525
526	  The AES specifies three key sizes: 128, 192 and 256 bits
527
528	  See <http://csrc.nist.gov/encryption/aes/> for more information.
529
530config CRYPTO_AES_X86_64
531	tristate "AES cipher algorithms (x86_64)"
532	depends on (X86 || UML_X86) && 64BIT
533	select CRYPTO_ALGAPI
534	select CRYPTO_AES
535	help
536	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
537	  algorithm.
538
539	  Rijndael appears to be consistently a very good performer in
540	  both hardware and software across a wide range of computing
541	  environments regardless of its use in feedback or non-feedback
542	  modes. Its key setup time is excellent, and its key agility is
543	  good. Rijndael's very low memory requirements make it very well
544	  suited for restricted-space environments, in which it also
545	  demonstrates excellent performance. Rijndael's operations are
546	  among the easiest to defend against power and timing attacks.
547
548	  The AES specifies three key sizes: 128, 192 and 256 bits
549
550	  See <http://csrc.nist.gov/encryption/aes/> for more information.
551
552config CRYPTO_AES_NI_INTEL
553	tristate "AES cipher algorithms (AES-NI)"
554	depends on X86
555	select CRYPTO_AES_X86_64 if 64BIT
556	select CRYPTO_AES_586 if !64BIT
557	select CRYPTO_CRYPTD
558	select CRYPTO_ALGAPI
559	help
560	  Use Intel AES-NI instructions for AES algorithm.
561
562	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
563	  algorithm.
564
565	  Rijndael appears to be consistently a very good performer in
566	  both hardware and software across a wide range of computing
567	  environments regardless of its use in feedback or non-feedback
568	  modes. Its key setup time is excellent, and its key agility is
569	  good. Rijndael's very low memory requirements make it very well
570	  suited for restricted-space environments, in which it also
571	  demonstrates excellent performance. Rijndael's operations are
572	  among the easiest to defend against power and timing attacks.
573
574	  The AES specifies three key sizes: 128, 192 and 256 bits
575
576	  See <http://csrc.nist.gov/encryption/aes/> for more information.
577
578	  In addition to AES cipher algorithm support, the acceleration
579	  for some popular block cipher mode is supported too, including
580	  ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
581	  acceleration for CTR.
582
583config CRYPTO_ANUBIS
584	tristate "Anubis cipher algorithm"
585	select CRYPTO_ALGAPI
586	help
587	  Anubis cipher algorithm.
588
589	  Anubis is a variable key length cipher which can use keys from
590	  128 bits to 320 bits in length.  It was evaluated as a entrant
591	  in the NESSIE competition.
592
593	  See also:
594	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
595	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
596
597config CRYPTO_ARC4
598	tristate "ARC4 cipher algorithm"
599	select CRYPTO_ALGAPI
600	help
601	  ARC4 cipher algorithm.
602
603	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
604	  bits in length.  This algorithm is required for driver-based
605	  WEP, but it should not be for other purposes because of the
606	  weakness of the algorithm.
607
608config CRYPTO_BLOWFISH
609	tristate "Blowfish cipher algorithm"
610	select CRYPTO_ALGAPI
611	select CRYPTO_BLOWFISH_COMMON
612	help
613	  Blowfish cipher algorithm, by Bruce Schneier.
614
615	  This is a variable key length cipher which can use keys from 32
616	  bits to 448 bits in length.  It's fast, simple and specifically
617	  designed for use on "large microprocessors".
618
619	  See also:
620	  <http://www.schneier.com/blowfish.html>
621
622config CRYPTO_BLOWFISH_COMMON
623	tristate
624	help
625	  Common parts of the Blowfish cipher algorithm shared by the
626	  generic c and the assembler implementations.
627
628	  See also:
629	  <http://www.schneier.com/blowfish.html>
630
631config CRYPTO_BLOWFISH_X86_64
632	tristate "Blowfish cipher algorithm (x86_64)"
633	depends on (X86 || UML_X86) && 64BIT
634	select CRYPTO_ALGAPI
635	select CRYPTO_BLOWFISH_COMMON
636	help
637	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
638
639	  This is a variable key length cipher which can use keys from 32
640	  bits to 448 bits in length.  It's fast, simple and specifically
641	  designed for use on "large microprocessors".
642
643	  See also:
644	  <http://www.schneier.com/blowfish.html>
645
646config CRYPTO_CAMELLIA
647	tristate "Camellia cipher algorithms"
648	depends on CRYPTO
649	select CRYPTO_ALGAPI
650	help
651	  Camellia cipher algorithms module.
652
653	  Camellia is a symmetric key block cipher developed jointly
654	  at NTT and Mitsubishi Electric Corporation.
655
656	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
657
658	  See also:
659	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
660
661config CRYPTO_CAST5
662	tristate "CAST5 (CAST-128) cipher algorithm"
663	select CRYPTO_ALGAPI
664	help
665	  The CAST5 encryption algorithm (synonymous with CAST-128) is
666	  described in RFC2144.
667
668config CRYPTO_CAST6
669	tristate "CAST6 (CAST-256) cipher algorithm"
670	select CRYPTO_ALGAPI
671	help
672	  The CAST6 encryption algorithm (synonymous with CAST-256) is
673	  described in RFC2612.
674
675config CRYPTO_DES
676	tristate "DES and Triple DES EDE cipher algorithms"
677	select CRYPTO_ALGAPI
678	help
679	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
680
681config CRYPTO_FCRYPT
682	tristate "FCrypt cipher algorithm"
683	select CRYPTO_ALGAPI
684	select CRYPTO_BLKCIPHER
685	help
686	  FCrypt algorithm used by RxRPC.
687
688config CRYPTO_KHAZAD
689	tristate "Khazad cipher algorithm"
690	select CRYPTO_ALGAPI
691	help
692	  Khazad cipher algorithm.
693
694	  Khazad was a finalist in the initial NESSIE competition.  It is
695	  an algorithm optimized for 64-bit processors with good performance
696	  on 32-bit processors.  Khazad uses an 128 bit key size.
697
698	  See also:
699	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
700
701config CRYPTO_SALSA20
702	tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
703	depends on EXPERIMENTAL
704	select CRYPTO_BLKCIPHER
705	help
706	  Salsa20 stream cipher algorithm.
707
708	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
709	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
710
711	  The Salsa20 stream cipher algorithm is designed by Daniel J.
712	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
713
714config CRYPTO_SALSA20_586
715	tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
716	depends on (X86 || UML_X86) && !64BIT
717	depends on EXPERIMENTAL
718	select CRYPTO_BLKCIPHER
719	help
720	  Salsa20 stream cipher algorithm.
721
722	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
723	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
724
725	  The Salsa20 stream cipher algorithm is designed by Daniel J.
726	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
727
728config CRYPTO_SALSA20_X86_64
729	tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
730	depends on (X86 || UML_X86) && 64BIT
731	depends on EXPERIMENTAL
732	select CRYPTO_BLKCIPHER
733	help
734	  Salsa20 stream cipher algorithm.
735
736	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
737	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
738
739	  The Salsa20 stream cipher algorithm is designed by Daniel J.
740	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
741
742config CRYPTO_SEED
743	tristate "SEED cipher algorithm"
744	select CRYPTO_ALGAPI
745	help
746	  SEED cipher algorithm (RFC4269).
747
748	  SEED is a 128-bit symmetric key block cipher that has been
749	  developed by KISA (Korea Information Security Agency) as a
750	  national standard encryption algorithm of the Republic of Korea.
751	  It is a 16 round block cipher with the key size of 128 bit.
752
753	  See also:
754	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
755
756config CRYPTO_SERPENT
757	tristate "Serpent cipher algorithm"
758	select CRYPTO_ALGAPI
759	help
760	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
761
762	  Keys are allowed to be from 0 to 256 bits in length, in steps
763	  of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
764	  variant of Serpent for compatibility with old kerneli.org code.
765
766	  See also:
767	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
768
769config CRYPTO_TEA
770	tristate "TEA, XTEA and XETA cipher algorithms"
771	select CRYPTO_ALGAPI
772	help
773	  TEA cipher algorithm.
774
775	  Tiny Encryption Algorithm is a simple cipher that uses
776	  many rounds for security.  It is very fast and uses
777	  little memory.
778
779	  Xtendend Tiny Encryption Algorithm is a modification to
780	  the TEA algorithm to address a potential key weakness
781	  in the TEA algorithm.
782
783	  Xtendend Encryption Tiny Algorithm is a mis-implementation
784	  of the XTEA algorithm for compatibility purposes.
785
786config CRYPTO_TWOFISH
787	tristate "Twofish cipher algorithm"
788	select CRYPTO_ALGAPI
789	select CRYPTO_TWOFISH_COMMON
790	help
791	  Twofish cipher algorithm.
792
793	  Twofish was submitted as an AES (Advanced Encryption Standard)
794	  candidate cipher by researchers at CounterPane Systems.  It is a
795	  16 round block cipher supporting key sizes of 128, 192, and 256
796	  bits.
797
798	  See also:
799	  <http://www.schneier.com/twofish.html>
800
801config CRYPTO_TWOFISH_COMMON
802	tristate
803	help
804	  Common parts of the Twofish cipher algorithm shared by the
805	  generic c and the assembler implementations.
806
807config CRYPTO_TWOFISH_586
808	tristate "Twofish cipher algorithms (i586)"
809	depends on (X86 || UML_X86) && !64BIT
810	select CRYPTO_ALGAPI
811	select CRYPTO_TWOFISH_COMMON
812	help
813	  Twofish cipher algorithm.
814
815	  Twofish was submitted as an AES (Advanced Encryption Standard)
816	  candidate cipher by researchers at CounterPane Systems.  It is a
817	  16 round block cipher supporting key sizes of 128, 192, and 256
818	  bits.
819
820	  See also:
821	  <http://www.schneier.com/twofish.html>
822
823config CRYPTO_TWOFISH_X86_64
824	tristate "Twofish cipher algorithm (x86_64)"
825	depends on (X86 || UML_X86) && 64BIT
826	select CRYPTO_ALGAPI
827	select CRYPTO_TWOFISH_COMMON
828	help
829	  Twofish cipher algorithm (x86_64).
830
831	  Twofish was submitted as an AES (Advanced Encryption Standard)
832	  candidate cipher by researchers at CounterPane Systems.  It is a
833	  16 round block cipher supporting key sizes of 128, 192, and 256
834	  bits.
835
836	  See also:
837	  <http://www.schneier.com/twofish.html>
838
839config CRYPTO_TWOFISH_X86_64_3WAY
840	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
841	depends on (X86 || UML_X86) && 64BIT
842	select CRYPTO_ALGAPI
843	select CRYPTO_TWOFISH_COMMON
844	select CRYPTO_TWOFISH_X86_64
845	help
846	  Twofish cipher algorithm (x86_64, 3-way parallel).
847
848	  Twofish was submitted as an AES (Advanced Encryption Standard)
849	  candidate cipher by researchers at CounterPane Systems.  It is a
850	  16 round block cipher supporting key sizes of 128, 192, and 256
851	  bits.
852
853	  This module provides Twofish cipher algorithm that processes three
854	  blocks parallel, utilizing resources of out-of-order CPUs better.
855
856	  See also:
857	  <http://www.schneier.com/twofish.html>
858
859comment "Compression"
860
861config CRYPTO_DEFLATE
862	tristate "Deflate compression algorithm"
863	select CRYPTO_ALGAPI
864	select ZLIB_INFLATE
865	select ZLIB_DEFLATE
866	help
867	  This is the Deflate algorithm (RFC1951), specified for use in
868	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
869
870	  You will most probably want this if using IPSec.
871
872config CRYPTO_ZLIB
873	tristate "Zlib compression algorithm"
874	select CRYPTO_PCOMP
875	select ZLIB_INFLATE
876	select ZLIB_DEFLATE
877	select NLATTR
878	help
879	  This is the zlib algorithm.
880
881config CRYPTO_LZO
882	tristate "LZO compression algorithm"
883	select CRYPTO_ALGAPI
884	select LZO_COMPRESS
885	select LZO_DECOMPRESS
886	help
887	  This is the LZO algorithm.
888
889comment "Random Number Generation"
890
891config CRYPTO_ANSI_CPRNG
892	tristate "Pseudo Random Number Generation for Cryptographic modules"
893	default m
894	select CRYPTO_AES
895	select CRYPTO_RNG
896	help
897	  This option enables the generic pseudo random number generator
898	  for cryptographic modules.  Uses the Algorithm specified in
899	  ANSI X9.31 A.2.4. Note that this option must be enabled if
900	  CRYPTO_FIPS is selected
901
902config CRYPTO_USER_API
903	tristate
904
905config CRYPTO_USER_API_HASH
906	tristate "User-space interface for hash algorithms"
907	depends on NET
908	select CRYPTO_HASH
909	select CRYPTO_USER_API
910	help
911	  This option enables the user-spaces interface for hash
912	  algorithms.
913
914config CRYPTO_USER_API_SKCIPHER
915	tristate "User-space interface for symmetric key cipher algorithms"
916	depends on NET
917	select CRYPTO_BLKCIPHER
918	select CRYPTO_USER_API
919	help
920	  This option enables the user-spaces interface for symmetric
921	  key cipher algorithms.
922
923source "drivers/crypto/Kconfig"
924
925endif	# if CRYPTO
926