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