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