[HIFN]: Fix data alignment checks
[linux-2.6/mini2440.git] / crypto / Kconfig
blobcfc521a0d55d59f46c7a2bba0b9073ce4bc3c792
2 # Generic algorithms support
4 config XOR_BLOCKS
5         tristate
8 # async_tx api: hardware offloaded memory transfer/transform support
10 source "crypto/async_tx/Kconfig"
13 # Cryptographic API Configuration
15 menuconfig CRYPTO
16         tristate "Cryptographic API"
17         help
18           This option provides the core Cryptographic API.
20 if CRYPTO
22 comment "Crypto core or helper"
24 config CRYPTO_ALGAPI
25         tristate
26         help
27           This option provides the API for cryptographic algorithms.
29 config CRYPTO_AEAD
30         tristate
31         select CRYPTO_ALGAPI
33 config CRYPTO_BLKCIPHER
34         tristate
35         select CRYPTO_ALGAPI
37 config CRYPTO_HASH
38         tristate
39         select CRYPTO_ALGAPI
41 config CRYPTO_MANAGER
42         tristate "Cryptographic algorithm manager"
43         select CRYPTO_ALGAPI
44         help
45           Create default cryptographic template instantiations such as
46           cbc(aes).
48 config CRYPTO_GF128MUL
49         tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
50         depends on EXPERIMENTAL
51         help
52           Efficient table driven implementation of multiplications in the
53           field GF(2^128).  This is needed by some cypher modes. This
54           option will be selected automatically if you select such a
55           cipher mode.  Only select this option by hand if you expect to load
56           an external module that requires these functions.
58 config CRYPTO_NULL
59         tristate "Null algorithms"
60         select CRYPTO_ALGAPI
61         select CRYPTO_BLKCIPHER
62         help
63           These are 'Null' algorithms, used by IPsec, which do nothing.
65 config CRYPTO_CRYPTD
66         tristate "Software async crypto daemon"
67         select CRYPTO_BLKCIPHER
68         select CRYPTO_MANAGER
69         help
70           This is a generic software asynchronous crypto daemon that
71           converts an arbitrary synchronous software crypto algorithm
72           into an asynchronous algorithm that executes in a kernel thread.
74 config CRYPTO_AUTHENC
75         tristate "Authenc support"
76         select CRYPTO_AEAD
77         select CRYPTO_BLKCIPHER
78         select CRYPTO_MANAGER
79         select CRYPTO_HASH
80         help
81           Authenc: Combined mode wrapper for IPsec.
82           This is required for IPSec.
84 config CRYPTO_TEST
85         tristate "Testing module"
86         depends on m
87         select CRYPTO_ALGAPI
88         select CRYPTO_AEAD
89         select CRYPTO_BLKCIPHER
90         help
91           Quick & dirty crypto test module.
93 comment "Authenticated Encryption with Associated Data"
95 config CRYPTO_CCM
96         tristate "CCM support"
97         select CRYPTO_CTR
98         select CRYPTO_AEAD
99         help
100           Support for Counter with CBC MAC. Required for IPsec.
102 config CRYPTO_GCM
103         tristate "GCM/GMAC support"
104         select CRYPTO_CTR
105         select CRYPTO_AEAD
106         select CRYPTO_GF128MUL
107         help
108           Support for Galois/Counter Mode (GCM) and Galois Message
109           Authentication Code (GMAC). Required for IPSec.
111 config CRYPTO_SEQIV
112         tristate "Sequence Number IV Generator"
113         select CRYPTO_AEAD
114         select CRYPTO_BLKCIPHER
115         help
116           This IV generator generates an IV based on a sequence number by
117           xoring it with a salt.  This algorithm is mainly useful for CTR
119 comment "Block modes"
121 config CRYPTO_CBC
122         tristate "CBC support"
123         select CRYPTO_BLKCIPHER
124         select CRYPTO_MANAGER
125         help
126           CBC: Cipher Block Chaining mode
127           This block cipher algorithm is required for IPSec.
129 config CRYPTO_CTR
130         tristate "CTR support"
131         select CRYPTO_BLKCIPHER
132         select CRYPTO_SEQIV
133         select CRYPTO_MANAGER
134         help
135           CTR: Counter mode
136           This block cipher algorithm is required for IPSec.
138 config CRYPTO_CTS
139         tristate "CTS support"
140         select CRYPTO_BLKCIPHER
141         help
142           CTS: Cipher Text Stealing
143           This is the Cipher Text Stealing mode as described by
144           Section 8 of rfc2040 and referenced by rfc3962.
145           (rfc3962 includes errata information in its Appendix A)
146           This mode is required for Kerberos gss mechanism support
147           for AES encryption.
149 config CRYPTO_ECB
150         tristate "ECB support"
151         select CRYPTO_BLKCIPHER
152         select CRYPTO_MANAGER
153         help
154           ECB: Electronic CodeBook mode
155           This is the simplest block cipher algorithm.  It simply encrypts
156           the input block by block.
158 config CRYPTO_LRW
159         tristate "LRW support (EXPERIMENTAL)"
160         depends on EXPERIMENTAL
161         select CRYPTO_BLKCIPHER
162         select CRYPTO_MANAGER
163         select CRYPTO_GF128MUL
164         help
165           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
166           narrow block cipher mode for dm-crypt.  Use it with cipher
167           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
168           The first 128, 192 or 256 bits in the key are used for AES and the
169           rest is used to tie each cipher block to its logical position.
171 config CRYPTO_PCBC
172         tristate "PCBC support"
173         select CRYPTO_BLKCIPHER
174         select CRYPTO_MANAGER
175         help
176           PCBC: Propagating Cipher Block Chaining mode
177           This block cipher algorithm is required for RxRPC.
179 config CRYPTO_XTS
180         tristate "XTS support (EXPERIMENTAL)"
181         depends on EXPERIMENTAL
182         select CRYPTO_BLKCIPHER
183         select CRYPTO_MANAGER
184         select CRYPTO_GF128MUL
185         help
186           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
187           key size 256, 384 or 512 bits. This implementation currently
188           can't handle a sectorsize which is not a multiple of 16 bytes.
190 comment "Hash modes"
192 config CRYPTO_HMAC
193         tristate "HMAC support"
194         select CRYPTO_HASH
195         select CRYPTO_MANAGER
196         help
197           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
198           This is required for IPSec.
200 config CRYPTO_XCBC
201         tristate "XCBC support"
202         depends on EXPERIMENTAL
203         select CRYPTO_HASH
204         select CRYPTO_MANAGER
205         help
206           XCBC: Keyed-Hashing with encryption algorithm
207                 http://www.ietf.org/rfc/rfc3566.txt
208                 http://csrc.nist.gov/encryption/modes/proposedmodes/
209                  xcbc-mac/xcbc-mac-spec.pdf
211 comment "Digest"
213 config CRYPTO_CRC32C
214         tristate "CRC32c CRC algorithm"
215         select CRYPTO_ALGAPI
216         select LIBCRC32C
217         help
218           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
219           by iSCSI for header and data digests and by others.
220           See Castagnoli93.  This implementation uses lib/libcrc32c.
221           Module will be crc32c.
223 config CRYPTO_MD4
224         tristate "MD4 digest algorithm"
225         select CRYPTO_ALGAPI
226         help
227           MD4 message digest algorithm (RFC1320).
229 config CRYPTO_MD5
230         tristate "MD5 digest algorithm"
231         select CRYPTO_ALGAPI
232         help
233           MD5 message digest algorithm (RFC1321).
235 config CRYPTO_MICHAEL_MIC
236         tristate "Michael MIC keyed digest algorithm"
237         select CRYPTO_ALGAPI
238         help
239           Michael MIC is used for message integrity protection in TKIP
240           (IEEE 802.11i). This algorithm is required for TKIP, but it
241           should not be used for other purposes because of the weakness
242           of the algorithm.
244 config CRYPTO_RMD128
245   tristate "RIPEMD-128 digest algorithm"
246   select CRYPTO_ALGAPI
247   help
248     RIPEMD-128 (ISO/IEC 10118-3:2004).
250     RIPEMD-128 is a 128-bit cryptographic hash function. It should only
251     to be used as a secure replacement for RIPEMD. For other use cases
252     RIPEMD-160 should be used.
254     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
255     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
257 config CRYPTO_RMD160
258   tristate "RIPEMD-160 digest algorithm"
259   select CRYPTO_ALGAPI
260   help
261     RIPEMD-160 (ISO/IEC 10118-3:2004).
263     RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
264     to be used as a secure replacement for the 128-bit hash functions
265     MD4, MD5 and it's predecessor RIPEMD (not to be confused with RIPEMD-128).
267     Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
268     See <http://home.esat.kuleuven.be/~bosselae/ripemd160.html>
270 config CRYPTO_SHA1
271         tristate "SHA1 digest algorithm"
272         select CRYPTO_ALGAPI
273         help
274           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
276 config CRYPTO_SHA256
277         tristate "SHA224 and SHA256 digest algorithm"
278         select CRYPTO_ALGAPI
279         help
280           SHA256 secure hash standard (DFIPS 180-2).
282           This version of SHA implements a 256 bit hash with 128 bits of
283           security against collision attacks.
285           This code also includes SHA-224, a 224 bit hash with 112 bits
286           of security against collision attacks.
288 config CRYPTO_SHA512
289         tristate "SHA384 and SHA512 digest algorithms"
290         select CRYPTO_ALGAPI
291         help
292           SHA512 secure hash standard (DFIPS 180-2).
294           This version of SHA implements a 512 bit hash with 256 bits of
295           security against collision attacks.
297           This code also includes SHA-384, a 384 bit hash with 192 bits
298           of security against collision attacks.
300 config CRYPTO_TGR192
301         tristate "Tiger digest algorithms"
302         select CRYPTO_ALGAPI
303         help
304           Tiger hash algorithm 192, 160 and 128-bit hashes
306           Tiger is a hash function optimized for 64-bit processors while
307           still having decent performance on 32-bit processors.
308           Tiger was developed by Ross Anderson and Eli Biham.
310           See also:
311           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
313 config CRYPTO_WP512
314         tristate "Whirlpool digest algorithms"
315         select CRYPTO_ALGAPI
316         help
317           Whirlpool hash algorithm 512, 384 and 256-bit hashes
319           Whirlpool-512 is part of the NESSIE cryptographic primitives.
320           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
322           See also:
323           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
325 comment "Ciphers"
327 config CRYPTO_AES
328         tristate "AES cipher algorithms"
329         select CRYPTO_ALGAPI
330         help
331           AES cipher algorithms (FIPS-197). AES uses the Rijndael
332           algorithm.
334           Rijndael appears to be consistently a very good performer in
335           both hardware and software across a wide range of computing
336           environments regardless of its use in feedback or non-feedback
337           modes. Its key setup time is excellent, and its key agility is
338           good. Rijndael's very low memory requirements make it very well
339           suited for restricted-space environments, in which it also
340           demonstrates excellent performance. Rijndael's operations are
341           among the easiest to defend against power and timing attacks.
343           The AES specifies three key sizes: 128, 192 and 256 bits
345           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
347 config CRYPTO_AES_586
348         tristate "AES cipher algorithms (i586)"
349         depends on (X86 || UML_X86) && !64BIT
350         select CRYPTO_ALGAPI
351         select CRYPTO_AES
352         help
353           AES cipher algorithms (FIPS-197). AES uses the Rijndael
354           algorithm.
356           Rijndael appears to be consistently a very good performer in
357           both hardware and software across a wide range of computing
358           environments regardless of its use in feedback or non-feedback
359           modes. Its key setup time is excellent, and its key agility is
360           good. Rijndael's very low memory requirements make it very well
361           suited for restricted-space environments, in which it also
362           demonstrates excellent performance. Rijndael's operations are
363           among the easiest to defend against power and timing attacks.
365           The AES specifies three key sizes: 128, 192 and 256 bits
367           See <http://csrc.nist.gov/encryption/aes/> for more information.
369 config CRYPTO_AES_X86_64
370         tristate "AES cipher algorithms (x86_64)"
371         depends on (X86 || UML_X86) && 64BIT
372         select CRYPTO_ALGAPI
373         select CRYPTO_AES
374         help
375           AES cipher algorithms (FIPS-197). AES uses the Rijndael
376           algorithm.
378           Rijndael appears to be consistently a very good performer in
379           both hardware and software across a wide range of computing
380           environments regardless of its use in feedback or non-feedback
381           modes. Its key setup time is excellent, and its key agility is
382           good. Rijndael's very low memory requirements make it very well
383           suited for restricted-space environments, in which it also
384           demonstrates excellent performance. Rijndael's operations are
385           among the easiest to defend against power and timing attacks.
387           The AES specifies three key sizes: 128, 192 and 256 bits
389           See <http://csrc.nist.gov/encryption/aes/> for more information.
391 config CRYPTO_ANUBIS
392         tristate "Anubis cipher algorithm"
393         select CRYPTO_ALGAPI
394         help
395           Anubis cipher algorithm.
397           Anubis is a variable key length cipher which can use keys from
398           128 bits to 320 bits in length.  It was evaluated as a entrant
399           in the NESSIE competition.
401           See also:
402           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
403           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
405 config CRYPTO_ARC4
406         tristate "ARC4 cipher algorithm"
407         select CRYPTO_ALGAPI
408         help
409           ARC4 cipher algorithm.
411           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
412           bits in length.  This algorithm is required for driver-based
413           WEP, but it should not be for other purposes because of the
414           weakness of the algorithm.
416 config CRYPTO_BLOWFISH
417         tristate "Blowfish cipher algorithm"
418         select CRYPTO_ALGAPI
419         help
420           Blowfish cipher algorithm, by Bruce Schneier.
422           This is a variable key length cipher which can use keys from 32
423           bits to 448 bits in length.  It's fast, simple and specifically
424           designed for use on "large microprocessors".
426           See also:
427           <http://www.schneier.com/blowfish.html>
429 config CRYPTO_CAMELLIA
430         tristate "Camellia cipher algorithms"
431         depends on CRYPTO
432         select CRYPTO_ALGAPI
433         help
434           Camellia cipher algorithms module.
436           Camellia is a symmetric key block cipher developed jointly
437           at NTT and Mitsubishi Electric Corporation.
439           The Camellia specifies three key sizes: 128, 192 and 256 bits.
441           See also:
442           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
444 config CRYPTO_CAST5
445         tristate "CAST5 (CAST-128) cipher algorithm"
446         select CRYPTO_ALGAPI
447         help
448           The CAST5 encryption algorithm (synonymous with CAST-128) is
449           described in RFC2144.
451 config CRYPTO_CAST6
452         tristate "CAST6 (CAST-256) cipher algorithm"
453         select CRYPTO_ALGAPI
454         help
455           The CAST6 encryption algorithm (synonymous with CAST-256) is
456           described in RFC2612.
458 config CRYPTO_DES
459         tristate "DES and Triple DES EDE cipher algorithms"
460         select CRYPTO_ALGAPI
461         help
462           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
464 config CRYPTO_FCRYPT
465         tristate "FCrypt cipher algorithm"
466         select CRYPTO_ALGAPI
467         select CRYPTO_BLKCIPHER
468         help
469           FCrypt algorithm used by RxRPC.
471 config CRYPTO_KHAZAD
472         tristate "Khazad cipher algorithm"
473         select CRYPTO_ALGAPI
474         help
475           Khazad cipher algorithm.
477           Khazad was a finalist in the initial NESSIE competition.  It is
478           an algorithm optimized for 64-bit processors with good performance
479           on 32-bit processors.  Khazad uses an 128 bit key size.
481           See also:
482           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
484 config CRYPTO_SALSA20
485         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
486         depends on EXPERIMENTAL
487         select CRYPTO_BLKCIPHER
488         help
489           Salsa20 stream cipher algorithm.
491           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
492           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
494           The Salsa20 stream cipher algorithm is designed by Daniel J.
495           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
497 config CRYPTO_SALSA20_586
498         tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
499         depends on (X86 || UML_X86) && !64BIT
500         depends on EXPERIMENTAL
501         select CRYPTO_BLKCIPHER
502         help
503           Salsa20 stream cipher algorithm.
505           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
506           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
508           The Salsa20 stream cipher algorithm is designed by Daniel J.
509           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
511 config CRYPTO_SALSA20_X86_64
512         tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
513         depends on (X86 || UML_X86) && 64BIT
514         depends on EXPERIMENTAL
515         select CRYPTO_BLKCIPHER
516         help
517           Salsa20 stream cipher algorithm.
519           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
520           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
522           The Salsa20 stream cipher algorithm is designed by Daniel J.
523           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
525 config CRYPTO_SEED
526         tristate "SEED cipher algorithm"
527         select CRYPTO_ALGAPI
528         help
529           SEED cipher algorithm (RFC4269).
531           SEED is a 128-bit symmetric key block cipher that has been
532           developed by KISA (Korea Information Security Agency) as a
533           national standard encryption algorithm of the Republic of Korea.
534           It is a 16 round block cipher with the key size of 128 bit.
536           See also:
537           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
539 config CRYPTO_SERPENT
540         tristate "Serpent cipher algorithm"
541         select CRYPTO_ALGAPI
542         help
543           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
545           Keys are allowed to be from 0 to 256 bits in length, in steps
546           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
547           variant of Serpent for compatibility with old kerneli.org code.
549           See also:
550           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
552 config CRYPTO_TEA
553         tristate "TEA, XTEA and XETA cipher algorithms"
554         select CRYPTO_ALGAPI
555         help
556           TEA cipher algorithm.
558           Tiny Encryption Algorithm is a simple cipher that uses
559           many rounds for security.  It is very fast and uses
560           little memory.
562           Xtendend Tiny Encryption Algorithm is a modification to
563           the TEA algorithm to address a potential key weakness
564           in the TEA algorithm.
566           Xtendend Encryption Tiny Algorithm is a mis-implementation
567           of the XTEA algorithm for compatibility purposes.
569 config CRYPTO_TWOFISH
570         tristate "Twofish cipher algorithm"
571         select CRYPTO_ALGAPI
572         select CRYPTO_TWOFISH_COMMON
573         help
574           Twofish cipher algorithm.
576           Twofish was submitted as an AES (Advanced Encryption Standard)
577           candidate cipher by researchers at CounterPane Systems.  It is a
578           16 round block cipher supporting key sizes of 128, 192, and 256
579           bits.
581           See also:
582           <http://www.schneier.com/twofish.html>
584 config CRYPTO_TWOFISH_COMMON
585         tristate
586         help
587           Common parts of the Twofish cipher algorithm shared by the
588           generic c and the assembler implementations.
590 config CRYPTO_TWOFISH_586
591         tristate "Twofish cipher algorithms (i586)"
592         depends on (X86 || UML_X86) && !64BIT
593         select CRYPTO_ALGAPI
594         select CRYPTO_TWOFISH_COMMON
595         help
596           Twofish cipher algorithm.
598           Twofish was submitted as an AES (Advanced Encryption Standard)
599           candidate cipher by researchers at CounterPane Systems.  It is a
600           16 round block cipher supporting key sizes of 128, 192, and 256
601           bits.
603           See also:
604           <http://www.schneier.com/twofish.html>
606 config CRYPTO_TWOFISH_X86_64
607         tristate "Twofish cipher algorithm (x86_64)"
608         depends on (X86 || UML_X86) && 64BIT
609         select CRYPTO_ALGAPI
610         select CRYPTO_TWOFISH_COMMON
611         help
612           Twofish cipher algorithm (x86_64).
614           Twofish was submitted as an AES (Advanced Encryption Standard)
615           candidate cipher by researchers at CounterPane Systems.  It is a
616           16 round block cipher supporting key sizes of 128, 192, and 256
617           bits.
619           See also:
620           <http://www.schneier.com/twofish.html>
622 comment "Compression"
624 config CRYPTO_DEFLATE
625         tristate "Deflate compression algorithm"
626         select CRYPTO_ALGAPI
627         select ZLIB_INFLATE
628         select ZLIB_DEFLATE
629         help
630           This is the Deflate algorithm (RFC1951), specified for use in
631           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
633           You will most probably want this if using IPSec.
635 config CRYPTO_LZO
636         tristate "LZO compression algorithm"
637         select CRYPTO_ALGAPI
638         select LZO_COMPRESS
639         select LZO_DECOMPRESS
640         help
641           This is the LZO algorithm.
643 source "drivers/crypto/Kconfig"
645 endif   # if CRYPTO