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