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