Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
[platform/kernel/linux-starfive.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_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
27         depends on MODULE_SIG
28         help
29           This options enables the fips boot option which is
30           required if you want to system to operate in a FIPS 200
31           certification.  You should say no unless you know what
32           this is.
33
34 config CRYPTO_ALGAPI
35         tristate
36         select CRYPTO_ALGAPI2
37         help
38           This option provides the API for cryptographic algorithms.
39
40 config CRYPTO_ALGAPI2
41         tristate
42
43 config CRYPTO_AEAD
44         tristate
45         select CRYPTO_AEAD2
46         select CRYPTO_ALGAPI
47
48 config CRYPTO_AEAD2
49         tristate
50         select CRYPTO_ALGAPI2
51
52 config CRYPTO_BLKCIPHER
53         tristate
54         select CRYPTO_BLKCIPHER2
55         select CRYPTO_ALGAPI
56
57 config CRYPTO_BLKCIPHER2
58         tristate
59         select CRYPTO_ALGAPI2
60         select CRYPTO_RNG2
61         select CRYPTO_WORKQUEUE
62
63 config CRYPTO_HASH
64         tristate
65         select CRYPTO_HASH2
66         select CRYPTO_ALGAPI
67
68 config CRYPTO_HASH2
69         tristate
70         select CRYPTO_ALGAPI2
71
72 config CRYPTO_RNG
73         tristate
74         select CRYPTO_RNG2
75         select CRYPTO_ALGAPI
76
77 config CRYPTO_RNG2
78         tristate
79         select CRYPTO_ALGAPI2
80
81 config CRYPTO_PCOMP
82         tristate
83         select CRYPTO_PCOMP2
84         select CRYPTO_ALGAPI
85
86 config CRYPTO_PCOMP2
87         tristate
88         select CRYPTO_ALGAPI2
89
90 config CRYPTO_MANAGER
91         tristate "Cryptographic algorithm manager"
92         select CRYPTO_MANAGER2
93         help
94           Create default cryptographic template instantiations such as
95           cbc(aes).
96
97 config CRYPTO_MANAGER2
98         def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
99         select CRYPTO_AEAD2
100         select CRYPTO_HASH2
101         select CRYPTO_BLKCIPHER2
102         select CRYPTO_PCOMP2
103
104 config CRYPTO_USER
105         tristate "Userspace cryptographic algorithm configuration"
106         depends on NET
107         select CRYPTO_MANAGER
108         help
109           Userspace configuration for cryptographic instantiations such as
110           cbc(aes).
111
112 config CRYPTO_MANAGER_DISABLE_TESTS
113         bool "Disable run-time self tests"
114         default y
115         depends on CRYPTO_MANAGER2
116         help
117           Disable run-time self tests that normally take place at
118           algorithm registration.
119
120 config CRYPTO_GF128MUL
121         tristate "GF(2^128) multiplication functions"
122         help
123           Efficient table driven implementation of multiplications in the
124           field GF(2^128).  This is needed by some cypher modes. This
125           option will be selected automatically if you select such a
126           cipher mode.  Only select this option by hand if you expect to load
127           an external module that requires these functions.
128
129 config CRYPTO_NULL
130         tristate "Null algorithms"
131         select CRYPTO_ALGAPI
132         select CRYPTO_BLKCIPHER
133         select CRYPTO_HASH
134         help
135           These are 'Null' algorithms, used by IPsec, which do nothing.
136
137 config CRYPTO_PCRYPT
138         tristate "Parallel crypto engine"
139         depends on SMP
140         select PADATA
141         select CRYPTO_MANAGER
142         select CRYPTO_AEAD
143         help
144           This converts an arbitrary crypto algorithm into a parallel
145           algorithm that executes in kernel threads.
146
147 config CRYPTO_WORKQUEUE
148        tristate
149
150 config CRYPTO_CRYPTD
151         tristate "Software async crypto daemon"
152         select CRYPTO_BLKCIPHER
153         select CRYPTO_HASH
154         select CRYPTO_MANAGER
155         select CRYPTO_WORKQUEUE
156         help
157           This is a generic software asynchronous crypto daemon that
158           converts an arbitrary synchronous software crypto algorithm
159           into an asynchronous algorithm that executes in a kernel thread.
160
161 config CRYPTO_MCRYPTD
162         tristate "Software async multi-buffer crypto daemon"
163         select CRYPTO_BLKCIPHER
164         select CRYPTO_HASH
165         select CRYPTO_MANAGER
166         select CRYPTO_WORKQUEUE
167         help
168           This is a generic software asynchronous crypto daemon that
169           provides the kernel thread to assist multi-buffer crypto
170           algorithms for submitting jobs and flushing jobs in multi-buffer
171           crypto algorithms.  Multi-buffer crypto algorithms are executed
172           in the context of this kernel thread and drivers can post
173           their crypto request asynchronously to be processed by this daemon.
174
175 config CRYPTO_AUTHENC
176         tristate "Authenc support"
177         select CRYPTO_AEAD
178         select CRYPTO_BLKCIPHER
179         select CRYPTO_MANAGER
180         select CRYPTO_HASH
181         help
182           Authenc: Combined mode wrapper for IPsec.
183           This is required for IPSec.
184
185 config CRYPTO_TEST
186         tristate "Testing module"
187         depends on m
188         select CRYPTO_MANAGER
189         help
190           Quick & dirty crypto test module.
191
192 config CRYPTO_ABLK_HELPER
193         tristate
194         select CRYPTO_CRYPTD
195
196 config CRYPTO_GLUE_HELPER_X86
197         tristate
198         depends on X86
199         select CRYPTO_ALGAPI
200
201 comment "Authenticated Encryption with Associated Data"
202
203 config CRYPTO_CCM
204         tristate "CCM support"
205         select CRYPTO_CTR
206         select CRYPTO_AEAD
207         help
208           Support for Counter with CBC MAC. Required for IPsec.
209
210 config CRYPTO_GCM
211         tristate "GCM/GMAC support"
212         select CRYPTO_CTR
213         select CRYPTO_AEAD
214         select CRYPTO_GHASH
215         select CRYPTO_NULL
216         help
217           Support for Galois/Counter Mode (GCM) and Galois Message
218           Authentication Code (GMAC). Required for IPSec.
219
220 config CRYPTO_SEQIV
221         tristate "Sequence Number IV Generator"
222         select CRYPTO_AEAD
223         select CRYPTO_BLKCIPHER
224         select CRYPTO_RNG
225         help
226           This IV generator generates an IV based on a sequence number by
227           xoring it with a salt.  This algorithm is mainly useful for CTR
228
229 comment "Block modes"
230
231 config CRYPTO_CBC
232         tristate "CBC support"
233         select CRYPTO_BLKCIPHER
234         select CRYPTO_MANAGER
235         help
236           CBC: Cipher Block Chaining mode
237           This block cipher algorithm is required for IPSec.
238
239 config CRYPTO_CTR
240         tristate "CTR support"
241         select CRYPTO_BLKCIPHER
242         select CRYPTO_SEQIV
243         select CRYPTO_MANAGER
244         help
245           CTR: Counter mode
246           This block cipher algorithm is required for IPSec.
247
248 config CRYPTO_CTS
249         tristate "CTS support"
250         select CRYPTO_BLKCIPHER
251         help
252           CTS: Cipher Text Stealing
253           This is the Cipher Text Stealing mode as described by
254           Section 8 of rfc2040 and referenced by rfc3962.
255           (rfc3962 includes errata information in its Appendix A)
256           This mode is required for Kerberos gss mechanism support
257           for AES encryption.
258
259 config CRYPTO_ECB
260         tristate "ECB support"
261         select CRYPTO_BLKCIPHER
262         select CRYPTO_MANAGER
263         help
264           ECB: Electronic CodeBook mode
265           This is the simplest block cipher algorithm.  It simply encrypts
266           the input block by block.
267
268 config CRYPTO_LRW
269         tristate "LRW support"
270         select CRYPTO_BLKCIPHER
271         select CRYPTO_MANAGER
272         select CRYPTO_GF128MUL
273         help
274           LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
275           narrow block cipher mode for dm-crypt.  Use it with cipher
276           specification string aes-lrw-benbi, the key must be 256, 320 or 384.
277           The first 128, 192 or 256 bits in the key are used for AES and the
278           rest is used to tie each cipher block to its logical position.
279
280 config CRYPTO_PCBC
281         tristate "PCBC support"
282         select CRYPTO_BLKCIPHER
283         select CRYPTO_MANAGER
284         help
285           PCBC: Propagating Cipher Block Chaining mode
286           This block cipher algorithm is required for RxRPC.
287
288 config CRYPTO_XTS
289         tristate "XTS support"
290         select CRYPTO_BLKCIPHER
291         select CRYPTO_MANAGER
292         select CRYPTO_GF128MUL
293         help
294           XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
295           key size 256, 384 or 512 bits. This implementation currently
296           can't handle a sectorsize which is not a multiple of 16 bytes.
297
298 comment "Hash modes"
299
300 config CRYPTO_CMAC
301         tristate "CMAC support"
302         select CRYPTO_HASH
303         select CRYPTO_MANAGER
304         help
305           Cipher-based Message Authentication Code (CMAC) specified by
306           The National Institute of Standards and Technology (NIST).
307
308           https://tools.ietf.org/html/rfc4493
309           http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
310
311 config CRYPTO_HMAC
312         tristate "HMAC support"
313         select CRYPTO_HASH
314         select CRYPTO_MANAGER
315         help
316           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
317           This is required for IPSec.
318
319 config CRYPTO_XCBC
320         tristate "XCBC support"
321         select CRYPTO_HASH
322         select CRYPTO_MANAGER
323         help
324           XCBC: Keyed-Hashing with encryption algorithm
325                 http://www.ietf.org/rfc/rfc3566.txt
326                 http://csrc.nist.gov/encryption/modes/proposedmodes/
327                  xcbc-mac/xcbc-mac-spec.pdf
328
329 config CRYPTO_VMAC
330         tristate "VMAC support"
331         select CRYPTO_HASH
332         select CRYPTO_MANAGER
333         help
334           VMAC is a message authentication algorithm designed for
335           very high speed on 64-bit architectures.
336
337           See also:
338           <http://fastcrypto.org/vmac>
339
340 comment "Digest"
341
342 config CRYPTO_CRC32C
343         tristate "CRC32c CRC algorithm"
344         select CRYPTO_HASH
345         select CRC32
346         help
347           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
348           by iSCSI for header and data digests and by others.
349           See Castagnoli93.  Module will be crc32c.
350
351 config CRYPTO_CRC32C_INTEL
352         tristate "CRC32c INTEL hardware acceleration"
353         depends on X86
354         select CRYPTO_HASH
355         help
356           In Intel processor with SSE4.2 supported, the processor will
357           support CRC32C implementation using hardware accelerated CRC32
358           instruction. This option will create 'crc32c-intel' module,
359           which will enable any routine to use the CRC32 instruction to
360           gain performance compared with software implementation.
361           Module will be crc32c-intel.
362
363 config CRYPTO_CRC32C_SPARC64
364         tristate "CRC32c CRC algorithm (SPARC64)"
365         depends on SPARC64
366         select CRYPTO_HASH
367         select CRC32
368         help
369           CRC32c CRC algorithm implemented using sparc64 crypto instructions,
370           when available.
371
372 config CRYPTO_CRC32
373         tristate "CRC32 CRC algorithm"
374         select CRYPTO_HASH
375         select CRC32
376         help
377           CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
378           Shash crypto api wrappers to crc32_le function.
379
380 config CRYPTO_CRC32_PCLMUL
381         tristate "CRC32 PCLMULQDQ hardware acceleration"
382         depends on X86
383         select CRYPTO_HASH
384         select CRC32
385         help
386           From Intel Westmere and AMD Bulldozer processor with SSE4.2
387           and PCLMULQDQ supported, the processor will support
388           CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
389           instruction. This option will create 'crc32-plcmul' module,
390           which will enable any routine to use the CRC-32-IEEE 802.3 checksum
391           and gain better performance as compared with the table implementation.
392
393 config CRYPTO_CRCT10DIF
394         tristate "CRCT10DIF algorithm"
395         select CRYPTO_HASH
396         help
397           CRC T10 Data Integrity Field computation is being cast as
398           a crypto transform.  This allows for faster crc t10 diff
399           transforms to be used if they are available.
400
401 config CRYPTO_CRCT10DIF_PCLMUL
402         tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
403         depends on X86 && 64BIT && CRC_T10DIF
404         select CRYPTO_HASH
405         help
406           For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
407           CRC T10 DIF PCLMULQDQ computation can be hardware
408           accelerated PCLMULQDQ instruction. This option will create
409           'crct10dif-plcmul' module, which is faster when computing the
410           crct10dif checksum as compared with the generic table implementation.
411
412 config CRYPTO_GHASH
413         tristate "GHASH digest algorithm"
414         select CRYPTO_GF128MUL
415         help
416           GHASH is message digest algorithm for GCM (Galois/Counter Mode).
417
418 config CRYPTO_MD4
419         tristate "MD4 digest algorithm"
420         select CRYPTO_HASH
421         help
422           MD4 message digest algorithm (RFC1320).
423
424 config CRYPTO_MD5
425         tristate "MD5 digest algorithm"
426         select CRYPTO_HASH
427         help
428           MD5 message digest algorithm (RFC1321).
429
430 config CRYPTO_MD5_SPARC64
431         tristate "MD5 digest algorithm (SPARC64)"
432         depends on SPARC64
433         select CRYPTO_MD5
434         select CRYPTO_HASH
435         help
436           MD5 message digest algorithm (RFC1321) implemented
437           using sparc64 crypto instructions, when available.
438
439 config CRYPTO_MICHAEL_MIC
440         tristate "Michael MIC keyed digest algorithm"
441         select CRYPTO_HASH
442         help
443           Michael MIC is used for message integrity protection in TKIP
444           (IEEE 802.11i). This algorithm is required for TKIP, but it
445           should not be used for other purposes because of the weakness
446           of the algorithm.
447
448 config CRYPTO_RMD128
449         tristate "RIPEMD-128 digest algorithm"
450         select CRYPTO_HASH
451         help
452           RIPEMD-128 (ISO/IEC 10118-3:2004).
453
454           RIPEMD-128 is a 128-bit cryptographic hash function. It should only
455           be used as a secure replacement for RIPEMD. For other use cases,
456           RIPEMD-160 should be used.
457
458           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
459           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
460
461 config CRYPTO_RMD160
462         tristate "RIPEMD-160 digest algorithm"
463         select CRYPTO_HASH
464         help
465           RIPEMD-160 (ISO/IEC 10118-3:2004).
466
467           RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
468           to be used as a secure replacement for the 128-bit hash functions
469           MD4, MD5 and it's predecessor RIPEMD
470           (not to be confused with RIPEMD-128).
471
472           It's speed is comparable to SHA1 and there are no known attacks
473           against RIPEMD-160.
474
475           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
476           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
477
478 config CRYPTO_RMD256
479         tristate "RIPEMD-256 digest algorithm"
480         select CRYPTO_HASH
481         help
482           RIPEMD-256 is an optional extension of RIPEMD-128 with a
483           256 bit hash. It is intended for applications that require
484           longer hash-results, without needing a larger security level
485           (than RIPEMD-128).
486
487           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
488           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
489
490 config CRYPTO_RMD320
491         tristate "RIPEMD-320 digest algorithm"
492         select CRYPTO_HASH
493         help
494           RIPEMD-320 is an optional extension of RIPEMD-160 with a
495           320 bit hash. It is intended for applications that require
496           longer hash-results, without needing a larger security level
497           (than RIPEMD-160).
498
499           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
500           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
501
502 config CRYPTO_SHA1
503         tristate "SHA1 digest algorithm"
504         select CRYPTO_HASH
505         help
506           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
507
508 config CRYPTO_SHA1_SSSE3
509         tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2)"
510         depends on X86 && 64BIT
511         select CRYPTO_SHA1
512         select CRYPTO_HASH
513         help
514           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
515           using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
516           Extensions (AVX/AVX2), when available.
517
518 config CRYPTO_SHA256_SSSE3
519         tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2)"
520         depends on X86 && 64BIT
521         select CRYPTO_SHA256
522         select CRYPTO_HASH
523         help
524           SHA-256 secure hash standard (DFIPS 180-2) implemented
525           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
526           Extensions version 1 (AVX1), or Advanced Vector Extensions
527           version 2 (AVX2) instructions, when available.
528
529 config CRYPTO_SHA512_SSSE3
530         tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
531         depends on X86 && 64BIT
532         select CRYPTO_SHA512
533         select CRYPTO_HASH
534         help
535           SHA-512 secure hash standard (DFIPS 180-2) implemented
536           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
537           Extensions version 1 (AVX1), or Advanced Vector Extensions
538           version 2 (AVX2) instructions, when available.
539
540 config CRYPTO_SHA1_SPARC64
541         tristate "SHA1 digest algorithm (SPARC64)"
542         depends on SPARC64
543         select CRYPTO_SHA1
544         select CRYPTO_HASH
545         help
546           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
547           using sparc64 crypto instructions, when available.
548
549 config CRYPTO_SHA1_ARM
550         tristate "SHA1 digest algorithm (ARM-asm)"
551         depends on ARM
552         select CRYPTO_SHA1
553         select CRYPTO_HASH
554         help
555           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
556           using optimized ARM assembler.
557
558 config CRYPTO_SHA1_ARM_NEON
559         tristate "SHA1 digest algorithm (ARM NEON)"
560         depends on ARM && KERNEL_MODE_NEON
561         select CRYPTO_SHA1_ARM
562         select CRYPTO_SHA1
563         select CRYPTO_HASH
564         help
565           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
566           using optimized ARM NEON assembly, when NEON instructions are
567           available.
568
569 config CRYPTO_SHA1_PPC
570         tristate "SHA1 digest algorithm (powerpc)"
571         depends on PPC
572         help
573           This is the powerpc hardware accelerated implementation of the
574           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
575
576 config CRYPTO_SHA1_MB
577         tristate "SHA1 digest algorithm (x86_64 Multi-Buffer, Experimental)"
578         depends on X86 && 64BIT
579         select CRYPTO_SHA1
580         select CRYPTO_HASH
581         select CRYPTO_MCRYPTD
582         help
583           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
584           using multi-buffer technique.  This algorithm computes on
585           multiple data lanes concurrently with SIMD instructions for
586           better throughput.  It should not be enabled by default but
587           used when there is significant amount of work to keep the keep
588           the data lanes filled to get performance benefit.  If the data
589           lanes remain unfilled, a flush operation will be initiated to
590           process the crypto jobs, adding a slight latency.
591
592 config CRYPTO_SHA256
593         tristate "SHA224 and SHA256 digest algorithm"
594         select CRYPTO_HASH
595         help
596           SHA256 secure hash standard (DFIPS 180-2).
597
598           This version of SHA implements a 256 bit hash with 128 bits of
599           security against collision attacks.
600
601           This code also includes SHA-224, a 224 bit hash with 112 bits
602           of security against collision attacks.
603
604 config CRYPTO_SHA256_SPARC64
605         tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
606         depends on SPARC64
607         select CRYPTO_SHA256
608         select CRYPTO_HASH
609         help
610           SHA-256 secure hash standard (DFIPS 180-2) implemented
611           using sparc64 crypto instructions, when available.
612
613 config CRYPTO_SHA512
614         tristate "SHA384 and SHA512 digest algorithms"
615         select CRYPTO_HASH
616         help
617           SHA512 secure hash standard (DFIPS 180-2).
618
619           This version of SHA implements a 512 bit hash with 256 bits of
620           security against collision attacks.
621
622           This code also includes SHA-384, a 384 bit hash with 192 bits
623           of security against collision attacks.
624
625 config CRYPTO_SHA512_SPARC64
626         tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
627         depends on SPARC64
628         select CRYPTO_SHA512
629         select CRYPTO_HASH
630         help
631           SHA-512 secure hash standard (DFIPS 180-2) implemented
632           using sparc64 crypto instructions, when available.
633
634 config CRYPTO_SHA512_ARM_NEON
635         tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
636         depends on ARM && KERNEL_MODE_NEON
637         select CRYPTO_SHA512
638         select CRYPTO_HASH
639         help
640           SHA-512 secure hash standard (DFIPS 180-2) implemented
641           using ARM NEON instructions, when available.
642
643           This version of SHA implements a 512 bit hash with 256 bits of
644           security against collision attacks.
645
646           This code also includes SHA-384, a 384 bit hash with 192 bits
647           of security against collision attacks.
648
649 config CRYPTO_TGR192
650         tristate "Tiger digest algorithms"
651         select CRYPTO_HASH
652         help
653           Tiger hash algorithm 192, 160 and 128-bit hashes
654
655           Tiger is a hash function optimized for 64-bit processors while
656           still having decent performance on 32-bit processors.
657           Tiger was developed by Ross Anderson and Eli Biham.
658
659           See also:
660           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
661
662 config CRYPTO_WP512
663         tristate "Whirlpool digest algorithms"
664         select CRYPTO_HASH
665         help
666           Whirlpool hash algorithm 512, 384 and 256-bit hashes
667
668           Whirlpool-512 is part of the NESSIE cryptographic primitives.
669           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
670
671           See also:
672           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
673
674 config CRYPTO_GHASH_CLMUL_NI_INTEL
675         tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
676         depends on X86 && 64BIT
677         select CRYPTO_CRYPTD
678         help
679           GHASH is message digest algorithm for GCM (Galois/Counter Mode).
680           The implementation is accelerated by CLMUL-NI of Intel.
681
682 comment "Ciphers"
683
684 config CRYPTO_AES
685         tristate "AES cipher algorithms"
686         select CRYPTO_ALGAPI
687         help
688           AES cipher algorithms (FIPS-197). AES uses the Rijndael
689           algorithm.
690
691           Rijndael appears to be consistently a very good performer in
692           both hardware and software across a wide range of computing
693           environments regardless of its use in feedback or non-feedback
694           modes. Its key setup time is excellent, and its key agility is
695           good. Rijndael's very low memory requirements make it very well
696           suited for restricted-space environments, in which it also
697           demonstrates excellent performance. Rijndael's operations are
698           among the easiest to defend against power and timing attacks.
699
700           The AES specifies three key sizes: 128, 192 and 256 bits
701
702           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
703
704 config CRYPTO_AES_586
705         tristate "AES cipher algorithms (i586)"
706         depends on (X86 || UML_X86) && !64BIT
707         select CRYPTO_ALGAPI
708         select CRYPTO_AES
709         help
710           AES cipher algorithms (FIPS-197). AES uses the Rijndael
711           algorithm.
712
713           Rijndael appears to be consistently a very good performer in
714           both hardware and software across a wide range of computing
715           environments regardless of its use in feedback or non-feedback
716           modes. Its key setup time is excellent, and its key agility is
717           good. Rijndael's very low memory requirements make it very well
718           suited for restricted-space environments, in which it also
719           demonstrates excellent performance. Rijndael's operations are
720           among the easiest to defend against power and timing attacks.
721
722           The AES specifies three key sizes: 128, 192 and 256 bits
723
724           See <http://csrc.nist.gov/encryption/aes/> for more information.
725
726 config CRYPTO_AES_X86_64
727         tristate "AES cipher algorithms (x86_64)"
728         depends on (X86 || UML_X86) && 64BIT
729         select CRYPTO_ALGAPI
730         select CRYPTO_AES
731         help
732           AES cipher algorithms (FIPS-197). AES uses the Rijndael
733           algorithm.
734
735           Rijndael appears to be consistently a very good performer in
736           both hardware and software across a wide range of computing
737           environments regardless of its use in feedback or non-feedback
738           modes. Its key setup time is excellent, and its key agility is
739           good. Rijndael's very low memory requirements make it very well
740           suited for restricted-space environments, in which it also
741           demonstrates excellent performance. Rijndael's operations are
742           among the easiest to defend against power and timing attacks.
743
744           The AES specifies three key sizes: 128, 192 and 256 bits
745
746           See <http://csrc.nist.gov/encryption/aes/> for more information.
747
748 config CRYPTO_AES_NI_INTEL
749         tristate "AES cipher algorithms (AES-NI)"
750         depends on X86
751         select CRYPTO_AES_X86_64 if 64BIT
752         select CRYPTO_AES_586 if !64BIT
753         select CRYPTO_CRYPTD
754         select CRYPTO_ABLK_HELPER
755         select CRYPTO_ALGAPI
756         select CRYPTO_GLUE_HELPER_X86 if 64BIT
757         select CRYPTO_LRW
758         select CRYPTO_XTS
759         help
760           Use Intel AES-NI instructions for AES algorithm.
761
762           AES cipher algorithms (FIPS-197). AES uses the Rijndael
763           algorithm.
764
765           Rijndael appears to be consistently a very good performer in
766           both hardware and software across a wide range of computing
767           environments regardless of its use in feedback or non-feedback
768           modes. Its key setup time is excellent, and its key agility is
769           good. Rijndael's very low memory requirements make it very well
770           suited for restricted-space environments, in which it also
771           demonstrates excellent performance. Rijndael's operations are
772           among the easiest to defend against power and timing attacks.
773
774           The AES specifies three key sizes: 128, 192 and 256 bits
775
776           See <http://csrc.nist.gov/encryption/aes/> for more information.
777
778           In addition to AES cipher algorithm support, the acceleration
779           for some popular block cipher mode is supported too, including
780           ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
781           acceleration for CTR.
782
783 config CRYPTO_AES_SPARC64
784         tristate "AES cipher algorithms (SPARC64)"
785         depends on SPARC64
786         select CRYPTO_CRYPTD
787         select CRYPTO_ALGAPI
788         help
789           Use SPARC64 crypto opcodes for AES algorithm.
790
791           AES cipher algorithms (FIPS-197). AES uses the Rijndael
792           algorithm.
793
794           Rijndael appears to be consistently a very good performer in
795           both hardware and software across a wide range of computing
796           environments regardless of its use in feedback or non-feedback
797           modes. Its key setup time is excellent, and its key agility is
798           good. Rijndael's very low memory requirements make it very well
799           suited for restricted-space environments, in which it also
800           demonstrates excellent performance. Rijndael's operations are
801           among the easiest to defend against power and timing attacks.
802
803           The AES specifies three key sizes: 128, 192 and 256 bits
804
805           See <http://csrc.nist.gov/encryption/aes/> for more information.
806
807           In addition to AES cipher algorithm support, the acceleration
808           for some popular block cipher mode is supported too, including
809           ECB and CBC.
810
811 config CRYPTO_AES_ARM
812         tristate "AES cipher algorithms (ARM-asm)"
813         depends on ARM
814         select CRYPTO_ALGAPI
815         select CRYPTO_AES
816         help
817           Use optimized AES assembler routines for ARM platforms.
818
819           AES cipher algorithms (FIPS-197). AES uses the Rijndael
820           algorithm.
821
822           Rijndael appears to be consistently a very good performer in
823           both hardware and software across a wide range of computing
824           environments regardless of its use in feedback or non-feedback
825           modes. Its key setup time is excellent, and its key agility is
826           good. Rijndael's very low memory requirements make it very well
827           suited for restricted-space environments, in which it also
828           demonstrates excellent performance. Rijndael's operations are
829           among the easiest to defend against power and timing attacks.
830
831           The AES specifies three key sizes: 128, 192 and 256 bits
832
833           See <http://csrc.nist.gov/encryption/aes/> for more information.
834
835 config CRYPTO_AES_ARM_BS
836         tristate "Bit sliced AES using NEON instructions"
837         depends on ARM && KERNEL_MODE_NEON
838         select CRYPTO_ALGAPI
839         select CRYPTO_AES_ARM
840         select CRYPTO_ABLK_HELPER
841         help
842           Use a faster and more secure NEON based implementation of AES in CBC,
843           CTR and XTS modes
844
845           Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
846           and for XTS mode encryption, CBC and XTS mode decryption speedup is
847           around 25%. (CBC encryption speed is not affected by this driver.)
848           This implementation does not rely on any lookup tables so it is
849           believed to be invulnerable to cache timing attacks.
850
851 config CRYPTO_ANUBIS
852         tristate "Anubis cipher algorithm"
853         select CRYPTO_ALGAPI
854         help
855           Anubis cipher algorithm.
856
857           Anubis is a variable key length cipher which can use keys from
858           128 bits to 320 bits in length.  It was evaluated as a entrant
859           in the NESSIE competition.
860
861           See also:
862           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
863           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
864
865 config CRYPTO_ARC4
866         tristate "ARC4 cipher algorithm"
867         select CRYPTO_BLKCIPHER
868         help
869           ARC4 cipher algorithm.
870
871           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
872           bits in length.  This algorithm is required for driver-based
873           WEP, but it should not be for other purposes because of the
874           weakness of the algorithm.
875
876 config CRYPTO_BLOWFISH
877         tristate "Blowfish cipher algorithm"
878         select CRYPTO_ALGAPI
879         select CRYPTO_BLOWFISH_COMMON
880         help
881           Blowfish cipher algorithm, by Bruce Schneier.
882
883           This is a variable key length cipher which can use keys from 32
884           bits to 448 bits in length.  It's fast, simple and specifically
885           designed for use on "large microprocessors".
886
887           See also:
888           <http://www.schneier.com/blowfish.html>
889
890 config CRYPTO_BLOWFISH_COMMON
891         tristate
892         help
893           Common parts of the Blowfish cipher algorithm shared by the
894           generic c and the assembler implementations.
895
896           See also:
897           <http://www.schneier.com/blowfish.html>
898
899 config CRYPTO_BLOWFISH_X86_64
900         tristate "Blowfish cipher algorithm (x86_64)"
901         depends on X86 && 64BIT
902         select CRYPTO_ALGAPI
903         select CRYPTO_BLOWFISH_COMMON
904         help
905           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
906
907           This is a variable key length cipher which can use keys from 32
908           bits to 448 bits in length.  It's fast, simple and specifically
909           designed for use on "large microprocessors".
910
911           See also:
912           <http://www.schneier.com/blowfish.html>
913
914 config CRYPTO_CAMELLIA
915         tristate "Camellia cipher algorithms"
916         depends on CRYPTO
917         select CRYPTO_ALGAPI
918         help
919           Camellia cipher algorithms module.
920
921           Camellia is a symmetric key block cipher developed jointly
922           at NTT and Mitsubishi Electric Corporation.
923
924           The Camellia specifies three key sizes: 128, 192 and 256 bits.
925
926           See also:
927           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
928
929 config CRYPTO_CAMELLIA_X86_64
930         tristate "Camellia cipher algorithm (x86_64)"
931         depends on X86 && 64BIT
932         depends on CRYPTO
933         select CRYPTO_ALGAPI
934         select CRYPTO_GLUE_HELPER_X86
935         select CRYPTO_LRW
936         select CRYPTO_XTS
937         help
938           Camellia cipher algorithm module (x86_64).
939
940           Camellia is a symmetric key block cipher developed jointly
941           at NTT and Mitsubishi Electric Corporation.
942
943           The Camellia specifies three key sizes: 128, 192 and 256 bits.
944
945           See also:
946           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
947
948 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
949         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
950         depends on X86 && 64BIT
951         depends on CRYPTO
952         select CRYPTO_ALGAPI
953         select CRYPTO_CRYPTD
954         select CRYPTO_ABLK_HELPER
955         select CRYPTO_GLUE_HELPER_X86
956         select CRYPTO_CAMELLIA_X86_64
957         select CRYPTO_LRW
958         select CRYPTO_XTS
959         help
960           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
961
962           Camellia is a symmetric key block cipher developed jointly
963           at NTT and Mitsubishi Electric Corporation.
964
965           The Camellia specifies three key sizes: 128, 192 and 256 bits.
966
967           See also:
968           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
969
970 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
971         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
972         depends on X86 && 64BIT
973         depends on CRYPTO
974         select CRYPTO_ALGAPI
975         select CRYPTO_CRYPTD
976         select CRYPTO_ABLK_HELPER
977         select CRYPTO_GLUE_HELPER_X86
978         select CRYPTO_CAMELLIA_X86_64
979         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
980         select CRYPTO_LRW
981         select CRYPTO_XTS
982         help
983           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
984
985           Camellia is a symmetric key block cipher developed jointly
986           at NTT and Mitsubishi Electric Corporation.
987
988           The Camellia specifies three key sizes: 128, 192 and 256 bits.
989
990           See also:
991           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
992
993 config CRYPTO_CAMELLIA_SPARC64
994         tristate "Camellia cipher algorithm (SPARC64)"
995         depends on SPARC64
996         depends on CRYPTO
997         select CRYPTO_ALGAPI
998         help
999           Camellia cipher algorithm module (SPARC64).
1000
1001           Camellia is a symmetric key block cipher developed jointly
1002           at NTT and Mitsubishi Electric Corporation.
1003
1004           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1005
1006           See also:
1007           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1008
1009 config CRYPTO_CAST_COMMON
1010         tristate
1011         help
1012           Common parts of the CAST cipher algorithms shared by the
1013           generic c and the assembler implementations.
1014
1015 config CRYPTO_CAST5
1016         tristate "CAST5 (CAST-128) cipher algorithm"
1017         select CRYPTO_ALGAPI
1018         select CRYPTO_CAST_COMMON
1019         help
1020           The CAST5 encryption algorithm (synonymous with CAST-128) is
1021           described in RFC2144.
1022
1023 config CRYPTO_CAST5_AVX_X86_64
1024         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1025         depends on X86 && 64BIT
1026         select CRYPTO_ALGAPI
1027         select CRYPTO_CRYPTD
1028         select CRYPTO_ABLK_HELPER
1029         select CRYPTO_CAST_COMMON
1030         select CRYPTO_CAST5
1031         help
1032           The CAST5 encryption algorithm (synonymous with CAST-128) is
1033           described in RFC2144.
1034
1035           This module provides the Cast5 cipher algorithm that processes
1036           sixteen blocks parallel using the AVX instruction set.
1037
1038 config CRYPTO_CAST6
1039         tristate "CAST6 (CAST-256) cipher algorithm"
1040         select CRYPTO_ALGAPI
1041         select CRYPTO_CAST_COMMON
1042         help
1043           The CAST6 encryption algorithm (synonymous with CAST-256) is
1044           described in RFC2612.
1045
1046 config CRYPTO_CAST6_AVX_X86_64
1047         tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1048         depends on X86 && 64BIT
1049         select CRYPTO_ALGAPI
1050         select CRYPTO_CRYPTD
1051         select CRYPTO_ABLK_HELPER
1052         select CRYPTO_GLUE_HELPER_X86
1053         select CRYPTO_CAST_COMMON
1054         select CRYPTO_CAST6
1055         select CRYPTO_LRW
1056         select CRYPTO_XTS
1057         help
1058           The CAST6 encryption algorithm (synonymous with CAST-256) is
1059           described in RFC2612.
1060
1061           This module provides the Cast6 cipher algorithm that processes
1062           eight blocks parallel using the AVX instruction set.
1063
1064 config CRYPTO_DES
1065         tristate "DES and Triple DES EDE cipher algorithms"
1066         select CRYPTO_ALGAPI
1067         help
1068           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1069
1070 config CRYPTO_DES_SPARC64
1071         tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1072         depends on SPARC64
1073         select CRYPTO_ALGAPI
1074         select CRYPTO_DES
1075         help
1076           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1077           optimized using SPARC64 crypto opcodes.
1078
1079 config CRYPTO_DES3_EDE_X86_64
1080         tristate "Triple DES EDE cipher algorithm (x86-64)"
1081         depends on X86 && 64BIT
1082         select CRYPTO_ALGAPI
1083         select CRYPTO_DES
1084         help
1085           Triple DES EDE (FIPS 46-3) algorithm.
1086
1087           This module provides implementation of the Triple DES EDE cipher
1088           algorithm that is optimized for x86-64 processors. Two versions of
1089           algorithm are provided; regular processing one input block and
1090           one that processes three blocks parallel.
1091
1092 config CRYPTO_FCRYPT
1093         tristate "FCrypt cipher algorithm"
1094         select CRYPTO_ALGAPI
1095         select CRYPTO_BLKCIPHER
1096         help
1097           FCrypt algorithm used by RxRPC.
1098
1099 config CRYPTO_KHAZAD
1100         tristate "Khazad cipher algorithm"
1101         select CRYPTO_ALGAPI
1102         help
1103           Khazad cipher algorithm.
1104
1105           Khazad was a finalist in the initial NESSIE competition.  It is
1106           an algorithm optimized for 64-bit processors with good performance
1107           on 32-bit processors.  Khazad uses an 128 bit key size.
1108
1109           See also:
1110           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1111
1112 config CRYPTO_SALSA20
1113         tristate "Salsa20 stream cipher algorithm"
1114         select CRYPTO_BLKCIPHER
1115         help
1116           Salsa20 stream cipher algorithm.
1117
1118           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1119           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1120
1121           The Salsa20 stream cipher algorithm is designed by Daniel J.
1122           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1123
1124 config CRYPTO_SALSA20_586
1125         tristate "Salsa20 stream cipher algorithm (i586)"
1126         depends on (X86 || UML_X86) && !64BIT
1127         select CRYPTO_BLKCIPHER
1128         help
1129           Salsa20 stream cipher algorithm.
1130
1131           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1132           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1133
1134           The Salsa20 stream cipher algorithm is designed by Daniel J.
1135           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1136
1137 config CRYPTO_SALSA20_X86_64
1138         tristate "Salsa20 stream cipher algorithm (x86_64)"
1139         depends on (X86 || UML_X86) && 64BIT
1140         select CRYPTO_BLKCIPHER
1141         help
1142           Salsa20 stream cipher algorithm.
1143
1144           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1145           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1146
1147           The Salsa20 stream cipher algorithm is designed by Daniel J.
1148           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1149
1150 config CRYPTO_SEED
1151         tristate "SEED cipher algorithm"
1152         select CRYPTO_ALGAPI
1153         help
1154           SEED cipher algorithm (RFC4269).
1155
1156           SEED is a 128-bit symmetric key block cipher that has been
1157           developed by KISA (Korea Information Security Agency) as a
1158           national standard encryption algorithm of the Republic of Korea.
1159           It is a 16 round block cipher with the key size of 128 bit.
1160
1161           See also:
1162           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1163
1164 config CRYPTO_SERPENT
1165         tristate "Serpent cipher algorithm"
1166         select CRYPTO_ALGAPI
1167         help
1168           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1169
1170           Keys are allowed to be from 0 to 256 bits in length, in steps
1171           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1172           variant of Serpent for compatibility with old kerneli.org code.
1173
1174           See also:
1175           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1176
1177 config CRYPTO_SERPENT_SSE2_X86_64
1178         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1179         depends on X86 && 64BIT
1180         select CRYPTO_ALGAPI
1181         select CRYPTO_CRYPTD
1182         select CRYPTO_ABLK_HELPER
1183         select CRYPTO_GLUE_HELPER_X86
1184         select CRYPTO_SERPENT
1185         select CRYPTO_LRW
1186         select CRYPTO_XTS
1187         help
1188           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1189
1190           Keys are allowed to be from 0 to 256 bits in length, in steps
1191           of 8 bits.
1192
1193           This module provides Serpent cipher algorithm that processes eigth
1194           blocks parallel using SSE2 instruction set.
1195
1196           See also:
1197           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1198
1199 config CRYPTO_SERPENT_SSE2_586
1200         tristate "Serpent cipher algorithm (i586/SSE2)"
1201         depends on X86 && !64BIT
1202         select CRYPTO_ALGAPI
1203         select CRYPTO_CRYPTD
1204         select CRYPTO_ABLK_HELPER
1205         select CRYPTO_GLUE_HELPER_X86
1206         select CRYPTO_SERPENT
1207         select CRYPTO_LRW
1208         select CRYPTO_XTS
1209         help
1210           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1211
1212           Keys are allowed to be from 0 to 256 bits in length, in steps
1213           of 8 bits.
1214
1215           This module provides Serpent cipher algorithm that processes four
1216           blocks parallel using SSE2 instruction set.
1217
1218           See also:
1219           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1220
1221 config CRYPTO_SERPENT_AVX_X86_64
1222         tristate "Serpent cipher algorithm (x86_64/AVX)"
1223         depends on X86 && 64BIT
1224         select CRYPTO_ALGAPI
1225         select CRYPTO_CRYPTD
1226         select CRYPTO_ABLK_HELPER
1227         select CRYPTO_GLUE_HELPER_X86
1228         select CRYPTO_SERPENT
1229         select CRYPTO_LRW
1230         select CRYPTO_XTS
1231         help
1232           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1233
1234           Keys are allowed to be from 0 to 256 bits in length, in steps
1235           of 8 bits.
1236
1237           This module provides the Serpent cipher algorithm that processes
1238           eight blocks parallel using the AVX instruction set.
1239
1240           See also:
1241           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1242
1243 config CRYPTO_SERPENT_AVX2_X86_64
1244         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1245         depends on X86 && 64BIT
1246         select CRYPTO_ALGAPI
1247         select CRYPTO_CRYPTD
1248         select CRYPTO_ABLK_HELPER
1249         select CRYPTO_GLUE_HELPER_X86
1250         select CRYPTO_SERPENT
1251         select CRYPTO_SERPENT_AVX_X86_64
1252         select CRYPTO_LRW
1253         select CRYPTO_XTS
1254         help
1255           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1256
1257           Keys are allowed to be from 0 to 256 bits in length, in steps
1258           of 8 bits.
1259
1260           This module provides Serpent cipher algorithm that processes 16
1261           blocks parallel using AVX2 instruction set.
1262
1263           See also:
1264           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1265
1266 config CRYPTO_TEA
1267         tristate "TEA, XTEA and XETA cipher algorithms"
1268         select CRYPTO_ALGAPI
1269         help
1270           TEA cipher algorithm.
1271
1272           Tiny Encryption Algorithm is a simple cipher that uses
1273           many rounds for security.  It is very fast and uses
1274           little memory.
1275
1276           Xtendend Tiny Encryption Algorithm is a modification to
1277           the TEA algorithm to address a potential key weakness
1278           in the TEA algorithm.
1279
1280           Xtendend Encryption Tiny Algorithm is a mis-implementation
1281           of the XTEA algorithm for compatibility purposes.
1282
1283 config CRYPTO_TWOFISH
1284         tristate "Twofish cipher algorithm"
1285         select CRYPTO_ALGAPI
1286         select CRYPTO_TWOFISH_COMMON
1287         help
1288           Twofish cipher algorithm.
1289
1290           Twofish was submitted as an AES (Advanced Encryption Standard)
1291           candidate cipher by researchers at CounterPane Systems.  It is a
1292           16 round block cipher supporting key sizes of 128, 192, and 256
1293           bits.
1294
1295           See also:
1296           <http://www.schneier.com/twofish.html>
1297
1298 config CRYPTO_TWOFISH_COMMON
1299         tristate
1300         help
1301           Common parts of the Twofish cipher algorithm shared by the
1302           generic c and the assembler implementations.
1303
1304 config CRYPTO_TWOFISH_586
1305         tristate "Twofish cipher algorithms (i586)"
1306         depends on (X86 || UML_X86) && !64BIT
1307         select CRYPTO_ALGAPI
1308         select CRYPTO_TWOFISH_COMMON
1309         help
1310           Twofish cipher algorithm.
1311
1312           Twofish was submitted as an AES (Advanced Encryption Standard)
1313           candidate cipher by researchers at CounterPane Systems.  It is a
1314           16 round block cipher supporting key sizes of 128, 192, and 256
1315           bits.
1316
1317           See also:
1318           <http://www.schneier.com/twofish.html>
1319
1320 config CRYPTO_TWOFISH_X86_64
1321         tristate "Twofish cipher algorithm (x86_64)"
1322         depends on (X86 || UML_X86) && 64BIT
1323         select CRYPTO_ALGAPI
1324         select CRYPTO_TWOFISH_COMMON
1325         help
1326           Twofish cipher algorithm (x86_64).
1327
1328           Twofish was submitted as an AES (Advanced Encryption Standard)
1329           candidate cipher by researchers at CounterPane Systems.  It is a
1330           16 round block cipher supporting key sizes of 128, 192, and 256
1331           bits.
1332
1333           See also:
1334           <http://www.schneier.com/twofish.html>
1335
1336 config CRYPTO_TWOFISH_X86_64_3WAY
1337         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1338         depends on X86 && 64BIT
1339         select CRYPTO_ALGAPI
1340         select CRYPTO_TWOFISH_COMMON
1341         select CRYPTO_TWOFISH_X86_64
1342         select CRYPTO_GLUE_HELPER_X86
1343         select CRYPTO_LRW
1344         select CRYPTO_XTS
1345         help
1346           Twofish cipher algorithm (x86_64, 3-way parallel).
1347
1348           Twofish was submitted as an AES (Advanced Encryption Standard)
1349           candidate cipher by researchers at CounterPane Systems.  It is a
1350           16 round block cipher supporting key sizes of 128, 192, and 256
1351           bits.
1352
1353           This module provides Twofish cipher algorithm that processes three
1354           blocks parallel, utilizing resources of out-of-order CPUs better.
1355
1356           See also:
1357           <http://www.schneier.com/twofish.html>
1358
1359 config CRYPTO_TWOFISH_AVX_X86_64
1360         tristate "Twofish cipher algorithm (x86_64/AVX)"
1361         depends on X86 && 64BIT
1362         select CRYPTO_ALGAPI
1363         select CRYPTO_CRYPTD
1364         select CRYPTO_ABLK_HELPER
1365         select CRYPTO_GLUE_HELPER_X86
1366         select CRYPTO_TWOFISH_COMMON
1367         select CRYPTO_TWOFISH_X86_64
1368         select CRYPTO_TWOFISH_X86_64_3WAY
1369         select CRYPTO_LRW
1370         select CRYPTO_XTS
1371         help
1372           Twofish cipher algorithm (x86_64/AVX).
1373
1374           Twofish was submitted as an AES (Advanced Encryption Standard)
1375           candidate cipher by researchers at CounterPane Systems.  It is a
1376           16 round block cipher supporting key sizes of 128, 192, and 256
1377           bits.
1378
1379           This module provides the Twofish cipher algorithm that processes
1380           eight blocks parallel using the AVX Instruction Set.
1381
1382           See also:
1383           <http://www.schneier.com/twofish.html>
1384
1385 comment "Compression"
1386
1387 config CRYPTO_DEFLATE
1388         tristate "Deflate compression algorithm"
1389         select CRYPTO_ALGAPI
1390         select ZLIB_INFLATE
1391         select ZLIB_DEFLATE
1392         help
1393           This is the Deflate algorithm (RFC1951), specified for use in
1394           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1395
1396           You will most probably want this if using IPSec.
1397
1398 config CRYPTO_ZLIB
1399         tristate "Zlib compression algorithm"
1400         select CRYPTO_PCOMP
1401         select ZLIB_INFLATE
1402         select ZLIB_DEFLATE
1403         select NLATTR
1404         help
1405           This is the zlib algorithm.
1406
1407 config CRYPTO_LZO
1408         tristate "LZO compression algorithm"
1409         select CRYPTO_ALGAPI
1410         select LZO_COMPRESS
1411         select LZO_DECOMPRESS
1412         help
1413           This is the LZO algorithm.
1414
1415 config CRYPTO_842
1416         tristate "842 compression algorithm"
1417         depends on CRYPTO_DEV_NX_COMPRESS
1418         # 842 uses lzo if the hardware becomes unavailable
1419         select LZO_COMPRESS
1420         select LZO_DECOMPRESS
1421         help
1422           This is the 842 algorithm.
1423
1424 config CRYPTO_LZ4
1425         tristate "LZ4 compression algorithm"
1426         select CRYPTO_ALGAPI
1427         select LZ4_COMPRESS
1428         select LZ4_DECOMPRESS
1429         help
1430           This is the LZ4 algorithm.
1431
1432 config CRYPTO_LZ4HC
1433         tristate "LZ4HC compression algorithm"
1434         select CRYPTO_ALGAPI
1435         select LZ4HC_COMPRESS
1436         select LZ4_DECOMPRESS
1437         help
1438           This is the LZ4 high compression mode algorithm.
1439
1440 comment "Random Number Generation"
1441
1442 config CRYPTO_ANSI_CPRNG
1443         tristate "Pseudo Random Number Generation for Cryptographic modules"
1444         default m
1445         select CRYPTO_AES
1446         select CRYPTO_RNG
1447         help
1448           This option enables the generic pseudo random number generator
1449           for cryptographic modules.  Uses the Algorithm specified in
1450           ANSI X9.31 A.2.4. Note that this option must be enabled if
1451           CRYPTO_FIPS is selected
1452
1453 menuconfig CRYPTO_DRBG_MENU
1454         tristate "NIST SP800-90A DRBG"
1455         help
1456           NIST SP800-90A compliant DRBG. In the following submenu, one or
1457           more of the DRBG types must be selected.
1458
1459 if CRYPTO_DRBG_MENU
1460
1461 config CRYPTO_DRBG_HMAC
1462         bool "Enable HMAC DRBG"
1463         default y
1464         select CRYPTO_HMAC
1465         help
1466           Enable the HMAC DRBG variant as defined in NIST SP800-90A.
1467
1468 config CRYPTO_DRBG_HASH
1469         bool "Enable Hash DRBG"
1470         select CRYPTO_HASH
1471         help
1472           Enable the Hash DRBG variant as defined in NIST SP800-90A.
1473
1474 config CRYPTO_DRBG_CTR
1475         bool "Enable CTR DRBG"
1476         select CRYPTO_AES
1477         help
1478           Enable the CTR DRBG variant as defined in NIST SP800-90A.
1479
1480 config CRYPTO_DRBG
1481         tristate
1482         default CRYPTO_DRBG_MENU if (CRYPTO_DRBG_HMAC || CRYPTO_DRBG_HASH || CRYPTO_DRBG_CTR)
1483         select CRYPTO_RNG
1484
1485 endif   # if CRYPTO_DRBG_MENU
1486
1487 config CRYPTO_USER_API
1488         tristate
1489
1490 config CRYPTO_USER_API_HASH
1491         tristate "User-space interface for hash algorithms"
1492         depends on NET
1493         select CRYPTO_HASH
1494         select CRYPTO_USER_API
1495         help
1496           This option enables the user-spaces interface for hash
1497           algorithms.
1498
1499 config CRYPTO_USER_API_SKCIPHER
1500         tristate "User-space interface for symmetric key cipher algorithms"
1501         depends on NET
1502         select CRYPTO_BLKCIPHER
1503         select CRYPTO_USER_API
1504         help
1505           This option enables the user-spaces interface for symmetric
1506           key cipher algorithms.
1507
1508 config CRYPTO_HASH_INFO
1509         bool
1510
1511 source "drivers/crypto/Kconfig"
1512 source crypto/asymmetric_keys/Kconfig
1513
1514 endif   # if CRYPTO