[CRYPTO] pcbc: Add Propagated CBC template
[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_BLOWFISH
208         tristate "Blowfish cipher algorithm"
209         select CRYPTO_ALGAPI
210         help
211           Blowfish cipher algorithm, by Bruce Schneier.
212           
213           This is a variable key length cipher which can use keys from 32
214           bits to 448 bits in length.  It's fast, simple and specifically
215           designed for use on "large microprocessors".
216           
217           See also:
218           <http://www.schneier.com/blowfish.html>
219
220 config CRYPTO_TWOFISH
221         tristate "Twofish cipher algorithm"
222         select CRYPTO_ALGAPI
223         select CRYPTO_TWOFISH_COMMON
224         help
225           Twofish cipher algorithm.
226           
227           Twofish was submitted as an AES (Advanced Encryption Standard)
228           candidate cipher by researchers at CounterPane Systems.  It is a
229           16 round block cipher supporting key sizes of 128, 192, and 256
230           bits.
231           
232           See also:
233           <http://www.schneier.com/twofish.html>
234
235 config CRYPTO_TWOFISH_COMMON
236         tristate
237         help
238           Common parts of the Twofish cipher algorithm shared by the
239           generic c and the assembler implementations.
240
241 config CRYPTO_TWOFISH_586
242         tristate "Twofish cipher algorithms (i586)"
243         depends on (X86 || UML_X86) && !64BIT
244         select CRYPTO_ALGAPI
245         select CRYPTO_TWOFISH_COMMON
246         help
247           Twofish cipher algorithm.
248
249           Twofish was submitted as an AES (Advanced Encryption Standard)
250           candidate cipher by researchers at CounterPane Systems.  It is a
251           16 round block cipher supporting key sizes of 128, 192, and 256
252           bits.
253
254           See also:
255           <http://www.schneier.com/twofish.html>
256
257 config CRYPTO_TWOFISH_X86_64
258         tristate "Twofish cipher algorithm (x86_64)"
259         depends on (X86 || UML_X86) && 64BIT
260         select CRYPTO_ALGAPI
261         select CRYPTO_TWOFISH_COMMON
262         help
263           Twofish cipher algorithm (x86_64).
264
265           Twofish was submitted as an AES (Advanced Encryption Standard)
266           candidate cipher by researchers at CounterPane Systems.  It is a
267           16 round block cipher supporting key sizes of 128, 192, and 256
268           bits.
269
270           See also:
271           <http://www.schneier.com/twofish.html>
272
273 config CRYPTO_SERPENT
274         tristate "Serpent cipher algorithm"
275         select CRYPTO_ALGAPI
276         help
277           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
278
279           Keys are allowed to be from 0 to 256 bits in length, in steps
280           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
281           variant of Serpent for compatibility with old kerneli code.
282
283           See also:
284           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
285
286 config CRYPTO_AES
287         tristate "AES cipher algorithms"
288         select CRYPTO_ALGAPI
289         help
290           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
291           algorithm.
292
293           Rijndael appears to be consistently a very good performer in
294           both hardware and software across a wide range of computing 
295           environments regardless of its use in feedback or non-feedback 
296           modes. Its key setup time is excellent, and its key agility is 
297           good. Rijndael's very low memory requirements make it very well 
298           suited for restricted-space environments, in which it also 
299           demonstrates excellent performance. Rijndael's operations are 
300           among the easiest to defend against power and timing attacks. 
301
302           The AES specifies three key sizes: 128, 192 and 256 bits        
303
304           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
305
306 config CRYPTO_AES_586
307         tristate "AES cipher algorithms (i586)"
308         depends on (X86 || UML_X86) && !64BIT
309         select CRYPTO_ALGAPI
310         help
311           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
312           algorithm.
313
314           Rijndael appears to be consistently a very good performer in
315           both hardware and software across a wide range of computing 
316           environments regardless of its use in feedback or non-feedback 
317           modes. Its key setup time is excellent, and its key agility is 
318           good. Rijndael's very low memory requirements make it very well 
319           suited for restricted-space environments, in which it also 
320           demonstrates excellent performance. Rijndael's operations are 
321           among the easiest to defend against power and timing attacks. 
322
323           The AES specifies three key sizes: 128, 192 and 256 bits        
324
325           See <http://csrc.nist.gov/encryption/aes/> for more information.
326
327 config CRYPTO_AES_X86_64
328         tristate "AES cipher algorithms (x86_64)"
329         depends on (X86 || UML_X86) && 64BIT
330         select CRYPTO_ALGAPI
331         help
332           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
333           algorithm.
334
335           Rijndael appears to be consistently a very good performer in
336           both hardware and software across a wide range of computing 
337           environments regardless of its use in feedback or non-feedback 
338           modes. Its key setup time is excellent, and its key agility is 
339           good. Rijndael's very low memory requirements make it very well 
340           suited for restricted-space environments, in which it also 
341           demonstrates excellent performance. Rijndael's operations are 
342           among the easiest to defend against power and timing attacks. 
343
344           The AES specifies three key sizes: 128, 192 and 256 bits        
345
346           See <http://csrc.nist.gov/encryption/aes/> for more information.
347
348 config CRYPTO_AES_S390
349         tristate "AES cipher algorithms (s390)"
350         depends on S390
351         select CRYPTO_ALGAPI
352         select CRYPTO_BLKCIPHER
353         help
354           This is the s390 hardware accelerated implementation of the
355           AES cipher algorithms (FIPS-197). AES uses the Rijndael
356           algorithm.
357
358           Rijndael appears to be consistently a very good performer in
359           both hardware and software across a wide range of computing
360           environments regardless of its use in feedback or non-feedback
361           modes. Its key setup time is excellent, and its key agility is
362           good. Rijndael's very low memory requirements make it very well
363           suited for restricted-space environments, in which it also
364           demonstrates excellent performance. Rijndael's operations are
365           among the easiest to defend against power and timing attacks.
366
367           On s390 the System z9-109 currently only supports the key size
368           of 128 bit.
369
370 config CRYPTO_CAST5
371         tristate "CAST5 (CAST-128) cipher algorithm"
372         select CRYPTO_ALGAPI
373         help
374           The CAST5 encryption algorithm (synonymous with CAST-128) is
375           described in RFC2144.
376
377 config CRYPTO_CAST6
378         tristate "CAST6 (CAST-256) cipher algorithm"
379         select CRYPTO_ALGAPI
380         help
381           The CAST6 encryption algorithm (synonymous with CAST-256) is
382           described in RFC2612.
383
384 config CRYPTO_TEA
385         tristate "TEA, XTEA and XETA cipher algorithms"
386         select CRYPTO_ALGAPI
387         help
388           TEA cipher algorithm.
389
390           Tiny Encryption Algorithm is a simple cipher that uses
391           many rounds for security.  It is very fast and uses
392           little memory.
393
394           Xtendend Tiny Encryption Algorithm is a modification to
395           the TEA algorithm to address a potential key weakness
396           in the TEA algorithm.
397
398           Xtendend Encryption Tiny Algorithm is a mis-implementation 
399           of the XTEA algorithm for compatibility purposes.
400
401 config CRYPTO_ARC4
402         tristate "ARC4 cipher algorithm"
403         select CRYPTO_ALGAPI
404         help
405           ARC4 cipher algorithm.
406
407           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
408           bits in length.  This algorithm is required for driver-based 
409           WEP, but it should not be for other purposes because of the
410           weakness of the algorithm.
411
412 config CRYPTO_KHAZAD
413         tristate "Khazad cipher algorithm"
414         select CRYPTO_ALGAPI
415         help
416           Khazad cipher algorithm.
417
418           Khazad was a finalist in the initial NESSIE competition.  It is
419           an algorithm optimized for 64-bit processors with good performance
420           on 32-bit processors.  Khazad uses an 128 bit key size.
421
422           See also:
423           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
424
425 config CRYPTO_ANUBIS
426         tristate "Anubis cipher algorithm"
427         select CRYPTO_ALGAPI
428         help
429           Anubis cipher algorithm.
430
431           Anubis is a variable key length cipher which can use keys from 
432           128 bits to 320 bits in length.  It was evaluated as a entrant
433           in the NESSIE competition.
434           
435           See also:
436           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
437           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
438
439
440 config CRYPTO_DEFLATE
441         tristate "Deflate compression algorithm"
442         select CRYPTO_ALGAPI
443         select ZLIB_INFLATE
444         select ZLIB_DEFLATE
445         help
446           This is the Deflate algorithm (RFC1951), specified for use in
447           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
448           
449           You will most probably want this if using IPSec.
450
451 config CRYPTO_MICHAEL_MIC
452         tristate "Michael MIC keyed digest algorithm"
453         select CRYPTO_ALGAPI
454         help
455           Michael MIC is used for message integrity protection in TKIP
456           (IEEE 802.11i). This algorithm is required for TKIP, but it
457           should not be used for other purposes because of the weakness
458           of the algorithm.
459
460 config CRYPTO_CRC32C
461         tristate "CRC32c CRC algorithm"
462         select CRYPTO_ALGAPI
463         select LIBCRC32C
464         help
465           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
466           by iSCSI for header and data digests and by others.
467           See Castagnoli93.  This implementation uses lib/libcrc32c.
468           Module will be crc32c.
469
470 config CRYPTO_TEST
471         tristate "Testing module"
472         depends on m
473         select CRYPTO_ALGAPI
474         help
475           Quick & dirty crypto test module.
476
477 source "drivers/crypto/Kconfig"
478
479 endif   # if CRYPTO
480
481 endmenu