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