[CRYPTO] ripemd: Add Kconfig entries for RIPEMD hash algorithms
[linux-flexiantxendom0-natty.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     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
268     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
269
270 config CRYPTO_SHA1
271         tristate "SHA1 digest algorithm"
272         select CRYPTO_ALGAPI
273         help
274           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
275
276 config CRYPTO_SHA256
277         tristate "SHA224 and SHA256 digest algorithm"
278         select CRYPTO_ALGAPI
279         help
280           SHA256 secure hash standard (DFIPS 180-2).
281
282           This version of SHA implements a 256 bit hash with 128 bits of
283           security against collision attacks.
284
285           This code also includes SHA-224, a 224 bit hash with 112 bits
286           of security against collision attacks.
287
288 config CRYPTO_SHA512
289         tristate "SHA384 and SHA512 digest algorithms"
290         select CRYPTO_ALGAPI
291         help
292           SHA512 secure hash standard (DFIPS 180-2).
293
294           This version of SHA implements a 512 bit hash with 256 bits of
295           security against collision attacks.
296
297           This code also includes SHA-384, a 384 bit hash with 192 bits
298           of security against collision attacks.
299
300 config CRYPTO_TGR192
301         tristate "Tiger digest algorithms"
302         select CRYPTO_ALGAPI
303         help
304           Tiger hash algorithm 192, 160 and 128-bit hashes
305
306           Tiger is a hash function optimized for 64-bit processors while
307           still having decent performance on 32-bit processors.
308           Tiger was developed by Ross Anderson and Eli Biham.
309
310           See also:
311           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
312
313 config CRYPTO_WP512
314         tristate "Whirlpool digest algorithms"
315         select CRYPTO_ALGAPI
316         help
317           Whirlpool hash algorithm 512, 384 and 256-bit hashes
318
319           Whirlpool-512 is part of the NESSIE cryptographic primitives.
320           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
321
322           See also:
323           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
324
325 comment "Ciphers"
326
327 config CRYPTO_AES
328         tristate "AES cipher algorithms"
329         select CRYPTO_ALGAPI
330         help
331           AES cipher algorithms (FIPS-197). AES uses the Rijndael
332           algorithm.
333
334           Rijndael appears to be consistently a very good performer in
335           both hardware and software across a wide range of computing
336           environments regardless of its use in feedback or non-feedback
337           modes. Its key setup time is excellent, and its key agility is
338           good. Rijndael's very low memory requirements make it very well
339           suited for restricted-space environments, in which it also
340           demonstrates excellent performance. Rijndael's operations are
341           among the easiest to defend against power and timing attacks.
342
343           The AES specifies three key sizes: 128, 192 and 256 bits
344
345           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
346
347 config CRYPTO_AES_586
348         tristate "AES cipher algorithms (i586)"
349         depends on (X86 || UML_X86) && !64BIT
350         select CRYPTO_ALGAPI
351         select CRYPTO_AES
352         help
353           AES cipher algorithms (FIPS-197). AES uses the Rijndael
354           algorithm.
355
356           Rijndael appears to be consistently a very good performer in
357           both hardware and software across a wide range of computing
358           environments regardless of its use in feedback or non-feedback
359           modes. Its key setup time is excellent, and its key agility is
360           good. Rijndael's very low memory requirements make it very well
361           suited for restricted-space environments, in which it also
362           demonstrates excellent performance. Rijndael's operations are
363           among the easiest to defend against power and timing attacks.
364
365           The AES specifies three key sizes: 128, 192 and 256 bits
366
367           See <http://csrc.nist.gov/encryption/aes/> for more information.
368
369 config CRYPTO_AES_X86_64
370         tristate "AES cipher algorithms (x86_64)"
371         depends on (X86 || UML_X86) && 64BIT
372         select CRYPTO_ALGAPI
373         select CRYPTO_AES
374         help
375           AES cipher algorithms (FIPS-197). AES uses the Rijndael
376           algorithm.
377
378           Rijndael appears to be consistently a very good performer in
379           both hardware and software across a wide range of computing
380           environments regardless of its use in feedback or non-feedback
381           modes. Its key setup time is excellent, and its key agility is
382           good. Rijndael's very low memory requirements make it very well
383           suited for restricted-space environments, in which it also
384           demonstrates excellent performance. Rijndael's operations are
385           among the easiest to defend against power and timing attacks.
386
387           The AES specifies three key sizes: 128, 192 and 256 bits
388
389           See <http://csrc.nist.gov/encryption/aes/> for more information.
390
391 config CRYPTO_ANUBIS
392         tristate "Anubis cipher algorithm"
393         select CRYPTO_ALGAPI
394         help
395           Anubis cipher algorithm.
396
397           Anubis is a variable key length cipher which can use keys from
398           128 bits to 320 bits in length.  It was evaluated as a entrant
399           in the NESSIE competition.
400
401           See also:
402           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
403           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
404
405 config CRYPTO_ARC4
406         tristate "ARC4 cipher algorithm"
407         select CRYPTO_ALGAPI
408         help
409           ARC4 cipher algorithm.
410
411           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
412           bits in length.  This algorithm is required for driver-based
413           WEP, but it should not be for other purposes because of the
414           weakness of the algorithm.
415
416 config CRYPTO_BLOWFISH
417         tristate "Blowfish cipher algorithm"
418         select CRYPTO_ALGAPI
419         help
420           Blowfish cipher algorithm, by Bruce Schneier.
421
422           This is a variable key length cipher which can use keys from 32
423           bits to 448 bits in length.  It's fast, simple and specifically
424           designed for use on "large microprocessors".
425
426           See also:
427           <http://www.schneier.com/blowfish.html>
428
429 config CRYPTO_CAMELLIA
430         tristate "Camellia cipher algorithms"
431         depends on CRYPTO
432         select CRYPTO_ALGAPI
433         help
434           Camellia cipher algorithms module.
435
436           Camellia is a symmetric key block cipher developed jointly
437           at NTT and Mitsubishi Electric Corporation.
438
439           The Camellia specifies three key sizes: 128, 192 and 256 bits.
440
441           See also:
442           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
443
444 config CRYPTO_CAST5
445         tristate "CAST5 (CAST-128) cipher algorithm"
446         select CRYPTO_ALGAPI
447         help
448           The CAST5 encryption algorithm (synonymous with CAST-128) is
449           described in RFC2144.
450
451 config CRYPTO_CAST6
452         tristate "CAST6 (CAST-256) cipher algorithm"
453         select CRYPTO_ALGAPI
454         help
455           The CAST6 encryption algorithm (synonymous with CAST-256) is
456           described in RFC2612.
457
458 config CRYPTO_DES
459         tristate "DES and Triple DES EDE cipher algorithms"
460         select CRYPTO_ALGAPI
461         help
462           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
463
464 config CRYPTO_FCRYPT
465         tristate "FCrypt cipher algorithm"
466         select CRYPTO_ALGAPI
467         select CRYPTO_BLKCIPHER
468         help
469           FCrypt algorithm used by RxRPC.
470
471 config CRYPTO_KHAZAD
472         tristate "Khazad cipher algorithm"
473         select CRYPTO_ALGAPI
474         help
475           Khazad cipher algorithm.
476
477           Khazad was a finalist in the initial NESSIE competition.  It is
478           an algorithm optimized for 64-bit processors with good performance
479           on 32-bit processors.  Khazad uses an 128 bit key size.
480
481           See also:
482           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
483
484 config CRYPTO_SALSA20
485         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
486         depends on EXPERIMENTAL
487         select CRYPTO_BLKCIPHER
488         help
489           Salsa20 stream cipher algorithm.
490
491           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
492           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
493
494           The Salsa20 stream cipher algorithm is designed by Daniel J.
495           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
496
497 config CRYPTO_SALSA20_586
498         tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
499         depends on (X86 || UML_X86) && !64BIT
500         depends on EXPERIMENTAL
501         select CRYPTO_BLKCIPHER
502         help
503           Salsa20 stream cipher algorithm.
504
505           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
506           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
507
508           The Salsa20 stream cipher algorithm is designed by Daniel J.
509           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
510
511 config CRYPTO_SALSA20_X86_64
512         tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
513         depends on (X86 || UML_X86) && 64BIT
514         depends on EXPERIMENTAL
515         select CRYPTO_BLKCIPHER
516         help
517           Salsa20 stream cipher algorithm.
518
519           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
520           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
521
522           The Salsa20 stream cipher algorithm is designed by Daniel J.
523           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
524
525 config CRYPTO_SEED
526         tristate "SEED cipher algorithm"
527         select CRYPTO_ALGAPI
528         help
529           SEED cipher algorithm (RFC4269).
530
531           SEED is a 128-bit symmetric key block cipher that has been
532           developed by KISA (Korea Information Security Agency) as a
533           national standard encryption algorithm of the Republic of Korea.
534           It is a 16 round block cipher with the key size of 128 bit.
535
536           See also:
537           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
538
539 config CRYPTO_SERPENT
540         tristate "Serpent cipher algorithm"
541         select CRYPTO_ALGAPI
542         help
543           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
544
545           Keys are allowed to be from 0 to 256 bits in length, in steps
546           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
547           variant of Serpent for compatibility with old kerneli.org code.
548
549           See also:
550           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
551
552 config CRYPTO_TEA
553         tristate "TEA, XTEA and XETA cipher algorithms"
554         select CRYPTO_ALGAPI
555         help
556           TEA cipher algorithm.
557
558           Tiny Encryption Algorithm is a simple cipher that uses
559           many rounds for security.  It is very fast and uses
560           little memory.
561
562           Xtendend Tiny Encryption Algorithm is a modification to
563           the TEA algorithm to address a potential key weakness
564           in the TEA algorithm.
565
566           Xtendend Encryption Tiny Algorithm is a mis-implementation
567           of the XTEA algorithm for compatibility purposes.
568
569 config CRYPTO_TWOFISH
570         tristate "Twofish cipher algorithm"
571         select CRYPTO_ALGAPI
572         select CRYPTO_TWOFISH_COMMON
573         help
574           Twofish cipher algorithm.
575
576           Twofish was submitted as an AES (Advanced Encryption Standard)
577           candidate cipher by researchers at CounterPane Systems.  It is a
578           16 round block cipher supporting key sizes of 128, 192, and 256
579           bits.
580
581           See also:
582           <http://www.schneier.com/twofish.html>
583
584 config CRYPTO_TWOFISH_COMMON
585         tristate
586         help
587           Common parts of the Twofish cipher algorithm shared by the
588           generic c and the assembler implementations.
589
590 config CRYPTO_TWOFISH_586
591         tristate "Twofish cipher algorithms (i586)"
592         depends on (X86 || UML_X86) && !64BIT
593         select CRYPTO_ALGAPI
594         select CRYPTO_TWOFISH_COMMON
595         help
596           Twofish cipher algorithm.
597
598           Twofish was submitted as an AES (Advanced Encryption Standard)
599           candidate cipher by researchers at CounterPane Systems.  It is a
600           16 round block cipher supporting key sizes of 128, 192, and 256
601           bits.
602
603           See also:
604           <http://www.schneier.com/twofish.html>
605
606 config CRYPTO_TWOFISH_X86_64
607         tristate "Twofish cipher algorithm (x86_64)"
608         depends on (X86 || UML_X86) && 64BIT
609         select CRYPTO_ALGAPI
610         select CRYPTO_TWOFISH_COMMON
611         help
612           Twofish cipher algorithm (x86_64).
613
614           Twofish was submitted as an AES (Advanced Encryption Standard)
615           candidate cipher by researchers at CounterPane Systems.  It is a
616           16 round block cipher supporting key sizes of 128, 192, and 256
617           bits.
618
619           See also:
620           <http://www.schneier.com/twofish.html>
621
622 comment "Compression"
623
624 config CRYPTO_DEFLATE
625         tristate "Deflate compression algorithm"
626         select CRYPTO_ALGAPI
627         select ZLIB_INFLATE
628         select ZLIB_DEFLATE
629         help
630           This is the Deflate algorithm (RFC1951), specified for use in
631           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
632
633           You will most probably want this if using IPSec.
634
635 config CRYPTO_LZO
636         tristate "LZO compression algorithm"
637         select CRYPTO_ALGAPI
638         select LZO_COMPRESS
639         select LZO_DECOMPRESS
640         help
641           This is the LZO algorithm.
642
643 source "drivers/crypto/Kconfig"
644
645 endif   # if CRYPTO