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