crypto: tcrypt - do not attempt to write to readonly variable
[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         tristate "Cryptographic API"
17         help
18           This option provides the core Cryptographic API.
19
20 if CRYPTO
21
22 comment "Crypto core or helper"
23
24 config CRYPTO_FIPS
25         bool "FIPS 200 compliance"
26         depends on CRYPTO_ANSI_CPRNG && !CRYPTO_MANAGER_DISABLE_TESTS
27         help
28           This options enables the fips boot option which is
29           required if you want to system to operate in a FIPS 200
30           certification.  You should say no unless you know what
31           this is.
32
33 config CRYPTO_ALGAPI
34         tristate
35         select CRYPTO_ALGAPI2
36         help
37           This option provides the API for cryptographic algorithms.
38
39 config CRYPTO_ALGAPI2
40         tristate
41
42 config CRYPTO_AEAD
43         tristate
44         select CRYPTO_AEAD2
45         select CRYPTO_ALGAPI
46
47 config CRYPTO_AEAD2
48         tristate
49         select CRYPTO_ALGAPI2
50
51 config CRYPTO_BLKCIPHER
52         tristate
53         select CRYPTO_BLKCIPHER2
54         select CRYPTO_ALGAPI
55
56 config CRYPTO_BLKCIPHER2
57         tristate
58         select CRYPTO_ALGAPI2
59         select CRYPTO_RNG2
60         select CRYPTO_WORKQUEUE
61
62 config CRYPTO_HASH
63         tristate
64         select CRYPTO_HASH2
65         select CRYPTO_ALGAPI
66
67 config CRYPTO_HASH2
68         tristate
69         select CRYPTO_ALGAPI2
70
71 config CRYPTO_RNG
72         tristate
73         select CRYPTO_RNG2
74         select CRYPTO_ALGAPI
75
76 config CRYPTO_RNG2
77         tristate
78         select CRYPTO_ALGAPI2
79
80 config CRYPTO_PCOMP
81         tristate
82         select CRYPTO_PCOMP2
83         select CRYPTO_ALGAPI
84
85 config CRYPTO_PCOMP2
86         tristate
87         select CRYPTO_ALGAPI2
88
89 config CRYPTO_MANAGER
90         tristate "Cryptographic algorithm manager"
91         select CRYPTO_MANAGER2
92         help
93           Create default cryptographic template instantiations such as
94           cbc(aes).
95
96 config CRYPTO_MANAGER2
97         def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
98         select CRYPTO_AEAD2
99         select CRYPTO_HASH2
100         select CRYPTO_BLKCIPHER2
101         select CRYPTO_PCOMP2
102
103 config CRYPTO_MANAGER_DISABLE_TESTS
104         bool "Disable run-time self tests"
105         default y
106         depends on CRYPTO_MANAGER2
107         help
108           Disable run-time self tests that normally take place at
109           algorithm registration.
110
111 config CRYPTO_GF128MUL
112         tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
113         help
114           Efficient table driven implementation of multiplications in the
115           field GF(2^128).  This is needed by some cypher modes. This
116           option will be selected automatically if you select such a
117           cipher mode.  Only select this option by hand if you expect to load
118           an external module that requires these functions.
119
120 config CRYPTO_NULL
121         tristate "Null algorithms"
122         select CRYPTO_ALGAPI
123         select CRYPTO_BLKCIPHER
124         select CRYPTO_HASH
125         help
126           These are 'Null' algorithms, used by IPsec, which do nothing.
127
128 config CRYPTO_PCRYPT
129         tristate "Parallel crypto engine (EXPERIMENTAL)"
130         depends on SMP && EXPERIMENTAL
131         select PADATA
132         select CRYPTO_MANAGER
133         select CRYPTO_AEAD
134         help
135           This converts an arbitrary crypto algorithm into a parallel
136           algorithm that executes in kernel threads.
137
138 config CRYPTO_WORKQUEUE
139        tristate
140
141 config CRYPTO_CRYPTD
142         tristate "Software async crypto daemon"
143         select CRYPTO_BLKCIPHER
144         select CRYPTO_HASH
145         select CRYPTO_MANAGER
146         select CRYPTO_WORKQUEUE
147         help
148           This is a generic software asynchronous crypto daemon that
149           converts an arbitrary synchronous software crypto algorithm
150           into an asynchronous algorithm that executes in a kernel thread.
151
152 config CRYPTO_AUTHENC
153         tristate "Authenc support"
154         select CRYPTO_AEAD
155         select CRYPTO_BLKCIPHER
156         select CRYPTO_MANAGER
157         select CRYPTO_HASH
158         help
159           Authenc: Combined mode wrapper for IPsec.
160           This is required for IPSec.
161
162 config CRYPTO_TEST
163         tristate "Testing module"
164         depends on m
165         select CRYPTO_MANAGER
166         help
167           Quick & dirty crypto test module.
168
169 comment "Authenticated Encryption with Associated Data"
170
171 config CRYPTO_CCM
172         tristate "CCM support"
173         select CRYPTO_CTR
174         select CRYPTO_AEAD
175         help
176           Support for Counter with CBC MAC. Required for IPsec.
177
178 config CRYPTO_GCM
179         tristate "GCM/GMAC support"
180         select CRYPTO_CTR
181         select CRYPTO_AEAD
182         select CRYPTO_GHASH
183         help
184           Support for Galois/Counter Mode (GCM) and Galois Message
185           Authentication Code (GMAC). Required for IPSec.
186
187 config CRYPTO_SEQIV
188         tristate "Sequence Number IV Generator"
189         select CRYPTO_AEAD
190         select CRYPTO_BLKCIPHER
191         select CRYPTO_RNG
192         help
193           This IV generator generates an IV based on a sequence number by
194           xoring it with a salt.  This algorithm is mainly useful for CTR
195
196 comment "Block modes"
197
198 config CRYPTO_CBC
199         tristate "CBC support"
200         select CRYPTO_BLKCIPHER
201         select CRYPTO_MANAGER
202         help
203           CBC: Cipher Block Chaining mode
204           This block cipher algorithm is required for IPSec.
205
206 config CRYPTO_CTR
207         tristate "CTR support"
208         select CRYPTO_BLKCIPHER
209         select CRYPTO_SEQIV
210         select CRYPTO_MANAGER
211         help
212           CTR: Counter mode
213           This block cipher algorithm is required for IPSec.
214
215 config CRYPTO_CTS
216         tristate "CTS support"
217         select CRYPTO_BLKCIPHER
218         help
219           CTS: Cipher Text Stealing
220           This is the Cipher Text Stealing mode as described by
221           Section 8 of rfc2040 and referenced by rfc3962.
222           (rfc3962 includes errata information in its Appendix A)
223           This mode is required for Kerberos gss mechanism support
224           for AES encryption.
225
226 config CRYPTO_ECB
227         tristate "ECB support"
228         select CRYPTO_BLKCIPHER
229         select CRYPTO_MANAGER
230         help
231           ECB: Electronic CodeBook mode
232           This is the simplest block cipher algorithm.  It simply encrypts
233           the input block by block.
234
235 config CRYPTO_LRW
236         tristate "LRW support (EXPERIMENTAL)"
237         depends on EXPERIMENTAL
238         select CRYPTO_BLKCIPHER
239         select CRYPTO_MANAGER
240         select CRYPTO_GF128MUL
241         help
242           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
243           narrow block cipher mode for dm-crypt.  Use it with cipher
244           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
245           The first 128, 192 or 256 bits in the key are used for AES and the
246           rest is used to tie each cipher block to its logical position.
247
248 config CRYPTO_PCBC
249         tristate "PCBC support"
250         select CRYPTO_BLKCIPHER
251         select CRYPTO_MANAGER
252         help
253           PCBC: Propagating Cipher Block Chaining mode
254           This block cipher algorithm is required for RxRPC.
255
256 config CRYPTO_XTS
257         tristate "XTS support (EXPERIMENTAL)"
258         depends on EXPERIMENTAL
259         select CRYPTO_BLKCIPHER
260         select CRYPTO_MANAGER
261         select CRYPTO_GF128MUL
262         help
263           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
264           key size 256, 384 or 512 bits. This implementation currently
265           can't handle a sectorsize which is not a multiple of 16 bytes.
266
267 config CRYPTO_FPU
268         tristate
269         select CRYPTO_BLKCIPHER
270         select CRYPTO_MANAGER
271
272 comment "Hash modes"
273
274 config CRYPTO_HMAC
275         tristate "HMAC support"
276         select CRYPTO_HASH
277         select CRYPTO_MANAGER
278         help
279           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
280           This is required for IPSec.
281
282 config CRYPTO_XCBC
283         tristate "XCBC support"
284         depends on EXPERIMENTAL
285         select CRYPTO_HASH
286         select CRYPTO_MANAGER
287         help
288           XCBC: Keyed-Hashing with encryption algorithm
289                 http://www.ietf.org/rfc/rfc3566.txt
290                 http://csrc.nist.gov/encryption/modes/proposedmodes/
291                  xcbc-mac/xcbc-mac-spec.pdf
292
293 config CRYPTO_VMAC
294         tristate "VMAC support"
295         depends on EXPERIMENTAL
296         select CRYPTO_HASH
297         select CRYPTO_MANAGER
298         help
299           VMAC is a message authentication algorithm designed for
300           very high speed on 64-bit architectures.
301
302           See also:
303           <http://fastcrypto.org/vmac>
304
305 comment "Digest"
306
307 config CRYPTO_CRC32C
308         tristate "CRC32c CRC algorithm"
309         select CRYPTO_HASH
310         help
311           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
312           by iSCSI for header and data digests and by others.
313           See Castagnoli93.  Module will be crc32c.
314
315 config CRYPTO_CRC32C_INTEL
316         tristate "CRC32c INTEL hardware acceleration"
317         depends on X86
318         select CRYPTO_HASH
319         help
320           In Intel processor with SSE4.2 supported, the processor will
321           support CRC32C implementation using hardware accelerated CRC32
322           instruction. This option will create 'crc32c-intel' module,
323           which will enable any routine to use the CRC32 instruction to
324           gain performance compared with software implementation.
325           Module will be crc32c-intel.
326
327 config CRYPTO_GHASH
328         tristate "GHASH digest algorithm"
329         select CRYPTO_SHASH
330         select CRYPTO_GF128MUL
331         help
332           GHASH is message digest algorithm for GCM (Galois/Counter Mode).
333
334 config CRYPTO_MD4
335         tristate "MD4 digest algorithm"
336         select CRYPTO_HASH
337         help
338           MD4 message digest algorithm (RFC1320).
339
340 config CRYPTO_MD5
341         tristate "MD5 digest algorithm"
342         select CRYPTO_HASH
343         help
344           MD5 message digest algorithm (RFC1321).
345
346 config CRYPTO_MICHAEL_MIC
347         tristate "Michael MIC keyed digest algorithm"
348         select CRYPTO_HASH
349         help
350           Michael MIC is used for message integrity protection in TKIP
351           (IEEE 802.11i). This algorithm is required for TKIP, but it
352           should not be used for other purposes because of the weakness
353           of the algorithm.
354
355 config CRYPTO_RMD128
356         tristate "RIPEMD-128 digest algorithm"
357         select CRYPTO_HASH
358         help
359           RIPEMD-128 (ISO/IEC 10118-3:2004).
360
361           RIPEMD-128 is a 128-bit cryptographic hash function. It should only
362           to be used as a secure replacement for RIPEMD. For other use cases
363           RIPEMD-160 should be used.
364
365           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
366           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
367
368 config CRYPTO_RMD160
369         tristate "RIPEMD-160 digest algorithm"
370         select CRYPTO_HASH
371         help
372           RIPEMD-160 (ISO/IEC 10118-3:2004).
373
374           RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
375           to be used as a secure replacement for the 128-bit hash functions
376           MD4, MD5 and it's predecessor RIPEMD
377           (not to be confused with RIPEMD-128).
378
379           It's speed is comparable to SHA1 and there are no known attacks
380           against RIPEMD-160.
381
382           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
383           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
384
385 config CRYPTO_RMD256
386         tristate "RIPEMD-256 digest algorithm"
387         select CRYPTO_HASH
388         help
389           RIPEMD-256 is an optional extension of RIPEMD-128 with a
390           256 bit hash. It is intended for applications that require
391           longer hash-results, without needing a larger security level
392           (than RIPEMD-128).
393
394           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
395           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
396
397 config CRYPTO_RMD320
398         tristate "RIPEMD-320 digest algorithm"
399         select CRYPTO_HASH
400         help
401           RIPEMD-320 is an optional extension of RIPEMD-160 with a
402           320 bit hash. It is intended for applications that require
403           longer hash-results, without needing a larger security level
404           (than RIPEMD-160).
405
406           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
407           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
408
409 config CRYPTO_SHA1
410         tristate "SHA1 digest algorithm"
411         select CRYPTO_HASH
412         help
413           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
414
415 config CRYPTO_SHA256
416         tristate "SHA224 and SHA256 digest algorithm"
417         select CRYPTO_HASH
418         help
419           SHA256 secure hash standard (DFIPS 180-2).
420
421           This version of SHA implements a 256 bit hash with 128 bits of
422           security against collision attacks.
423
424           This code also includes SHA-224, a 224 bit hash with 112 bits
425           of security against collision attacks.
426
427 config CRYPTO_SHA512
428         tristate "SHA384 and SHA512 digest algorithms"
429         select CRYPTO_HASH
430         help
431           SHA512 secure hash standard (DFIPS 180-2).
432
433           This version of SHA implements a 512 bit hash with 256 bits of
434           security against collision attacks.
435
436           This code also includes SHA-384, a 384 bit hash with 192 bits
437           of security against collision attacks.
438
439 config CRYPTO_TGR192
440         tristate "Tiger digest algorithms"
441         select CRYPTO_HASH
442         help
443           Tiger hash algorithm 192, 160 and 128-bit hashes
444
445           Tiger is a hash function optimized for 64-bit processors while
446           still having decent performance on 32-bit processors.
447           Tiger was developed by Ross Anderson and Eli Biham.
448
449           See also:
450           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
451
452 config CRYPTO_WP512
453         tristate "Whirlpool digest algorithms"
454         select CRYPTO_HASH
455         help
456           Whirlpool hash algorithm 512, 384 and 256-bit hashes
457
458           Whirlpool-512 is part of the NESSIE cryptographic primitives.
459           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
460
461           See also:
462           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
463
464 config CRYPTO_GHASH_CLMUL_NI_INTEL
465         tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
466         depends on (X86 || UML_X86) && 64BIT
467         select CRYPTO_SHASH
468         select CRYPTO_CRYPTD
469         help
470           GHASH is message digest algorithm for GCM (Galois/Counter Mode).
471           The implementation is accelerated by CLMUL-NI of Intel.
472
473 comment "Ciphers"
474
475 config CRYPTO_AES
476         tristate "AES cipher algorithms"
477         select CRYPTO_ALGAPI
478         help
479           AES cipher algorithms (FIPS-197). AES uses the Rijndael
480           algorithm.
481
482           Rijndael appears to be consistently a very good performer in
483           both hardware and software across a wide range of computing
484           environments regardless of its use in feedback or non-feedback
485           modes. Its key setup time is excellent, and its key agility is
486           good. Rijndael's very low memory requirements make it very well
487           suited for restricted-space environments, in which it also
488           demonstrates excellent performance. Rijndael's operations are
489           among the easiest to defend against power and timing attacks.
490
491           The AES specifies three key sizes: 128, 192 and 256 bits
492
493           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
494
495 config CRYPTO_AES_586
496         tristate "AES cipher algorithms (i586)"
497         depends on (X86 || UML_X86) && !64BIT
498         select CRYPTO_ALGAPI
499         select CRYPTO_AES
500         help
501           AES cipher algorithms (FIPS-197). AES uses the Rijndael
502           algorithm.
503
504           Rijndael appears to be consistently a very good performer in
505           both hardware and software across a wide range of computing
506           environments regardless of its use in feedback or non-feedback
507           modes. Its key setup time is excellent, and its key agility is
508           good. Rijndael's very low memory requirements make it very well
509           suited for restricted-space environments, in which it also
510           demonstrates excellent performance. Rijndael's operations are
511           among the easiest to defend against power and timing attacks.
512
513           The AES specifies three key sizes: 128, 192 and 256 bits
514
515           See <http://csrc.nist.gov/encryption/aes/> for more information.
516
517 config CRYPTO_AES_X86_64
518         tristate "AES cipher algorithms (x86_64)"
519         depends on (X86 || UML_X86) && 64BIT
520         select CRYPTO_ALGAPI
521         select CRYPTO_AES
522         help
523           AES cipher algorithms (FIPS-197). AES uses the Rijndael
524           algorithm.
525
526           Rijndael appears to be consistently a very good performer in
527           both hardware and software across a wide range of computing
528           environments regardless of its use in feedback or non-feedback
529           modes. Its key setup time is excellent, and its key agility is
530           good. Rijndael's very low memory requirements make it very well
531           suited for restricted-space environments, in which it also
532           demonstrates excellent performance. Rijndael's operations are
533           among the easiest to defend against power and timing attacks.
534
535           The AES specifies three key sizes: 128, 192 and 256 bits
536
537           See <http://csrc.nist.gov/encryption/aes/> for more information.
538
539 config CRYPTO_AES_NI_INTEL
540         tristate "AES cipher algorithms (AES-NI)"
541         depends on (X86 || UML_X86)
542         select CRYPTO_AES_X86_64 if 64BIT
543         select CRYPTO_AES_586 if !64BIT
544         select CRYPTO_CRYPTD
545         select CRYPTO_ALGAPI
546         select CRYPTO_FPU
547         help
548           Use Intel AES-NI instructions for AES algorithm.
549
550           AES cipher algorithms (FIPS-197). AES uses the Rijndael
551           algorithm.
552
553           Rijndael appears to be consistently a very good performer in
554           both hardware and software across a wide range of computing
555           environments regardless of its use in feedback or non-feedback
556           modes. Its key setup time is excellent, and its key agility is
557           good. Rijndael's very low memory requirements make it very well
558           suited for restricted-space environments, in which it also
559           demonstrates excellent performance. Rijndael's operations are
560           among the easiest to defend against power and timing attacks.
561
562           The AES specifies three key sizes: 128, 192 and 256 bits
563
564           See <http://csrc.nist.gov/encryption/aes/> for more information.
565
566           In addition to AES cipher algorithm support, the acceleration
567           for some popular block cipher mode is supported too, including
568           ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
569           acceleration for CTR.
570
571 config CRYPTO_ANUBIS
572         tristate "Anubis cipher algorithm"
573         select CRYPTO_ALGAPI
574         help
575           Anubis cipher algorithm.
576
577           Anubis is a variable key length cipher which can use keys from
578           128 bits to 320 bits in length.  It was evaluated as a entrant
579           in the NESSIE competition.
580
581           See also:
582           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
583           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
584
585 config CRYPTO_ARC4
586         tristate "ARC4 cipher algorithm"
587         select CRYPTO_ALGAPI
588         help
589           ARC4 cipher algorithm.
590
591           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
592           bits in length.  This algorithm is required for driver-based
593           WEP, but it should not be for other purposes because of the
594           weakness of the algorithm.
595
596 config CRYPTO_BLOWFISH
597         tristate "Blowfish cipher algorithm"
598         select CRYPTO_ALGAPI
599         help
600           Blowfish cipher algorithm, by Bruce Schneier.
601
602           This is a variable key length cipher which can use keys from 32
603           bits to 448 bits in length.  It's fast, simple and specifically
604           designed for use on "large microprocessors".
605
606           See also:
607           <http://www.schneier.com/blowfish.html>
608
609 config CRYPTO_CAMELLIA
610         tristate "Camellia cipher algorithms"
611         depends on CRYPTO
612         select CRYPTO_ALGAPI
613         help
614           Camellia cipher algorithms module.
615
616           Camellia is a symmetric key block cipher developed jointly
617           at NTT and Mitsubishi Electric Corporation.
618
619           The Camellia specifies three key sizes: 128, 192 and 256 bits.
620
621           See also:
622           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
623
624 config CRYPTO_CAST5
625         tristate "CAST5 (CAST-128) cipher algorithm"
626         select CRYPTO_ALGAPI
627         help
628           The CAST5 encryption algorithm (synonymous with CAST-128) is
629           described in RFC2144.
630
631 config CRYPTO_CAST6
632         tristate "CAST6 (CAST-256) cipher algorithm"
633         select CRYPTO_ALGAPI
634         help
635           The CAST6 encryption algorithm (synonymous with CAST-256) is
636           described in RFC2612.
637
638 config CRYPTO_DES
639         tristate "DES and Triple DES EDE cipher algorithms"
640         select CRYPTO_ALGAPI
641         help
642           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
643
644 config CRYPTO_FCRYPT
645         tristate "FCrypt cipher algorithm"
646         select CRYPTO_ALGAPI
647         select CRYPTO_BLKCIPHER
648         help
649           FCrypt algorithm used by RxRPC.
650
651 config CRYPTO_KHAZAD
652         tristate "Khazad cipher algorithm"
653         select CRYPTO_ALGAPI
654         help
655           Khazad cipher algorithm.
656
657           Khazad was a finalist in the initial NESSIE competition.  It is
658           an algorithm optimized for 64-bit processors with good performance
659           on 32-bit processors.  Khazad uses an 128 bit key size.
660
661           See also:
662           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
663
664 config CRYPTO_SALSA20
665         tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
666         depends on EXPERIMENTAL
667         select CRYPTO_BLKCIPHER
668         help
669           Salsa20 stream cipher algorithm.
670
671           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
672           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
673
674           The Salsa20 stream cipher algorithm is designed by Daniel J.
675           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
676
677 config CRYPTO_SALSA20_586
678         tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
679         depends on (X86 || UML_X86) && !64BIT
680         depends on EXPERIMENTAL
681         select CRYPTO_BLKCIPHER
682         help
683           Salsa20 stream cipher algorithm.
684
685           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
686           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
687
688           The Salsa20 stream cipher algorithm is designed by Daniel J.
689           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
690
691 config CRYPTO_SALSA20_X86_64
692         tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
693         depends on (X86 || UML_X86) && 64BIT
694         depends on EXPERIMENTAL
695         select CRYPTO_BLKCIPHER
696         help
697           Salsa20 stream cipher algorithm.
698
699           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
700           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
701
702           The Salsa20 stream cipher algorithm is designed by Daniel J.
703           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
704
705 config CRYPTO_SEED
706         tristate "SEED cipher algorithm"
707         select CRYPTO_ALGAPI
708         help
709           SEED cipher algorithm (RFC4269).
710
711           SEED is a 128-bit symmetric key block cipher that has been
712           developed by KISA (Korea Information Security Agency) as a
713           national standard encryption algorithm of the Republic of Korea.
714           It is a 16 round block cipher with the key size of 128 bit.
715
716           See also:
717           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
718
719 config CRYPTO_SERPENT
720         tristate "Serpent cipher algorithm"
721         select CRYPTO_ALGAPI
722         help
723           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
724
725           Keys are allowed to be from 0 to 256 bits in length, in steps
726           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
727           variant of Serpent for compatibility with old kerneli.org code.
728
729           See also:
730           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
731
732 config CRYPTO_TEA
733         tristate "TEA, XTEA and XETA cipher algorithms"
734         select CRYPTO_ALGAPI
735         help
736           TEA cipher algorithm.
737
738           Tiny Encryption Algorithm is a simple cipher that uses
739           many rounds for security.  It is very fast and uses
740           little memory.
741
742           Xtendend Tiny Encryption Algorithm is a modification to
743           the TEA algorithm to address a potential key weakness
744           in the TEA algorithm.
745
746           Xtendend Encryption Tiny Algorithm is a mis-implementation
747           of the XTEA algorithm for compatibility purposes.
748
749 config CRYPTO_TWOFISH
750         tristate "Twofish cipher algorithm"
751         select CRYPTO_ALGAPI
752         select CRYPTO_TWOFISH_COMMON
753         help
754           Twofish cipher algorithm.
755
756           Twofish was submitted as an AES (Advanced Encryption Standard)
757           candidate cipher by researchers at CounterPane Systems.  It is a
758           16 round block cipher supporting key sizes of 128, 192, and 256
759           bits.
760
761           See also:
762           <http://www.schneier.com/twofish.html>
763
764 config CRYPTO_TWOFISH_COMMON
765         tristate
766         help
767           Common parts of the Twofish cipher algorithm shared by the
768           generic c and the assembler implementations.
769
770 config CRYPTO_TWOFISH_586
771         tristate "Twofish cipher algorithms (i586)"
772         depends on (X86 || UML_X86) && !64BIT
773         select CRYPTO_ALGAPI
774         select CRYPTO_TWOFISH_COMMON
775         help
776           Twofish cipher algorithm.
777
778           Twofish was submitted as an AES (Advanced Encryption Standard)
779           candidate cipher by researchers at CounterPane Systems.  It is a
780           16 round block cipher supporting key sizes of 128, 192, and 256
781           bits.
782
783           See also:
784           <http://www.schneier.com/twofish.html>
785
786 config CRYPTO_TWOFISH_X86_64
787         tristate "Twofish cipher algorithm (x86_64)"
788         depends on (X86 || UML_X86) && 64BIT
789         select CRYPTO_ALGAPI
790         select CRYPTO_TWOFISH_COMMON
791         help
792           Twofish cipher algorithm (x86_64).
793
794           Twofish was submitted as an AES (Advanced Encryption Standard)
795           candidate cipher by researchers at CounterPane Systems.  It is a
796           16 round block cipher supporting key sizes of 128, 192, and 256
797           bits.
798
799           See also:
800           <http://www.schneier.com/twofish.html>
801
802 comment "Compression"
803
804 config CRYPTO_DEFLATE
805         tristate "Deflate compression algorithm"
806         select CRYPTO_ALGAPI
807         select ZLIB_INFLATE
808         select ZLIB_DEFLATE
809         help
810           This is the Deflate algorithm (RFC1951), specified for use in
811           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
812
813           You will most probably want this if using IPSec.
814
815 config CRYPTO_ZLIB
816         tristate "Zlib compression algorithm"
817         select CRYPTO_PCOMP
818         select ZLIB_INFLATE
819         select ZLIB_DEFLATE
820         select NLATTR
821         help
822           This is the zlib algorithm.
823
824 config CRYPTO_LZO
825         tristate "LZO compression algorithm"
826         select CRYPTO_ALGAPI
827         select LZO_COMPRESS
828         select LZO_DECOMPRESS
829         help
830           This is the LZO algorithm.
831
832 comment "Random Number Generation"
833
834 config CRYPTO_ANSI_CPRNG
835         tristate "Pseudo Random Number Generation for Cryptographic modules"
836         default m
837         select CRYPTO_AES
838         select CRYPTO_RNG
839         help
840           This option enables the generic pseudo random number generator
841           for cryptographic modules.  Uses the Algorithm specified in
842           ANSI X9.31 A.2.4. Note that this option must be enabled if
843           CRYPTO_FIPS is selected
844
845 config CRYPTO_USER_API
846         tristate
847
848 config CRYPTO_USER_API_HASH
849         tristate "User-space interface for hash algorithms"
850         depends on NET
851         select CRYPTO_HASH
852         select CRYPTO_USER_API
853         help
854           This option enables the user-spaces interface for hash
855           algorithms.
856
857 config CRYPTO_USER_API_SKCIPHER
858         tristate "User-space interface for symmetric key cipher algorithms"
859         depends on NET
860         select CRYPTO_BLKCIPHER
861         select CRYPTO_USER_API
862         help
863           This option enables the user-spaces interface for symmetric
864           key cipher algorithms.
865
866 source "drivers/crypto/Kconfig"
867
868 endif   # if CRYPTO