[CRYPTO] seqiv: Add Sequence Number IV Generator
[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_AEAD
28         tristate
29         select CRYPTO_ALGAPI
30
31 config CRYPTO_BLKCIPHER
32         tristate
33         select CRYPTO_ALGAPI
34
35 config CRYPTO_SEQIV
36         tristate "Sequence Number IV Generator"
37         select CRYPTO_BLKCIPHER
38         help
39           This IV generator generates an IV based on a sequence number by
40           xoring it with a salt.  This algorithm is mainly useful for CTR
41           and similar modes.
42
43 config CRYPTO_HASH
44         tristate
45         select CRYPTO_ALGAPI
46
47 config CRYPTO_MANAGER
48         tristate "Cryptographic algorithm manager"
49         select CRYPTO_ALGAPI
50         help
51           Create default cryptographic template instantiations such as
52           cbc(aes).
53
54 config CRYPTO_HMAC
55         tristate "HMAC support"
56         select CRYPTO_HASH
57         select CRYPTO_MANAGER
58         help
59           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
60           This is required for IPSec.
61
62 config CRYPTO_XCBC
63         tristate "XCBC support"
64         depends on EXPERIMENTAL
65         select CRYPTO_HASH
66         select CRYPTO_MANAGER
67         help
68           XCBC: Keyed-Hashing with encryption algorithm
69                 http://www.ietf.org/rfc/rfc3566.txt
70                 http://csrc.nist.gov/encryption/modes/proposedmodes/
71                  xcbc-mac/xcbc-mac-spec.pdf
72
73 config CRYPTO_NULL
74         tristate "Null algorithms"
75         select CRYPTO_ALGAPI
76         help
77           These are 'Null' algorithms, used by IPsec, which do nothing.
78
79 config CRYPTO_MD4
80         tristate "MD4 digest algorithm"
81         select CRYPTO_ALGAPI
82         help
83           MD4 message digest algorithm (RFC1320).
84
85 config CRYPTO_MD5
86         tristate "MD5 digest algorithm"
87         select CRYPTO_ALGAPI
88         help
89           MD5 message digest algorithm (RFC1321).
90
91 config CRYPTO_SHA1
92         tristate "SHA1 digest algorithm"
93         select CRYPTO_ALGAPI
94         help
95           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
96
97 config CRYPTO_SHA256
98         tristate "SHA224 and SHA256 digest algorithm"
99         select CRYPTO_ALGAPI
100         help
101           SHA256 secure hash standard (DFIPS 180-2).
102           
103           This version of SHA implements a 256 bit hash with 128 bits of
104           security against collision attacks.
105
106           This code also includes SHA-224, a 224 bit hash with 112 bits
107           of security against collision attacks.
108
109 config CRYPTO_SHA512
110         tristate "SHA384 and SHA512 digest algorithms"
111         select CRYPTO_ALGAPI
112         help
113           SHA512 secure hash standard (DFIPS 180-2).
114           
115           This version of SHA implements a 512 bit hash with 256 bits of
116           security against collision attacks.
117
118           This code also includes SHA-384, a 384 bit hash with 192 bits
119           of security against collision attacks.
120
121 config CRYPTO_WP512
122         tristate "Whirlpool digest algorithms"
123         select CRYPTO_ALGAPI
124         help
125           Whirlpool hash algorithm 512, 384 and 256-bit hashes
126
127           Whirlpool-512 is part of the NESSIE cryptographic primitives.
128           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
129
130           See also:
131           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
132
133 config CRYPTO_TGR192
134         tristate "Tiger digest algorithms"
135         select CRYPTO_ALGAPI
136         help
137           Tiger hash algorithm 192, 160 and 128-bit hashes
138
139           Tiger is a hash function optimized for 64-bit processors while
140           still having decent performance on 32-bit processors.
141           Tiger was developed by Ross Anderson and Eli Biham.
142
143           See also:
144           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
145
146 config CRYPTO_GF128MUL
147         tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
148         depends on EXPERIMENTAL
149         help
150           Efficient table driven implementation of multiplications in the
151           field GF(2^128).  This is needed by some cypher modes. This
152           option will be selected automatically if you select such a
153           cipher mode.  Only select this option by hand if you expect to load
154           an external module that requires these functions.
155
156 config CRYPTO_ECB
157         tristate "ECB support"
158         select CRYPTO_BLKCIPHER
159         select CRYPTO_MANAGER
160         help
161           ECB: Electronic CodeBook mode
162           This is the simplest block cipher algorithm.  It simply encrypts
163           the input block by block.
164
165 config CRYPTO_CBC
166         tristate "CBC support"
167         select CRYPTO_BLKCIPHER
168         select CRYPTO_MANAGER
169         help
170           CBC: Cipher Block Chaining mode
171           This block cipher algorithm is required for IPSec.
172
173 config CRYPTO_PCBC
174         tristate "PCBC support"
175         select CRYPTO_BLKCIPHER
176         select CRYPTO_MANAGER
177         help
178           PCBC: Propagating Cipher Block Chaining mode
179           This block cipher algorithm is required for RxRPC.
180
181 config CRYPTO_LRW
182         tristate "LRW support (EXPERIMENTAL)"
183         depends on EXPERIMENTAL
184         select CRYPTO_BLKCIPHER
185         select CRYPTO_MANAGER
186         select CRYPTO_GF128MUL
187         help
188           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
189           narrow block cipher mode for dm-crypt.  Use it with cipher
190           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
191           The first 128, 192 or 256 bits in the key are used for AES and the
192           rest is used to tie each cipher block to its logical position.
193
194 config CRYPTO_XTS
195         tristate "XTS support (EXPERIMENTAL)"
196         depends on EXPERIMENTAL
197         select CRYPTO_BLKCIPHER
198         select CRYPTO_MANAGER
199         select CRYPTO_GF128MUL
200         help
201           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
202           key size 256, 384 or 512 bits. This implementation currently
203           can't handle a sectorsize which is not a multiple of 16 bytes.
204
205 config CRYPTO_CTR
206         tristate "CTR support"
207         select CRYPTO_BLKCIPHER
208         select CRYPTO_SEQIV
209         select CRYPTO_MANAGER
210         help
211           CTR: Counter mode
212           This block cipher algorithm is required for IPSec.
213
214 config CRYPTO_GCM
215         tristate "GCM/GMAC support"
216         select CRYPTO_CTR
217         select CRYPTO_AEAD
218         select CRYPTO_GF128MUL
219         help
220           Support for Galois/Counter Mode (GCM) and Galois Message
221           Authentication Code (GMAC). Required for IPSec.
222
223 config CRYPTO_CRYPTD
224         tristate "Software async crypto daemon"
225         select CRYPTO_BLKCIPHER
226         select CRYPTO_MANAGER
227         help
228           This is a generic software asynchronous crypto daemon that
229           converts an arbitrary synchronous software crypto algorithm
230           into an asynchronous algorithm that executes in a kernel thread.
231
232 config CRYPTO_DES
233         tristate "DES and Triple DES EDE cipher algorithms"
234         select CRYPTO_ALGAPI
235         help
236           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
237
238 config CRYPTO_FCRYPT
239         tristate "FCrypt cipher algorithm"
240         select CRYPTO_ALGAPI
241         select CRYPTO_BLKCIPHER
242         help
243           FCrypt algorithm used by RxRPC.
244
245 config CRYPTO_BLOWFISH
246         tristate "Blowfish cipher algorithm"
247         select CRYPTO_ALGAPI
248         help
249           Blowfish cipher algorithm, by Bruce Schneier.
250           
251           This is a variable key length cipher which can use keys from 32
252           bits to 448 bits in length.  It's fast, simple and specifically
253           designed for use on "large microprocessors".
254           
255           See also:
256           <http://www.schneier.com/blowfish.html>
257
258 config CRYPTO_TWOFISH
259         tristate "Twofish cipher algorithm"
260         select CRYPTO_ALGAPI
261         select CRYPTO_TWOFISH_COMMON
262         help
263           Twofish cipher algorithm.
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_TWOFISH_COMMON
274         tristate
275         help
276           Common parts of the Twofish cipher algorithm shared by the
277           generic c and the assembler implementations.
278
279 config CRYPTO_TWOFISH_586
280         tristate "Twofish cipher algorithms (i586)"
281         depends on (X86 || UML_X86) && !64BIT
282         select CRYPTO_ALGAPI
283         select CRYPTO_TWOFISH_COMMON
284         help
285           Twofish cipher algorithm.
286
287           Twofish was submitted as an AES (Advanced Encryption Standard)
288           candidate cipher by researchers at CounterPane Systems.  It is a
289           16 round block cipher supporting key sizes of 128, 192, and 256
290           bits.
291
292           See also:
293           <http://www.schneier.com/twofish.html>
294
295 config CRYPTO_TWOFISH_X86_64
296         tristate "Twofish cipher algorithm (x86_64)"
297         depends on (X86 || UML_X86) && 64BIT
298         select CRYPTO_ALGAPI
299         select CRYPTO_TWOFISH_COMMON
300         help
301           Twofish cipher algorithm (x86_64).
302
303           Twofish was submitted as an AES (Advanced Encryption Standard)
304           candidate cipher by researchers at CounterPane Systems.  It is a
305           16 round block cipher supporting key sizes of 128, 192, and 256
306           bits.
307
308           See also:
309           <http://www.schneier.com/twofish.html>
310
311 config CRYPTO_SERPENT
312         tristate "Serpent cipher algorithm"
313         select CRYPTO_ALGAPI
314         help
315           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
316
317           Keys are allowed to be from 0 to 256 bits in length, in steps
318           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
319           variant of Serpent for compatibility with old kerneli.org code.
320
321           See also:
322           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
323
324 config CRYPTO_AES
325         tristate "AES cipher algorithms"
326         select CRYPTO_ALGAPI
327         help
328           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
329           algorithm.
330
331           Rijndael appears to be consistently a very good performer in
332           both hardware and software across a wide range of computing 
333           environments regardless of its use in feedback or non-feedback 
334           modes. Its key setup time is excellent, and its key agility is 
335           good. Rijndael's very low memory requirements make it very well 
336           suited for restricted-space environments, in which it also 
337           demonstrates excellent performance. Rijndael's operations are 
338           among the easiest to defend against power and timing attacks. 
339
340           The AES specifies three key sizes: 128, 192 and 256 bits        
341
342           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
343
344 config CRYPTO_AES_586
345         tristate "AES cipher algorithms (i586)"
346         depends on (X86 || UML_X86) && !64BIT
347         select CRYPTO_ALGAPI
348         select CRYPTO_AES
349         help
350           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
351           algorithm.
352
353           Rijndael appears to be consistently a very good performer in
354           both hardware and software across a wide range of computing 
355           environments regardless of its use in feedback or non-feedback 
356           modes. Its key setup time is excellent, and its key agility is 
357           good. Rijndael's very low memory requirements make it very well 
358           suited for restricted-space environments, in which it also 
359           demonstrates excellent performance. Rijndael's operations are 
360           among the easiest to defend against power and timing attacks. 
361
362           The AES specifies three key sizes: 128, 192 and 256 bits        
363
364           See <http://csrc.nist.gov/encryption/aes/> for more information.
365
366 config CRYPTO_AES_X86_64
367         tristate "AES cipher algorithms (x86_64)"
368         depends on (X86 || UML_X86) && 64BIT
369         select CRYPTO_ALGAPI
370         select CRYPTO_AES
371         help
372           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
373           algorithm.
374
375           Rijndael appears to be consistently a very good performer in
376           both hardware and software across a wide range of computing 
377           environments regardless of its use in feedback or non-feedback 
378           modes. Its key setup time is excellent, and its key agility is 
379           good. Rijndael's very low memory requirements make it very well 
380           suited for restricted-space environments, in which it also 
381           demonstrates excellent performance. Rijndael's operations are 
382           among the easiest to defend against power and timing attacks. 
383
384           The AES specifies three key sizes: 128, 192 and 256 bits        
385
386           See <http://csrc.nist.gov/encryption/aes/> for more information.
387
388 config CRYPTO_CAST5
389         tristate "CAST5 (CAST-128) cipher algorithm"
390         select CRYPTO_ALGAPI
391         help
392           The CAST5 encryption algorithm (synonymous with CAST-128) is
393           described in RFC2144.
394
395 config CRYPTO_CAST6
396         tristate "CAST6 (CAST-256) cipher algorithm"
397         select CRYPTO_ALGAPI
398         help
399           The CAST6 encryption algorithm (synonymous with CAST-256) is
400           described in RFC2612.
401
402 config CRYPTO_TEA
403         tristate "TEA, XTEA and XETA cipher algorithms"
404         select CRYPTO_ALGAPI
405         help
406           TEA cipher algorithm.
407
408           Tiny Encryption Algorithm is a simple cipher that uses
409           many rounds for security.  It is very fast and uses
410           little memory.
411
412           Xtendend Tiny Encryption Algorithm is a modification to
413           the TEA algorithm to address a potential key weakness
414           in the TEA algorithm.
415
416           Xtendend Encryption Tiny Algorithm is a mis-implementation 
417           of the XTEA algorithm for compatibility purposes.
418
419 config CRYPTO_ARC4
420         tristate "ARC4 cipher algorithm"
421         select CRYPTO_ALGAPI
422         help
423           ARC4 cipher algorithm.
424
425           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
426           bits in length.  This algorithm is required for driver-based 
427           WEP, but it should not be for other purposes because of the
428           weakness of the algorithm.
429
430 config CRYPTO_KHAZAD
431         tristate "Khazad cipher algorithm"
432         select CRYPTO_ALGAPI
433         help
434           Khazad cipher algorithm.
435
436           Khazad was a finalist in the initial NESSIE competition.  It is
437           an algorithm optimized for 64-bit processors with good performance
438           on 32-bit processors.  Khazad uses an 128 bit key size.
439
440           See also:
441           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
442
443 config CRYPTO_ANUBIS
444         tristate "Anubis cipher algorithm"
445         select CRYPTO_ALGAPI
446         help
447           Anubis cipher algorithm.
448
449           Anubis is a variable key length cipher which can use keys from 
450           128 bits to 320 bits in length.  It was evaluated as a entrant
451           in the NESSIE competition.
452           
453           See also:
454           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
455           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
456
457 config CRYPTO_SEED
458         tristate "SEED cipher algorithm"
459         select CRYPTO_ALGAPI
460         help
461           SEED cipher algorithm (RFC4269).
462
463           SEED is a 128-bit symmetric key block cipher that has been
464           developed by KISA (Korea Information Security Agency) as a
465           national standard encryption algorithm of the Republic of Korea.
466           It is a 16 round block cipher with the key size of 128 bit.
467
468           See also:
469           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
470
471 config CRYPTO_SALSA20
472         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
473         depends on EXPERIMENTAL
474         select CRYPTO_BLKCIPHER
475         help
476           Salsa20 stream cipher algorithm.
477
478           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
479           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
480
481           The Salsa20 stream cipher algorithm is designed by Daniel J.
482           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
483
484 config CRYPTO_DEFLATE
485         tristate "Deflate compression algorithm"
486         select CRYPTO_ALGAPI
487         select ZLIB_INFLATE
488         select ZLIB_DEFLATE
489         help
490           This is the Deflate algorithm (RFC1951), specified for use in
491           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
492           
493           You will most probably want this if using IPSec.
494
495 config CRYPTO_MICHAEL_MIC
496         tristate "Michael MIC keyed digest algorithm"
497         select CRYPTO_ALGAPI
498         help
499           Michael MIC is used for message integrity protection in TKIP
500           (IEEE 802.11i). This algorithm is required for TKIP, but it
501           should not be used for other purposes because of the weakness
502           of the algorithm.
503
504 config CRYPTO_CRC32C
505         tristate "CRC32c CRC algorithm"
506         select CRYPTO_ALGAPI
507         select LIBCRC32C
508         help
509           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
510           by iSCSI for header and data digests and by others.
511           See Castagnoli93.  This implementation uses lib/libcrc32c.
512           Module will be crc32c.
513
514 config CRYPTO_CAMELLIA
515         tristate "Camellia cipher algorithms"
516         depends on CRYPTO
517         select CRYPTO_ALGAPI
518         help
519           Camellia cipher algorithms module.
520
521           Camellia is a symmetric key block cipher developed jointly
522           at NTT and Mitsubishi Electric Corporation.
523
524           The Camellia specifies three key sizes: 128, 192 and 256 bits.
525
526           See also:
527           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
528
529 config CRYPTO_TEST
530         tristate "Testing module"
531         depends on m
532         select CRYPTO_ALGAPI
533         help
534           Quick & dirty crypto test module.
535
536 config CRYPTO_AUTHENC
537         tristate "Authenc support"
538         select CRYPTO_AEAD
539         select CRYPTO_MANAGER
540         select CRYPTO_HASH
541         help
542           Authenc: Combined mode wrapper for IPsec.
543           This is required for IPSec.
544
545 config CRYPTO_LZO
546         tristate "LZO compression algorithm"
547         select CRYPTO_ALGAPI
548         select LZO_COMPRESS
549         select LZO_DECOMPRESS
550         help
551           This is the LZO algorithm.
552
553 source "drivers/crypto/Kconfig"
554
555 endif   # if CRYPTO