[CRYPTO] ripemd: Add Kconfig entries for extended RIPEMD hash algorithms
[linux-2.6.git] / crypto / Kconfig
1 #
2 # Generic algorithms support
3 #
4 config XOR_BLOCKS
5         tristate
6
7 #
8 # async_tx api: hardware offloaded memory transfer/transform support
9 #
10 source "crypto/async_tx/Kconfig"
11
12 #
13 # Cryptographic API Configuration
14 #
15 menuconfig CRYPTO
16         tristate "Cryptographic API"
17         help
18           This option provides the core Cryptographic API.
19
20 if CRYPTO
21
22 comment "Crypto core or helper"
23
24 config CRYPTO_ALGAPI
25         tristate
26         help
27           This option provides the API for cryptographic algorithms.
28
29 config CRYPTO_AEAD
30         tristate
31         select CRYPTO_ALGAPI
32
33 config CRYPTO_BLKCIPHER
34         tristate
35         select CRYPTO_ALGAPI
36
37 config CRYPTO_HASH
38         tristate
39         select CRYPTO_ALGAPI
40
41 config CRYPTO_MANAGER
42         tristate "Cryptographic algorithm manager"
43         select CRYPTO_ALGAPI
44         help
45           Create default cryptographic template instantiations such as
46           cbc(aes).
47
48 config CRYPTO_GF128MUL
49         tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
50         depends on EXPERIMENTAL
51         help
52           Efficient table driven implementation of multiplications in the
53           field GF(2^128).  This is needed by some cypher modes. This
54           option will be selected automatically if you select such a
55           cipher mode.  Only select this option by hand if you expect to load
56           an external module that requires these functions.
57
58 config CRYPTO_NULL
59         tristate "Null algorithms"
60         select CRYPTO_ALGAPI
61         select CRYPTO_BLKCIPHER
62         help
63           These are 'Null' algorithms, used by IPsec, which do nothing.
64
65 config CRYPTO_CRYPTD
66         tristate "Software async crypto daemon"
67         select CRYPTO_BLKCIPHER
68         select CRYPTO_MANAGER
69         help
70           This is a generic software asynchronous crypto daemon that
71           converts an arbitrary synchronous software crypto algorithm
72           into an asynchronous algorithm that executes in a kernel thread.
73
74 config CRYPTO_AUTHENC
75         tristate "Authenc support"
76         select CRYPTO_AEAD
77         select CRYPTO_BLKCIPHER
78         select CRYPTO_MANAGER
79         select CRYPTO_HASH
80         help
81           Authenc: Combined mode wrapper for IPsec.
82           This is required for IPSec.
83
84 config CRYPTO_TEST
85         tristate "Testing module"
86         depends on m
87         select CRYPTO_ALGAPI
88         select CRYPTO_AEAD
89         select CRYPTO_BLKCIPHER
90         help
91           Quick & dirty crypto test module.
92
93 comment "Authenticated Encryption with Associated Data"
94
95 config CRYPTO_CCM
96         tristate "CCM support"
97         select CRYPTO_CTR
98         select CRYPTO_AEAD
99         help
100           Support for Counter with CBC MAC. Required for IPsec.
101
102 config CRYPTO_GCM
103         tristate "GCM/GMAC support"
104         select CRYPTO_CTR
105         select CRYPTO_AEAD
106         select CRYPTO_GF128MUL
107         help
108           Support for Galois/Counter Mode (GCM) and Galois Message
109           Authentication Code (GMAC). Required for IPSec.
110
111 config CRYPTO_SEQIV
112         tristate "Sequence Number IV Generator"
113         select CRYPTO_AEAD
114         select CRYPTO_BLKCIPHER
115         help
116           This IV generator generates an IV based on a sequence number by
117           xoring it with a salt.  This algorithm is mainly useful for CTR
118
119 comment "Block modes"
120
121 config CRYPTO_CBC
122         tristate "CBC support"
123         select CRYPTO_BLKCIPHER
124         select CRYPTO_MANAGER
125         help
126           CBC: Cipher Block Chaining mode
127           This block cipher algorithm is required for IPSec.
128
129 config CRYPTO_CTR
130         tristate "CTR support"
131         select CRYPTO_BLKCIPHER
132         select CRYPTO_SEQIV
133         select CRYPTO_MANAGER
134         help
135           CTR: Counter mode
136           This block cipher algorithm is required for IPSec.
137
138 config CRYPTO_CTS
139         tristate "CTS support"
140         select CRYPTO_BLKCIPHER
141         help
142           CTS: Cipher Text Stealing
143           This is the Cipher Text Stealing mode as described by
144           Section 8 of rfc2040 and referenced by rfc3962.
145           (rfc3962 includes errata information in its Appendix A)
146           This mode is required for Kerberos gss mechanism support
147           for AES encryption.
148
149 config CRYPTO_ECB
150         tristate "ECB support"
151         select CRYPTO_BLKCIPHER
152         select CRYPTO_MANAGER
153         help
154           ECB: Electronic CodeBook mode
155           This is the simplest block cipher algorithm.  It simply encrypts
156           the input block by block.
157
158 config CRYPTO_LRW
159         tristate "LRW support (EXPERIMENTAL)"
160         depends on EXPERIMENTAL
161         select CRYPTO_BLKCIPHER
162         select CRYPTO_MANAGER
163         select CRYPTO_GF128MUL
164         help
165           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
166           narrow block cipher mode for dm-crypt.  Use it with cipher
167           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
168           The first 128, 192 or 256 bits in the key are used for AES and the
169           rest is used to tie each cipher block to its logical position.
170
171 config CRYPTO_PCBC
172         tristate "PCBC support"
173         select CRYPTO_BLKCIPHER
174         select CRYPTO_MANAGER
175         help
176           PCBC: Propagating Cipher Block Chaining mode
177           This block cipher algorithm is required for RxRPC.
178
179 config CRYPTO_XTS
180         tristate "XTS support (EXPERIMENTAL)"
181         depends on EXPERIMENTAL
182         select CRYPTO_BLKCIPHER
183         select CRYPTO_MANAGER
184         select CRYPTO_GF128MUL
185         help
186           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
187           key size 256, 384 or 512 bits. This implementation currently
188           can't handle a sectorsize which is not a multiple of 16 bytes.
189
190 comment "Hash modes"
191
192 config CRYPTO_HMAC
193         tristate "HMAC support"
194         select CRYPTO_HASH
195         select CRYPTO_MANAGER
196         help
197           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
198           This is required for IPSec.
199
200 config CRYPTO_XCBC
201         tristate "XCBC support"
202         depends on EXPERIMENTAL
203         select CRYPTO_HASH
204         select CRYPTO_MANAGER
205         help
206           XCBC: Keyed-Hashing with encryption algorithm
207                 http://www.ietf.org/rfc/rfc3566.txt
208                 http://csrc.nist.gov/encryption/modes/proposedmodes/
209                  xcbc-mac/xcbc-mac-spec.pdf
210
211 comment "Digest"
212
213 config CRYPTO_CRC32C
214         tristate "CRC32c CRC algorithm"
215         select CRYPTO_ALGAPI
216         select LIBCRC32C
217         help
218           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
219           by iSCSI for header and data digests and by others.
220           See Castagnoli93.  This implementation uses lib/libcrc32c.
221           Module will be crc32c.
222
223 config CRYPTO_MD4
224         tristate "MD4 digest algorithm"
225         select CRYPTO_ALGAPI
226         help
227           MD4 message digest algorithm (RFC1320).
228
229 config CRYPTO_MD5
230         tristate "MD5 digest algorithm"
231         select CRYPTO_ALGAPI
232         help
233           MD5 message digest algorithm (RFC1321).
234
235 config CRYPTO_MICHAEL_MIC
236         tristate "Michael MIC keyed digest algorithm"
237         select CRYPTO_ALGAPI
238         help
239           Michael MIC is used for message integrity protection in TKIP
240           (IEEE 802.11i). This algorithm is required for TKIP, but it
241           should not be used for other purposes because of the weakness
242           of the algorithm.
243
244 config CRYPTO_RMD128
245   tristate "RIPEMD-128 digest algorithm"
246   select CRYPTO_ALGAPI
247   help
248     RIPEMD-128 (ISO/IEC 10118-3:2004).
249
250     RIPEMD-128 is a 128-bit cryptographic hash function. It should only
251     to be used as a secure replacement for RIPEMD. For other use cases
252     RIPEMD-160 should be used.
253
254     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
255     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
256
257 config CRYPTO_RMD160
258   tristate "RIPEMD-160 digest algorithm"
259   select CRYPTO_ALGAPI
260   help
261     RIPEMD-160 (ISO/IEC 10118-3:2004).
262
263     RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
264     to be used as a secure replacement for the 128-bit hash functions
265     MD4, MD5 and it's predecessor RIPEMD (not to be confused with RIPEMD-128).
266
267     It's speed is comparable to SHA1 and there are no known attacks against
268     RIPEMD-160.
269
270     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
271     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
272
273 config CRYPTO_RMD256
274   tristate "RIPEMD-256 digest algorithm"
275   select CRYPTO_ALGAPI
276   help
277     RIPEMD-256 is an optional extension of RIPEMD-128 with a 256 bit hash.
278     It is intended for applications that require longer hash-results, without
279     needing a larger security level (than RIPEMD-128).
280
281     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
282     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
283
284 config CRYPTO_RMD320
285   tristate "RIPEMD-320 digest algorithm"
286   select CRYPTO_ALGAPI
287   help
288     RIPEMD-320 is an optional extension of RIPEMD-160 with a 320 bit hash.
289     It is intended for applications that require longer hash-results, without
290     needing a larger security level (than RIPEMD-160).
291
292     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
293     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
294
295 config CRYPTO_SHA1
296         tristate "SHA1 digest algorithm"
297         select CRYPTO_ALGAPI
298         help
299           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
300
301 config CRYPTO_SHA256
302         tristate "SHA224 and SHA256 digest algorithm"
303         select CRYPTO_ALGAPI
304         help
305           SHA256 secure hash standard (DFIPS 180-2).
306
307           This version of SHA implements a 256 bit hash with 128 bits of
308           security against collision attacks.
309
310           This code also includes SHA-224, a 224 bit hash with 112 bits
311           of security against collision attacks.
312
313 config CRYPTO_SHA512
314         tristate "SHA384 and SHA512 digest algorithms"
315         select CRYPTO_ALGAPI
316         help
317           SHA512 secure hash standard (DFIPS 180-2).
318
319           This version of SHA implements a 512 bit hash with 256 bits of
320           security against collision attacks.
321
322           This code also includes SHA-384, a 384 bit hash with 192 bits
323           of security against collision attacks.
324
325 config CRYPTO_TGR192
326         tristate "Tiger digest algorithms"
327         select CRYPTO_ALGAPI
328         help
329           Tiger hash algorithm 192, 160 and 128-bit hashes
330
331           Tiger is a hash function optimized for 64-bit processors while
332           still having decent performance on 32-bit processors.
333           Tiger was developed by Ross Anderson and Eli Biham.
334
335           See also:
336           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
337
338 config CRYPTO_WP512
339         tristate "Whirlpool digest algorithms"
340         select CRYPTO_ALGAPI
341         help
342           Whirlpool hash algorithm 512, 384 and 256-bit hashes
343
344           Whirlpool-512 is part of the NESSIE cryptographic primitives.
345           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
346
347           See also:
348           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
349
350 comment "Ciphers"
351
352 config CRYPTO_AES
353         tristate "AES cipher algorithms"
354         select CRYPTO_ALGAPI
355         help
356           AES cipher algorithms (FIPS-197). AES uses the Rijndael
357           algorithm.
358
359           Rijndael appears to be consistently a very good performer in
360           both hardware and software across a wide range of computing
361           environments regardless of its use in feedback or non-feedback
362           modes. Its key setup time is excellent, and its key agility is
363           good. Rijndael's very low memory requirements make it very well
364           suited for restricted-space environments, in which it also
365           demonstrates excellent performance. Rijndael's operations are
366           among the easiest to defend against power and timing attacks.
367
368           The AES specifies three key sizes: 128, 192 and 256 bits
369
370           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
371
372 config CRYPTO_AES_586
373         tristate "AES cipher algorithms (i586)"
374         depends on (X86 || UML_X86) && !64BIT
375         select CRYPTO_ALGAPI
376         select CRYPTO_AES
377         help
378           AES cipher algorithms (FIPS-197). AES uses the Rijndael
379           algorithm.
380
381           Rijndael appears to be consistently a very good performer in
382           both hardware and software across a wide range of computing
383           environments regardless of its use in feedback or non-feedback
384           modes. Its key setup time is excellent, and its key agility is
385           good. Rijndael's very low memory requirements make it very well
386           suited for restricted-space environments, in which it also
387           demonstrates excellent performance. Rijndael's operations are
388           among the easiest to defend against power and timing attacks.
389
390           The AES specifies three key sizes: 128, 192 and 256 bits
391
392           See <http://csrc.nist.gov/encryption/aes/> for more information.
393
394 config CRYPTO_AES_X86_64
395         tristate "AES cipher algorithms (x86_64)"
396         depends on (X86 || UML_X86) && 64BIT
397         select CRYPTO_ALGAPI
398         select CRYPTO_AES
399         help
400           AES cipher algorithms (FIPS-197). AES uses the Rijndael
401           algorithm.
402
403           Rijndael appears to be consistently a very good performer in
404           both hardware and software across a wide range of computing
405           environments regardless of its use in feedback or non-feedback
406           modes. Its key setup time is excellent, and its key agility is
407           good. Rijndael's very low memory requirements make it very well
408           suited for restricted-space environments, in which it also
409           demonstrates excellent performance. Rijndael's operations are
410           among the easiest to defend against power and timing attacks.
411
412           The AES specifies three key sizes: 128, 192 and 256 bits
413
414           See <http://csrc.nist.gov/encryption/aes/> for more information.
415
416 config CRYPTO_ANUBIS
417         tristate "Anubis cipher algorithm"
418         select CRYPTO_ALGAPI
419         help
420           Anubis cipher algorithm.
421
422           Anubis is a variable key length cipher which can use keys from
423           128 bits to 320 bits in length.  It was evaluated as a entrant
424           in the NESSIE competition.
425
426           See also:
427           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
428           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
429
430 config CRYPTO_ARC4
431         tristate "ARC4 cipher algorithm"
432         select CRYPTO_ALGAPI
433         help
434           ARC4 cipher algorithm.
435
436           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
437           bits in length.  This algorithm is required for driver-based
438           WEP, but it should not be for other purposes because of the
439           weakness of the algorithm.
440
441 config CRYPTO_BLOWFISH
442         tristate "Blowfish cipher algorithm"
443         select CRYPTO_ALGAPI
444         help
445           Blowfish cipher algorithm, by Bruce Schneier.
446
447           This is a variable key length cipher which can use keys from 32
448           bits to 448 bits in length.  It's fast, simple and specifically
449           designed for use on "large microprocessors".
450
451           See also:
452           <http://www.schneier.com/blowfish.html>
453
454 config CRYPTO_CAMELLIA
455         tristate "Camellia cipher algorithms"
456         depends on CRYPTO
457         select CRYPTO_ALGAPI
458         help
459           Camellia cipher algorithms module.
460
461           Camellia is a symmetric key block cipher developed jointly
462           at NTT and Mitsubishi Electric Corporation.
463
464           The Camellia specifies three key sizes: 128, 192 and 256 bits.
465
466           See also:
467           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
468
469 config CRYPTO_CAST5
470         tristate "CAST5 (CAST-128) cipher algorithm"
471         select CRYPTO_ALGAPI
472         help
473           The CAST5 encryption algorithm (synonymous with CAST-128) is
474           described in RFC2144.
475
476 config CRYPTO_CAST6
477         tristate "CAST6 (CAST-256) cipher algorithm"
478         select CRYPTO_ALGAPI
479         help
480           The CAST6 encryption algorithm (synonymous with CAST-256) is
481           described in RFC2612.
482
483 config CRYPTO_DES
484         tristate "DES and Triple DES EDE cipher algorithms"
485         select CRYPTO_ALGAPI
486         help
487           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
488
489 config CRYPTO_FCRYPT
490         tristate "FCrypt cipher algorithm"
491         select CRYPTO_ALGAPI
492         select CRYPTO_BLKCIPHER
493         help
494           FCrypt algorithm used by RxRPC.
495
496 config CRYPTO_KHAZAD
497         tristate "Khazad cipher algorithm"
498         select CRYPTO_ALGAPI
499         help
500           Khazad cipher algorithm.
501
502           Khazad was a finalist in the initial NESSIE competition.  It is
503           an algorithm optimized for 64-bit processors with good performance
504           on 32-bit processors.  Khazad uses an 128 bit key size.
505
506           See also:
507           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
508
509 config CRYPTO_SALSA20
510         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
511         depends on EXPERIMENTAL
512         select CRYPTO_BLKCIPHER
513         help
514           Salsa20 stream cipher algorithm.
515
516           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
517           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
518
519           The Salsa20 stream cipher algorithm is designed by Daniel J.
520           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
521
522 config CRYPTO_SALSA20_586
523         tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
524         depends on (X86 || UML_X86) && !64BIT
525         depends on EXPERIMENTAL
526         select CRYPTO_BLKCIPHER
527         help
528           Salsa20 stream cipher algorithm.
529
530           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
531           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
532
533           The Salsa20 stream cipher algorithm is designed by Daniel J.
534           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
535
536 config CRYPTO_SALSA20_X86_64
537         tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
538         depends on (X86 || UML_X86) && 64BIT
539         depends on EXPERIMENTAL
540         select CRYPTO_BLKCIPHER
541         help
542           Salsa20 stream cipher algorithm.
543
544           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
545           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
546
547           The Salsa20 stream cipher algorithm is designed by Daniel J.
548           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
549
550 config CRYPTO_SEED
551         tristate "SEED cipher algorithm"
552         select CRYPTO_ALGAPI
553         help
554           SEED cipher algorithm (RFC4269).
555
556           SEED is a 128-bit symmetric key block cipher that has been
557           developed by KISA (Korea Information Security Agency) as a
558           national standard encryption algorithm of the Republic of Korea.
559           It is a 16 round block cipher with the key size of 128 bit.
560
561           See also:
562           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
563
564 config CRYPTO_SERPENT
565         tristate "Serpent cipher algorithm"
566         select CRYPTO_ALGAPI
567         help
568           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
569
570           Keys are allowed to be from 0 to 256 bits in length, in steps
571           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
572           variant of Serpent for compatibility with old kerneli.org code.
573
574           See also:
575           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
576
577 config CRYPTO_TEA
578         tristate "TEA, XTEA and XETA cipher algorithms"
579         select CRYPTO_ALGAPI
580         help
581           TEA cipher algorithm.
582
583           Tiny Encryption Algorithm is a simple cipher that uses
584           many rounds for security.  It is very fast and uses
585           little memory.
586
587           Xtendend Tiny Encryption Algorithm is a modification to
588           the TEA algorithm to address a potential key weakness
589           in the TEA algorithm.
590
591           Xtendend Encryption Tiny Algorithm is a mis-implementation
592           of the XTEA algorithm for compatibility purposes.
593
594 config CRYPTO_TWOFISH
595         tristate "Twofish cipher algorithm"
596         select CRYPTO_ALGAPI
597         select CRYPTO_TWOFISH_COMMON
598         help
599           Twofish cipher algorithm.
600
601           Twofish was submitted as an AES (Advanced Encryption Standard)
602           candidate cipher by researchers at CounterPane Systems.  It is a
603           16 round block cipher supporting key sizes of 128, 192, and 256
604           bits.
605
606           See also:
607           <http://www.schneier.com/twofish.html>
608
609 config CRYPTO_TWOFISH_COMMON
610         tristate
611         help
612           Common parts of the Twofish cipher algorithm shared by the
613           generic c and the assembler implementations.
614
615 config CRYPTO_TWOFISH_586
616         tristate "Twofish cipher algorithms (i586)"
617         depends on (X86 || UML_X86) && !64BIT
618         select CRYPTO_ALGAPI
619         select CRYPTO_TWOFISH_COMMON
620         help
621           Twofish cipher algorithm.
622
623           Twofish was submitted as an AES (Advanced Encryption Standard)
624           candidate cipher by researchers at CounterPane Systems.  It is a
625           16 round block cipher supporting key sizes of 128, 192, and 256
626           bits.
627
628           See also:
629           <http://www.schneier.com/twofish.html>
630
631 config CRYPTO_TWOFISH_X86_64
632         tristate "Twofish cipher algorithm (x86_64)"
633         depends on (X86 || UML_X86) && 64BIT
634         select CRYPTO_ALGAPI
635         select CRYPTO_TWOFISH_COMMON
636         help
637           Twofish cipher algorithm (x86_64).
638
639           Twofish was submitted as an AES (Advanced Encryption Standard)
640           candidate cipher by researchers at CounterPane Systems.  It is a
641           16 round block cipher supporting key sizes of 128, 192, and 256
642           bits.
643
644           See also:
645           <http://www.schneier.com/twofish.html>
646
647 comment "Compression"
648
649 config CRYPTO_DEFLATE
650         tristate "Deflate compression algorithm"
651         select CRYPTO_ALGAPI
652         select ZLIB_INFLATE
653         select ZLIB_DEFLATE
654         help
655           This is the Deflate algorithm (RFC1951), specified for use in
656           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
657
658           You will most probably want this if using IPSec.
659
660 config CRYPTO_LZO
661         tristate "LZO compression algorithm"
662         select CRYPTO_ALGAPI
663         select LZO_COMPRESS
664         select LZO_DECOMPRESS
665         help
666           This is the LZO algorithm.
667
668 source "drivers/crypto/Kconfig"
669
670 endif   # if CRYPTO