[CRYPTO] api: Make the crypto subsystem fully modular
[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 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_CTS
217         tristate "CTS support"
218         select CRYPTO_BLKCIPHER
219         help
220           CTS: Cipher Text Stealing
221           This is the Cipher Text Stealing mode as described by
222           Section 8 of rfc2040 and referenced by rfc3962.
223           (rfc3962 includes errata information in its Appendix A)
224           This mode is required for Kerberos gss mechanism support
225           for AES encryption.
226
227 config CRYPTO_GCM
228         tristate "GCM/GMAC support"
229         select CRYPTO_CTR
230         select CRYPTO_AEAD
231         select CRYPTO_GF128MUL
232         help
233           Support for Galois/Counter Mode (GCM) and Galois Message
234           Authentication Code (GMAC). Required for IPSec.
235
236 config CRYPTO_CCM
237         tristate "CCM support"
238         select CRYPTO_CTR
239         select CRYPTO_AEAD
240         help
241           Support for Counter with CBC MAC. Required for IPsec.
242
243 config CRYPTO_CRYPTD
244         tristate "Software async crypto daemon"
245         select CRYPTO_BLKCIPHER
246         select CRYPTO_MANAGER
247         help
248           This is a generic software asynchronous crypto daemon that
249           converts an arbitrary synchronous software crypto algorithm
250           into an asynchronous algorithm that executes in a kernel thread.
251
252 config CRYPTO_DES
253         tristate "DES and Triple DES EDE cipher algorithms"
254         select CRYPTO_ALGAPI
255         help
256           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
257
258 config CRYPTO_FCRYPT
259         tristate "FCrypt cipher algorithm"
260         select CRYPTO_ALGAPI
261         select CRYPTO_BLKCIPHER
262         help
263           FCrypt algorithm used by RxRPC.
264
265 config CRYPTO_BLOWFISH
266         tristate "Blowfish cipher algorithm"
267         select CRYPTO_ALGAPI
268         help
269           Blowfish cipher algorithm, by Bruce Schneier.
270           
271           This is a variable key length cipher which can use keys from 32
272           bits to 448 bits in length.  It's fast, simple and specifically
273           designed for use on "large microprocessors".
274           
275           See also:
276           <http://www.schneier.com/blowfish.html>
277
278 config CRYPTO_TWOFISH
279         tristate "Twofish cipher algorithm"
280         select CRYPTO_ALGAPI
281         select CRYPTO_TWOFISH_COMMON
282         help
283           Twofish cipher algorithm.
284           
285           Twofish was submitted as an AES (Advanced Encryption Standard)
286           candidate cipher by researchers at CounterPane Systems.  It is a
287           16 round block cipher supporting key sizes of 128, 192, and 256
288           bits.
289           
290           See also:
291           <http://www.schneier.com/twofish.html>
292
293 config CRYPTO_TWOFISH_COMMON
294         tristate
295         help
296           Common parts of the Twofish cipher algorithm shared by the
297           generic c and the assembler implementations.
298
299 config CRYPTO_TWOFISH_586
300         tristate "Twofish cipher algorithms (i586)"
301         depends on (X86 || UML_X86) && !64BIT
302         select CRYPTO_ALGAPI
303         select CRYPTO_TWOFISH_COMMON
304         help
305           Twofish cipher algorithm.
306
307           Twofish was submitted as an AES (Advanced Encryption Standard)
308           candidate cipher by researchers at CounterPane Systems.  It is a
309           16 round block cipher supporting key sizes of 128, 192, and 256
310           bits.
311
312           See also:
313           <http://www.schneier.com/twofish.html>
314
315 config CRYPTO_TWOFISH_X86_64
316         tristate "Twofish cipher algorithm (x86_64)"
317         depends on (X86 || UML_X86) && 64BIT
318         select CRYPTO_ALGAPI
319         select CRYPTO_TWOFISH_COMMON
320         help
321           Twofish cipher algorithm (x86_64).
322
323           Twofish was submitted as an AES (Advanced Encryption Standard)
324           candidate cipher by researchers at CounterPane Systems.  It is a
325           16 round block cipher supporting key sizes of 128, 192, and 256
326           bits.
327
328           See also:
329           <http://www.schneier.com/twofish.html>
330
331 config CRYPTO_SERPENT
332         tristate "Serpent cipher algorithm"
333         select CRYPTO_ALGAPI
334         help
335           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
336
337           Keys are allowed to be from 0 to 256 bits in length, in steps
338           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
339           variant of Serpent for compatibility with old kerneli.org code.
340
341           See also:
342           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
343
344 config CRYPTO_AES
345         tristate "AES cipher algorithms"
346         select CRYPTO_ALGAPI
347         help
348           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
349           algorithm.
350
351           Rijndael appears to be consistently a very good performer in
352           both hardware and software across a wide range of computing 
353           environments regardless of its use in feedback or non-feedback 
354           modes. Its key setup time is excellent, and its key agility is 
355           good. Rijndael's very low memory requirements make it very well 
356           suited for restricted-space environments, in which it also 
357           demonstrates excellent performance. Rijndael's operations are 
358           among the easiest to defend against power and timing attacks. 
359
360           The AES specifies three key sizes: 128, 192 and 256 bits        
361
362           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
363
364 config CRYPTO_AES_586
365         tristate "AES cipher algorithms (i586)"
366         depends on (X86 || UML_X86) && !64BIT
367         select CRYPTO_ALGAPI
368         select CRYPTO_AES
369         help
370           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
371           algorithm.
372
373           Rijndael appears to be consistently a very good performer in
374           both hardware and software across a wide range of computing 
375           environments regardless of its use in feedback or non-feedback 
376           modes. Its key setup time is excellent, and its key agility is 
377           good. Rijndael's very low memory requirements make it very well 
378           suited for restricted-space environments, in which it also 
379           demonstrates excellent performance. Rijndael's operations are 
380           among the easiest to defend against power and timing attacks. 
381
382           The AES specifies three key sizes: 128, 192 and 256 bits        
383
384           See <http://csrc.nist.gov/encryption/aes/> for more information.
385
386 config CRYPTO_AES_X86_64
387         tristate "AES cipher algorithms (x86_64)"
388         depends on (X86 || UML_X86) && 64BIT
389         select CRYPTO_ALGAPI
390         select CRYPTO_AES
391         help
392           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
393           algorithm.
394
395           Rijndael appears to be consistently a very good performer in
396           both hardware and software across a wide range of computing 
397           environments regardless of its use in feedback or non-feedback 
398           modes. Its key setup time is excellent, and its key agility is 
399           good. Rijndael's very low memory requirements make it very well 
400           suited for restricted-space environments, in which it also 
401           demonstrates excellent performance. Rijndael's operations are 
402           among the easiest to defend against power and timing attacks. 
403
404           The AES specifies three key sizes: 128, 192 and 256 bits        
405
406           See <http://csrc.nist.gov/encryption/aes/> for more information.
407
408 config CRYPTO_CAST5
409         tristate "CAST5 (CAST-128) cipher algorithm"
410         select CRYPTO_ALGAPI
411         help
412           The CAST5 encryption algorithm (synonymous with CAST-128) is
413           described in RFC2144.
414
415 config CRYPTO_CAST6
416         tristate "CAST6 (CAST-256) cipher algorithm"
417         select CRYPTO_ALGAPI
418         help
419           The CAST6 encryption algorithm (synonymous with CAST-256) is
420           described in RFC2612.
421
422 config CRYPTO_TEA
423         tristate "TEA, XTEA and XETA cipher algorithms"
424         select CRYPTO_ALGAPI
425         help
426           TEA cipher algorithm.
427
428           Tiny Encryption Algorithm is a simple cipher that uses
429           many rounds for security.  It is very fast and uses
430           little memory.
431
432           Xtendend Tiny Encryption Algorithm is a modification to
433           the TEA algorithm to address a potential key weakness
434           in the TEA algorithm.
435
436           Xtendend Encryption Tiny Algorithm is a mis-implementation 
437           of the XTEA algorithm for compatibility purposes.
438
439 config CRYPTO_ARC4
440         tristate "ARC4 cipher algorithm"
441         select CRYPTO_ALGAPI
442         help
443           ARC4 cipher algorithm.
444
445           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
446           bits in length.  This algorithm is required for driver-based 
447           WEP, but it should not be for other purposes because of the
448           weakness of the algorithm.
449
450 config CRYPTO_KHAZAD
451         tristate "Khazad cipher algorithm"
452         select CRYPTO_ALGAPI
453         help
454           Khazad cipher algorithm.
455
456           Khazad was a finalist in the initial NESSIE competition.  It is
457           an algorithm optimized for 64-bit processors with good performance
458           on 32-bit processors.  Khazad uses an 128 bit key size.
459
460           See also:
461           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
462
463 config CRYPTO_ANUBIS
464         tristate "Anubis cipher algorithm"
465         select CRYPTO_ALGAPI
466         help
467           Anubis cipher algorithm.
468
469           Anubis is a variable key length cipher which can use keys from 
470           128 bits to 320 bits in length.  It was evaluated as a entrant
471           in the NESSIE competition.
472           
473           See also:
474           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
475           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
476
477 config CRYPTO_SEED
478         tristate "SEED cipher algorithm"
479         select CRYPTO_ALGAPI
480         help
481           SEED cipher algorithm (RFC4269).
482
483           SEED is a 128-bit symmetric key block cipher that has been
484           developed by KISA (Korea Information Security Agency) as a
485           national standard encryption algorithm of the Republic of Korea.
486           It is a 16 round block cipher with the key size of 128 bit.
487
488           See also:
489           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
490
491 config CRYPTO_SALSA20
492         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
493         depends on EXPERIMENTAL
494         select CRYPTO_BLKCIPHER
495         help
496           Salsa20 stream cipher algorithm.
497
498           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
499           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
500
501           The Salsa20 stream cipher algorithm is designed by Daniel J.
502           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
503
504 config CRYPTO_SALSA20_586
505         tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
506         depends on (X86 || UML_X86) && !64BIT
507         depends on EXPERIMENTAL
508         select CRYPTO_BLKCIPHER
509         help
510           Salsa20 stream cipher algorithm.
511
512           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
513           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
514
515           The Salsa20 stream cipher algorithm is designed by Daniel J.
516           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
517
518 config CRYPTO_SALSA20_X86_64
519         tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
520         depends on (X86 || UML_X86) && 64BIT
521         depends on EXPERIMENTAL
522         select CRYPTO_BLKCIPHER
523         help
524           Salsa20 stream cipher algorithm.
525
526           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
527           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
528
529           The Salsa20 stream cipher algorithm is designed by Daniel J.
530           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
531
532 config CRYPTO_DEFLATE
533         tristate "Deflate compression algorithm"
534         select CRYPTO_ALGAPI
535         select ZLIB_INFLATE
536         select ZLIB_DEFLATE
537         help
538           This is the Deflate algorithm (RFC1951), specified for use in
539           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
540           
541           You will most probably want this if using IPSec.
542
543 config CRYPTO_MICHAEL_MIC
544         tristate "Michael MIC keyed digest algorithm"
545         select CRYPTO_ALGAPI
546         help
547           Michael MIC is used for message integrity protection in TKIP
548           (IEEE 802.11i). This algorithm is required for TKIP, but it
549           should not be used for other purposes because of the weakness
550           of the algorithm.
551
552 config CRYPTO_CRC32C
553         tristate "CRC32c CRC algorithm"
554         select CRYPTO_ALGAPI
555         select LIBCRC32C
556         help
557           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
558           by iSCSI for header and data digests and by others.
559           See Castagnoli93.  This implementation uses lib/libcrc32c.
560           Module will be crc32c.
561
562 config CRYPTO_CAMELLIA
563         tristate "Camellia cipher algorithms"
564         depends on CRYPTO
565         select CRYPTO_ALGAPI
566         help
567           Camellia cipher algorithms module.
568
569           Camellia is a symmetric key block cipher developed jointly
570           at NTT and Mitsubishi Electric Corporation.
571
572           The Camellia specifies three key sizes: 128, 192 and 256 bits.
573
574           See also:
575           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
576
577 config CRYPTO_TEST
578         tristate "Testing module"
579         depends on m
580         select CRYPTO_ALGAPI
581         select CRYPTO_AEAD
582         select CRYPTO_BLKCIPHER
583         help
584           Quick & dirty crypto test module.
585
586 config CRYPTO_AUTHENC
587         tristate "Authenc support"
588         select CRYPTO_AEAD
589         select CRYPTO_BLKCIPHER
590         select CRYPTO_MANAGER
591         select CRYPTO_HASH
592         help
593           Authenc: Combined mode wrapper for IPsec.
594           This is required for IPSec.
595
596 config CRYPTO_LZO
597         tristate "LZO compression algorithm"
598         select CRYPTO_ALGAPI
599         select LZO_COMPRESS
600         select LZO_DECOMPRESS
601         help
602           This is the LZO algorithm.
603
604 source "drivers/crypto/Kconfig"
605
606 endif   # if CRYPTO