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