[CRYPTO] seed: New cipher algorithm
[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_ABLKCIPHER
28         tristate
29         select CRYPTO_BLKCIPHER
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 "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 config CRYPTO_SHA512
99         tristate "SHA384 and SHA512 digest algorithms"
100         select CRYPTO_ALGAPI
101         help
102           SHA512 secure hash standard (DFIPS 180-2).
103           
104           This version of SHA implements a 512 bit hash with 256 bits of
105           security against collision attacks.
106
107           This code also includes SHA-384, a 384 bit hash with 192 bits
108           of security against collision attacks.
109
110 config CRYPTO_WP512
111         tristate "Whirlpool digest algorithms"
112         select CRYPTO_ALGAPI
113         help
114           Whirlpool hash algorithm 512, 384 and 256-bit hashes
115
116           Whirlpool-512 is part of the NESSIE cryptographic primitives.
117           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
118
119           See also:
120           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
121
122 config CRYPTO_TGR192
123         tristate "Tiger digest algorithms"
124         select CRYPTO_ALGAPI
125         help
126           Tiger hash algorithm 192, 160 and 128-bit hashes
127
128           Tiger is a hash function optimized for 64-bit processors while
129           still having decent performance on 32-bit processors.
130           Tiger was developed by Ross Anderson and Eli Biham.
131
132           See also:
133           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
134
135 config CRYPTO_GF128MUL
136         tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
137         depends on EXPERIMENTAL
138         help
139           Efficient table driven implementation of multiplications in the
140           field GF(2^128).  This is needed by some cypher modes. This
141           option will be selected automatically if you select such a
142           cipher mode.  Only select this option by hand if you expect to load
143           an external module that requires these functions.
144
145 config CRYPTO_ECB
146         tristate "ECB support"
147         select CRYPTO_BLKCIPHER
148         select CRYPTO_MANAGER
149         help
150           ECB: Electronic CodeBook mode
151           This is the simplest block cipher algorithm.  It simply encrypts
152           the input block by block.
153
154 config CRYPTO_CBC
155         tristate "CBC support"
156         select CRYPTO_BLKCIPHER
157         select CRYPTO_MANAGER
158         help
159           CBC: Cipher Block Chaining mode
160           This block cipher algorithm is required for IPSec.
161
162 config CRYPTO_PCBC
163         tristate "PCBC support"
164         select CRYPTO_BLKCIPHER
165         select CRYPTO_MANAGER
166         help
167           PCBC: Propagating Cipher Block Chaining mode
168           This block cipher algorithm is required for RxRPC.
169
170 config CRYPTO_LRW
171         tristate "LRW support (EXPERIMENTAL)"
172         depends on EXPERIMENTAL
173         select CRYPTO_BLKCIPHER
174         select CRYPTO_MANAGER
175         select CRYPTO_GF128MUL
176         help
177           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
178           narrow block cipher mode for dm-crypt.  Use it with cipher
179           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
180           The first 128, 192 or 256 bits in the key are used for AES and the
181           rest is used to tie each cipher block to its logical position.
182
183 config CRYPTO_CRYPTD
184         tristate "Software async crypto daemon"
185         select CRYPTO_ABLKCIPHER
186         select CRYPTO_MANAGER
187         help
188           This is a generic software asynchronous crypto daemon that
189           converts an arbitrary synchronous software crypto algorithm
190           into an asynchronous algorithm that executes in a kernel thread.
191
192 config CRYPTO_DES
193         tristate "DES and Triple DES EDE cipher algorithms"
194         select CRYPTO_ALGAPI
195         help
196           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
197
198 config CRYPTO_FCRYPT
199         tristate "FCrypt cipher algorithm"
200         select CRYPTO_ALGAPI
201         select CRYPTO_BLKCIPHER
202         help
203           FCrypt algorithm used by RxRPC.
204
205 config CRYPTO_BLOWFISH
206         tristate "Blowfish cipher algorithm"
207         select CRYPTO_ALGAPI
208         help
209           Blowfish cipher algorithm, by Bruce Schneier.
210           
211           This is a variable key length cipher which can use keys from 32
212           bits to 448 bits in length.  It's fast, simple and specifically
213           designed for use on "large microprocessors".
214           
215           See also:
216           <http://www.schneier.com/blowfish.html>
217
218 config CRYPTO_TWOFISH
219         tristate "Twofish cipher algorithm"
220         select CRYPTO_ALGAPI
221         select CRYPTO_TWOFISH_COMMON
222         help
223           Twofish cipher algorithm.
224           
225           Twofish was submitted as an AES (Advanced Encryption Standard)
226           candidate cipher by researchers at CounterPane Systems.  It is a
227           16 round block cipher supporting key sizes of 128, 192, and 256
228           bits.
229           
230           See also:
231           <http://www.schneier.com/twofish.html>
232
233 config CRYPTO_TWOFISH_COMMON
234         tristate
235         help
236           Common parts of the Twofish cipher algorithm shared by the
237           generic c and the assembler implementations.
238
239 config CRYPTO_TWOFISH_586
240         tristate "Twofish cipher algorithms (i586)"
241         depends on (X86 || UML_X86) && !64BIT
242         select CRYPTO_ALGAPI
243         select CRYPTO_TWOFISH_COMMON
244         help
245           Twofish cipher algorithm.
246
247           Twofish was submitted as an AES (Advanced Encryption Standard)
248           candidate cipher by researchers at CounterPane Systems.  It is a
249           16 round block cipher supporting key sizes of 128, 192, and 256
250           bits.
251
252           See also:
253           <http://www.schneier.com/twofish.html>
254
255 config CRYPTO_TWOFISH_X86_64
256         tristate "Twofish cipher algorithm (x86_64)"
257         depends on (X86 || UML_X86) && 64BIT
258         select CRYPTO_ALGAPI
259         select CRYPTO_TWOFISH_COMMON
260         help
261           Twofish cipher algorithm (x86_64).
262
263           Twofish was submitted as an AES (Advanced Encryption Standard)
264           candidate cipher by researchers at CounterPane Systems.  It is a
265           16 round block cipher supporting key sizes of 128, 192, and 256
266           bits.
267
268           See also:
269           <http://www.schneier.com/twofish.html>
270
271 config CRYPTO_SERPENT
272         tristate "Serpent cipher algorithm"
273         select CRYPTO_ALGAPI
274         help
275           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
276
277           Keys are allowed to be from 0 to 256 bits in length, in steps
278           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
279           variant of Serpent for compatibility with old kerneli.org code.
280
281           See also:
282           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
283
284 config CRYPTO_AES
285         tristate "AES cipher algorithms"
286         select CRYPTO_ALGAPI
287         help
288           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
289           algorithm.
290
291           Rijndael appears to be consistently a very good performer in
292           both hardware and software across a wide range of computing 
293           environments regardless of its use in feedback or non-feedback 
294           modes. Its key setup time is excellent, and its key agility is 
295           good. Rijndael's very low memory requirements make it very well 
296           suited for restricted-space environments, in which it also 
297           demonstrates excellent performance. Rijndael's operations are 
298           among the easiest to defend against power and timing attacks. 
299
300           The AES specifies three key sizes: 128, 192 and 256 bits        
301
302           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
303
304 config CRYPTO_AES_586
305         tristate "AES cipher algorithms (i586)"
306         depends on (X86 || UML_X86) && !64BIT
307         select CRYPTO_ALGAPI
308         help
309           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
310           algorithm.
311
312           Rijndael appears to be consistently a very good performer in
313           both hardware and software across a wide range of computing 
314           environments regardless of its use in feedback or non-feedback 
315           modes. Its key setup time is excellent, and its key agility is 
316           good. Rijndael's very low memory requirements make it very well 
317           suited for restricted-space environments, in which it also 
318           demonstrates excellent performance. Rijndael's operations are 
319           among the easiest to defend against power and timing attacks. 
320
321           The AES specifies three key sizes: 128, 192 and 256 bits        
322
323           See <http://csrc.nist.gov/encryption/aes/> for more information.
324
325 config CRYPTO_AES_X86_64
326         tristate "AES cipher algorithms (x86_64)"
327         depends on (X86 || UML_X86) && 64BIT
328         select CRYPTO_ALGAPI
329         help
330           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
331           algorithm.
332
333           Rijndael appears to be consistently a very good performer in
334           both hardware and software across a wide range of computing 
335           environments regardless of its use in feedback or non-feedback 
336           modes. Its key setup time is excellent, and its key agility is 
337           good. Rijndael's very low memory requirements make it very well 
338           suited for restricted-space environments, in which it also 
339           demonstrates excellent performance. Rijndael's operations are 
340           among the easiest to defend against power and timing attacks. 
341
342           The AES specifies three key sizes: 128, 192 and 256 bits        
343
344           See <http://csrc.nist.gov/encryption/aes/> for more information.
345
346 config CRYPTO_CAST5
347         tristate "CAST5 (CAST-128) cipher algorithm"
348         select CRYPTO_ALGAPI
349         help
350           The CAST5 encryption algorithm (synonymous with CAST-128) is
351           described in RFC2144.
352
353 config CRYPTO_CAST6
354         tristate "CAST6 (CAST-256) cipher algorithm"
355         select CRYPTO_ALGAPI
356         help
357           The CAST6 encryption algorithm (synonymous with CAST-256) is
358           described in RFC2612.
359
360 config CRYPTO_TEA
361         tristate "TEA, XTEA and XETA cipher algorithms"
362         select CRYPTO_ALGAPI
363         help
364           TEA cipher algorithm.
365
366           Tiny Encryption Algorithm is a simple cipher that uses
367           many rounds for security.  It is very fast and uses
368           little memory.
369
370           Xtendend Tiny Encryption Algorithm is a modification to
371           the TEA algorithm to address a potential key weakness
372           in the TEA algorithm.
373
374           Xtendend Encryption Tiny Algorithm is a mis-implementation 
375           of the XTEA algorithm for compatibility purposes.
376
377 config CRYPTO_ARC4
378         tristate "ARC4 cipher algorithm"
379         select CRYPTO_ALGAPI
380         help
381           ARC4 cipher algorithm.
382
383           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
384           bits in length.  This algorithm is required for driver-based 
385           WEP, but it should not be for other purposes because of the
386           weakness of the algorithm.
387
388 config CRYPTO_KHAZAD
389         tristate "Khazad cipher algorithm"
390         select CRYPTO_ALGAPI
391         help
392           Khazad cipher algorithm.
393
394           Khazad was a finalist in the initial NESSIE competition.  It is
395           an algorithm optimized for 64-bit processors with good performance
396           on 32-bit processors.  Khazad uses an 128 bit key size.
397
398           See also:
399           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
400
401 config CRYPTO_ANUBIS
402         tristate "Anubis cipher algorithm"
403         select CRYPTO_ALGAPI
404         help
405           Anubis cipher algorithm.
406
407           Anubis is a variable key length cipher which can use keys from 
408           128 bits to 320 bits in length.  It was evaluated as a entrant
409           in the NESSIE competition.
410           
411           See also:
412           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
413           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
414
415 config CRYPTO_SEED
416         tristate "SEED cipher algorithm"
417         select CRYPTO_ALGAPI
418         help
419           SEED cipher algorithm (RFC4269).
420
421           SEED is a 128-bit symmetric key block cipher that has been
422           developed by KISA (Korea Information Security Agency) as a
423           national standard encryption algorithm of the Republic of Korea.
424           It is a 16 round block cipher with the key size of 128 bit.
425
426           See also:
427           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
428
429
430 config CRYPTO_DEFLATE
431         tristate "Deflate compression algorithm"
432         select CRYPTO_ALGAPI
433         select ZLIB_INFLATE
434         select ZLIB_DEFLATE
435         help
436           This is the Deflate algorithm (RFC1951), specified for use in
437           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
438           
439           You will most probably want this if using IPSec.
440
441 config CRYPTO_MICHAEL_MIC
442         tristate "Michael MIC keyed digest algorithm"
443         select CRYPTO_ALGAPI
444         help
445           Michael MIC is used for message integrity protection in TKIP
446           (IEEE 802.11i). This algorithm is required for TKIP, but it
447           should not be used for other purposes because of the weakness
448           of the algorithm.
449
450 config CRYPTO_CRC32C
451         tristate "CRC32c CRC algorithm"
452         select CRYPTO_ALGAPI
453         select LIBCRC32C
454         help
455           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
456           by iSCSI for header and data digests and by others.
457           See Castagnoli93.  This implementation uses lib/libcrc32c.
458           Module will be crc32c.
459
460 config CRYPTO_CAMELLIA
461         tristate "Camellia cipher algorithms"
462         depends on CRYPTO
463         select CRYPTO_ALGAPI
464         help
465           Camellia cipher algorithms module.
466
467           Camellia is a symmetric key block cipher developed jointly
468           at NTT and Mitsubishi Electric Corporation.
469
470           The Camellia specifies three key sizes: 128, 192 and 256 bits.
471
472           See also:
473           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
474
475 config CRYPTO_TEST
476         tristate "Testing module"
477         depends on m
478         select CRYPTO_ALGAPI
479         help
480           Quick & dirty crypto test module.
481
482 source "drivers/crypto/Kconfig"
483
484 endif   # if CRYPTO