crypto: octeon - enable OCTEON SHA1/256/512 module selection
[linux-2.6-block.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_OCTEON
431         tristate "MD5 digest algorithm (OCTEON)"
432         depends on CPU_CAVIUM_OCTEON
433         select CRYPTO_MD5
434         select CRYPTO_HASH
435         help
436           MD5 message digest algorithm (RFC1321) implemented
437           using OCTEON crypto instructions, when available.
438
439 config CRYPTO_MD5_PPC
440         tristate "MD5 digest algorithm (PPC)"
441         depends on PPC
442         select CRYPTO_HASH
443         help
444           MD5 message digest algorithm (RFC1321) implemented
445           in PPC assembler.
446
447 config CRYPTO_MD5_SPARC64
448         tristate "MD5 digest algorithm (SPARC64)"
449         depends on SPARC64
450         select CRYPTO_MD5
451         select CRYPTO_HASH
452         help
453           MD5 message digest algorithm (RFC1321) implemented
454           using sparc64 crypto instructions, when available.
455
456 config CRYPTO_MICHAEL_MIC
457         tristate "Michael MIC keyed digest algorithm"
458         select CRYPTO_HASH
459         help
460           Michael MIC is used for message integrity protection in TKIP
461           (IEEE 802.11i). This algorithm is required for TKIP, but it
462           should not be used for other purposes because of the weakness
463           of the algorithm.
464
465 config CRYPTO_RMD128
466         tristate "RIPEMD-128 digest algorithm"
467         select CRYPTO_HASH
468         help
469           RIPEMD-128 (ISO/IEC 10118-3:2004).
470
471           RIPEMD-128 is a 128-bit cryptographic hash function. It should only
472           be used as a secure replacement for RIPEMD. For other use cases,
473           RIPEMD-160 should be used.
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_RMD160
479         tristate "RIPEMD-160 digest algorithm"
480         select CRYPTO_HASH
481         help
482           RIPEMD-160 (ISO/IEC 10118-3:2004).
483
484           RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
485           to be used as a secure replacement for the 128-bit hash functions
486           MD4, MD5 and it's predecessor RIPEMD
487           (not to be confused with RIPEMD-128).
488
489           It's speed is comparable to SHA1 and there are no known attacks
490           against RIPEMD-160.
491
492           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
493           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
494
495 config CRYPTO_RMD256
496         tristate "RIPEMD-256 digest algorithm"
497         select CRYPTO_HASH
498         help
499           RIPEMD-256 is an optional extension of RIPEMD-128 with a
500           256 bit hash. It is intended for applications that require
501           longer hash-results, without needing a larger security level
502           (than RIPEMD-128).
503
504           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
505           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
506
507 config CRYPTO_RMD320
508         tristate "RIPEMD-320 digest algorithm"
509         select CRYPTO_HASH
510         help
511           RIPEMD-320 is an optional extension of RIPEMD-160 with a
512           320 bit hash. It is intended for applications that require
513           longer hash-results, without needing a larger security level
514           (than RIPEMD-160).
515
516           Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
517           See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
518
519 config CRYPTO_SHA1
520         tristate "SHA1 digest algorithm"
521         select CRYPTO_HASH
522         help
523           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
524
525 config CRYPTO_SHA1_SSSE3
526         tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2)"
527         depends on X86 && 64BIT
528         select CRYPTO_SHA1
529         select CRYPTO_HASH
530         help
531           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
532           using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
533           Extensions (AVX/AVX2), when available.
534
535 config CRYPTO_SHA256_SSSE3
536         tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2)"
537         depends on X86 && 64BIT
538         select CRYPTO_SHA256
539         select CRYPTO_HASH
540         help
541           SHA-256 secure hash standard (DFIPS 180-2) implemented
542           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
543           Extensions version 1 (AVX1), or Advanced Vector Extensions
544           version 2 (AVX2) instructions, when available.
545
546 config CRYPTO_SHA512_SSSE3
547         tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
548         depends on X86 && 64BIT
549         select CRYPTO_SHA512
550         select CRYPTO_HASH
551         help
552           SHA-512 secure hash standard (DFIPS 180-2) implemented
553           using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
554           Extensions version 1 (AVX1), or Advanced Vector Extensions
555           version 2 (AVX2) instructions, when available.
556
557 config CRYPTO_SHA1_OCTEON
558         tristate "SHA1 digest algorithm (OCTEON)"
559         depends on CPU_CAVIUM_OCTEON
560         select CRYPTO_SHA1
561         select CRYPTO_HASH
562         help
563           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
564           using OCTEON crypto instructions, when available.
565
566 config CRYPTO_SHA1_SPARC64
567         tristate "SHA1 digest algorithm (SPARC64)"
568         depends on SPARC64
569         select CRYPTO_SHA1
570         select CRYPTO_HASH
571         help
572           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
573           using sparc64 crypto instructions, when available.
574
575 config CRYPTO_SHA1_ARM
576         tristate "SHA1 digest algorithm (ARM-asm)"
577         depends on ARM
578         select CRYPTO_SHA1
579         select CRYPTO_HASH
580         help
581           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
582           using optimized ARM assembler.
583
584 config CRYPTO_SHA1_ARM_NEON
585         tristate "SHA1 digest algorithm (ARM NEON)"
586         depends on ARM && KERNEL_MODE_NEON
587         select CRYPTO_SHA1_ARM
588         select CRYPTO_SHA1
589         select CRYPTO_HASH
590         help
591           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
592           using optimized ARM NEON assembly, when NEON instructions are
593           available.
594
595 config CRYPTO_SHA1_PPC
596         tristate "SHA1 digest algorithm (powerpc)"
597         depends on PPC
598         help
599           This is the powerpc hardware accelerated implementation of the
600           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
601
602 config CRYPTO_SHA1_PPC_SPE
603         tristate "SHA1 digest algorithm (PPC SPE)"
604         depends on PPC && SPE
605         help
606           SHA-1 secure hash standard (DFIPS 180-4) implemented
607           using powerpc SPE SIMD instruction set.
608
609 config CRYPTO_SHA1_MB
610         tristate "SHA1 digest algorithm (x86_64 Multi-Buffer, Experimental)"
611         depends on X86 && 64BIT
612         select CRYPTO_SHA1
613         select CRYPTO_HASH
614         select CRYPTO_MCRYPTD
615         help
616           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
617           using multi-buffer technique.  This algorithm computes on
618           multiple data lanes concurrently with SIMD instructions for
619           better throughput.  It should not be enabled by default but
620           used when there is significant amount of work to keep the keep
621           the data lanes filled to get performance benefit.  If the data
622           lanes remain unfilled, a flush operation will be initiated to
623           process the crypto jobs, adding a slight latency.
624
625 config CRYPTO_SHA256
626         tristate "SHA224 and SHA256 digest algorithm"
627         select CRYPTO_HASH
628         help
629           SHA256 secure hash standard (DFIPS 180-2).
630
631           This version of SHA implements a 256 bit hash with 128 bits of
632           security against collision attacks.
633
634           This code also includes SHA-224, a 224 bit hash with 112 bits
635           of security against collision attacks.
636
637 config CRYPTO_SHA256_PPC_SPE
638         tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
639         depends on PPC && SPE
640         select CRYPTO_SHA256
641         select CRYPTO_HASH
642         help
643           SHA224 and SHA256 secure hash standard (DFIPS 180-2)
644           implemented using powerpc SPE SIMD instruction set.
645
646 config CRYPTO_SHA256_OCTEON
647         tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
648         depends on CPU_CAVIUM_OCTEON
649         select CRYPTO_SHA256
650         select CRYPTO_HASH
651         help
652           SHA-256 secure hash standard (DFIPS 180-2) implemented
653           using OCTEON crypto instructions, when available.
654
655 config CRYPTO_SHA256_SPARC64
656         tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
657         depends on SPARC64
658         select CRYPTO_SHA256
659         select CRYPTO_HASH
660         help
661           SHA-256 secure hash standard (DFIPS 180-2) implemented
662           using sparc64 crypto instructions, when available.
663
664 config CRYPTO_SHA512
665         tristate "SHA384 and SHA512 digest algorithms"
666         select CRYPTO_HASH
667         help
668           SHA512 secure hash standard (DFIPS 180-2).
669
670           This version of SHA implements a 512 bit hash with 256 bits of
671           security against collision attacks.
672
673           This code also includes SHA-384, a 384 bit hash with 192 bits
674           of security against collision attacks.
675
676 config CRYPTO_SHA512_OCTEON
677         tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
678         depends on CPU_CAVIUM_OCTEON
679         select CRYPTO_SHA512
680         select CRYPTO_HASH
681         help
682           SHA-512 secure hash standard (DFIPS 180-2) implemented
683           using OCTEON crypto instructions, when available.
684
685 config CRYPTO_SHA512_SPARC64
686         tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
687         depends on SPARC64
688         select CRYPTO_SHA512
689         select CRYPTO_HASH
690         help
691           SHA-512 secure hash standard (DFIPS 180-2) implemented
692           using sparc64 crypto instructions, when available.
693
694 config CRYPTO_SHA512_ARM_NEON
695         tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
696         depends on ARM && KERNEL_MODE_NEON
697         select CRYPTO_SHA512
698         select CRYPTO_HASH
699         help
700           SHA-512 secure hash standard (DFIPS 180-2) implemented
701           using ARM NEON instructions, when available.
702
703           This version of SHA implements a 512 bit hash with 256 bits of
704           security against collision attacks.
705
706           This code also includes SHA-384, a 384 bit hash with 192 bits
707           of security against collision attacks.
708
709 config CRYPTO_TGR192
710         tristate "Tiger digest algorithms"
711         select CRYPTO_HASH
712         help
713           Tiger hash algorithm 192, 160 and 128-bit hashes
714
715           Tiger is a hash function optimized for 64-bit processors while
716           still having decent performance on 32-bit processors.
717           Tiger was developed by Ross Anderson and Eli Biham.
718
719           See also:
720           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
721
722 config CRYPTO_WP512
723         tristate "Whirlpool digest algorithms"
724         select CRYPTO_HASH
725         help
726           Whirlpool hash algorithm 512, 384 and 256-bit hashes
727
728           Whirlpool-512 is part of the NESSIE cryptographic primitives.
729           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
730
731           See also:
732           <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
733
734 config CRYPTO_GHASH_CLMUL_NI_INTEL
735         tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
736         depends on X86 && 64BIT
737         select CRYPTO_CRYPTD
738         help
739           GHASH is message digest algorithm for GCM (Galois/Counter Mode).
740           The implementation is accelerated by CLMUL-NI of Intel.
741
742 comment "Ciphers"
743
744 config CRYPTO_AES
745         tristate "AES cipher algorithms"
746         select CRYPTO_ALGAPI
747         help
748           AES cipher algorithms (FIPS-197). AES uses the Rijndael
749           algorithm.
750
751           Rijndael appears to be consistently a very good performer in
752           both hardware and software across a wide range of computing
753           environments regardless of its use in feedback or non-feedback
754           modes. Its key setup time is excellent, and its key agility is
755           good. Rijndael's very low memory requirements make it very well
756           suited for restricted-space environments, in which it also
757           demonstrates excellent performance. Rijndael's operations are
758           among the easiest to defend against power and timing attacks.
759
760           The AES specifies three key sizes: 128, 192 and 256 bits
761
762           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
763
764 config CRYPTO_AES_586
765         tristate "AES cipher algorithms (i586)"
766         depends on (X86 || UML_X86) && !64BIT
767         select CRYPTO_ALGAPI
768         select CRYPTO_AES
769         help
770           AES cipher algorithms (FIPS-197). AES uses the Rijndael
771           algorithm.
772
773           Rijndael appears to be consistently a very good performer in
774           both hardware and software across a wide range of computing
775           environments regardless of its use in feedback or non-feedback
776           modes. Its key setup time is excellent, and its key agility is
777           good. Rijndael's very low memory requirements make it very well
778           suited for restricted-space environments, in which it also
779           demonstrates excellent performance. Rijndael's operations are
780           among the easiest to defend against power and timing attacks.
781
782           The AES specifies three key sizes: 128, 192 and 256 bits
783
784           See <http://csrc.nist.gov/encryption/aes/> for more information.
785
786 config CRYPTO_AES_X86_64
787         tristate "AES cipher algorithms (x86_64)"
788         depends on (X86 || UML_X86) && 64BIT
789         select CRYPTO_ALGAPI
790         select CRYPTO_AES
791         help
792           AES cipher algorithms (FIPS-197). AES uses the Rijndael
793           algorithm.
794
795           Rijndael appears to be consistently a very good performer in
796           both hardware and software across a wide range of computing
797           environments regardless of its use in feedback or non-feedback
798           modes. Its key setup time is excellent, and its key agility is
799           good. Rijndael's very low memory requirements make it very well
800           suited for restricted-space environments, in which it also
801           demonstrates excellent performance. Rijndael's operations are
802           among the easiest to defend against power and timing attacks.
803
804           The AES specifies three key sizes: 128, 192 and 256 bits
805
806           See <http://csrc.nist.gov/encryption/aes/> for more information.
807
808 config CRYPTO_AES_NI_INTEL
809         tristate "AES cipher algorithms (AES-NI)"
810         depends on X86
811         select CRYPTO_AES_X86_64 if 64BIT
812         select CRYPTO_AES_586 if !64BIT
813         select CRYPTO_CRYPTD
814         select CRYPTO_ABLK_HELPER
815         select CRYPTO_ALGAPI
816         select CRYPTO_GLUE_HELPER_X86 if 64BIT
817         select CRYPTO_LRW
818         select CRYPTO_XTS
819         help
820           Use Intel AES-NI instructions for AES algorithm.
821
822           AES cipher algorithms (FIPS-197). AES uses the Rijndael
823           algorithm.
824
825           Rijndael appears to be consistently a very good performer in
826           both hardware and software across a wide range of computing
827           environments regardless of its use in feedback or non-feedback
828           modes. Its key setup time is excellent, and its key agility is
829           good. Rijndael's very low memory requirements make it very well
830           suited for restricted-space environments, in which it also
831           demonstrates excellent performance. Rijndael's operations are
832           among the easiest to defend against power and timing attacks.
833
834           The AES specifies three key sizes: 128, 192 and 256 bits
835
836           See <http://csrc.nist.gov/encryption/aes/> for more information.
837
838           In addition to AES cipher algorithm support, the acceleration
839           for some popular block cipher mode is supported too, including
840           ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
841           acceleration for CTR.
842
843 config CRYPTO_AES_SPARC64
844         tristate "AES cipher algorithms (SPARC64)"
845         depends on SPARC64
846         select CRYPTO_CRYPTD
847         select CRYPTO_ALGAPI
848         help
849           Use SPARC64 crypto opcodes for AES algorithm.
850
851           AES cipher algorithms (FIPS-197). AES uses the Rijndael
852           algorithm.
853
854           Rijndael appears to be consistently a very good performer in
855           both hardware and software across a wide range of computing
856           environments regardless of its use in feedback or non-feedback
857           modes. Its key setup time is excellent, and its key agility is
858           good. Rijndael's very low memory requirements make it very well
859           suited for restricted-space environments, in which it also
860           demonstrates excellent performance. Rijndael's operations are
861           among the easiest to defend against power and timing attacks.
862
863           The AES specifies three key sizes: 128, 192 and 256 bits
864
865           See <http://csrc.nist.gov/encryption/aes/> for more information.
866
867           In addition to AES cipher algorithm support, the acceleration
868           for some popular block cipher mode is supported too, including
869           ECB and CBC.
870
871 config CRYPTO_AES_ARM
872         tristate "AES cipher algorithms (ARM-asm)"
873         depends on ARM
874         select CRYPTO_ALGAPI
875         select CRYPTO_AES
876         help
877           Use optimized AES assembler routines for ARM platforms.
878
879           AES cipher algorithms (FIPS-197). AES uses the Rijndael
880           algorithm.
881
882           Rijndael appears to be consistently a very good performer in
883           both hardware and software across a wide range of computing
884           environments regardless of its use in feedback or non-feedback
885           modes. Its key setup time is excellent, and its key agility is
886           good. Rijndael's very low memory requirements make it very well
887           suited for restricted-space environments, in which it also
888           demonstrates excellent performance. Rijndael's operations are
889           among the easiest to defend against power and timing attacks.
890
891           The AES specifies three key sizes: 128, 192 and 256 bits
892
893           See <http://csrc.nist.gov/encryption/aes/> for more information.
894
895 config CRYPTO_AES_ARM_BS
896         tristate "Bit sliced AES using NEON instructions"
897         depends on ARM && KERNEL_MODE_NEON
898         select CRYPTO_ALGAPI
899         select CRYPTO_AES_ARM
900         select CRYPTO_ABLK_HELPER
901         help
902           Use a faster and more secure NEON based implementation of AES in CBC,
903           CTR and XTS modes
904
905           Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
906           and for XTS mode encryption, CBC and XTS mode decryption speedup is
907           around 25%. (CBC encryption speed is not affected by this driver.)
908           This implementation does not rely on any lookup tables so it is
909           believed to be invulnerable to cache timing attacks.
910
911 config CRYPTO_AES_PPC_SPE
912         tristate "AES cipher algorithms (PPC SPE)"
913         depends on PPC && SPE
914         help
915           AES cipher algorithms (FIPS-197). Additionally the acceleration
916           for popular block cipher modes ECB, CBC, CTR and XTS is supported.
917           This module should only be used for low power (router) devices
918           without hardware AES acceleration (e.g. caam crypto). It reduces the
919           size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
920           timining attacks. Nevertheless it might be not as secure as other
921           architecture specific assembler implementations that work on 1KB
922           tables or 256 bytes S-boxes.
923
924 config CRYPTO_ANUBIS
925         tristate "Anubis cipher algorithm"
926         select CRYPTO_ALGAPI
927         help
928           Anubis cipher algorithm.
929
930           Anubis is a variable key length cipher which can use keys from
931           128 bits to 320 bits in length.  It was evaluated as a entrant
932           in the NESSIE competition.
933
934           See also:
935           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
936           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
937
938 config CRYPTO_ARC4
939         tristate "ARC4 cipher algorithm"
940         select CRYPTO_BLKCIPHER
941         help
942           ARC4 cipher algorithm.
943
944           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
945           bits in length.  This algorithm is required for driver-based
946           WEP, but it should not be for other purposes because of the
947           weakness of the algorithm.
948
949 config CRYPTO_BLOWFISH
950         tristate "Blowfish cipher algorithm"
951         select CRYPTO_ALGAPI
952         select CRYPTO_BLOWFISH_COMMON
953         help
954           Blowfish cipher algorithm, by Bruce Schneier.
955
956           This is a variable key length cipher which can use keys from 32
957           bits to 448 bits in length.  It's fast, simple and specifically
958           designed for use on "large microprocessors".
959
960           See also:
961           <http://www.schneier.com/blowfish.html>
962
963 config CRYPTO_BLOWFISH_COMMON
964         tristate
965         help
966           Common parts of the Blowfish cipher algorithm shared by the
967           generic c and the assembler implementations.
968
969           See also:
970           <http://www.schneier.com/blowfish.html>
971
972 config CRYPTO_BLOWFISH_X86_64
973         tristate "Blowfish cipher algorithm (x86_64)"
974         depends on X86 && 64BIT
975         select CRYPTO_ALGAPI
976         select CRYPTO_BLOWFISH_COMMON
977         help
978           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
979
980           This is a variable key length cipher which can use keys from 32
981           bits to 448 bits in length.  It's fast, simple and specifically
982           designed for use on "large microprocessors".
983
984           See also:
985           <http://www.schneier.com/blowfish.html>
986
987 config CRYPTO_CAMELLIA
988         tristate "Camellia cipher algorithms"
989         depends on CRYPTO
990         select CRYPTO_ALGAPI
991         help
992           Camellia cipher algorithms module.
993
994           Camellia is a symmetric key block cipher developed jointly
995           at NTT and Mitsubishi Electric Corporation.
996
997           The Camellia specifies three key sizes: 128, 192 and 256 bits.
998
999           See also:
1000           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1001
1002 config CRYPTO_CAMELLIA_X86_64
1003         tristate "Camellia cipher algorithm (x86_64)"
1004         depends on X86 && 64BIT
1005         depends on CRYPTO
1006         select CRYPTO_ALGAPI
1007         select CRYPTO_GLUE_HELPER_X86
1008         select CRYPTO_LRW
1009         select CRYPTO_XTS
1010         help
1011           Camellia cipher algorithm module (x86_64).
1012
1013           Camellia is a symmetric key block cipher developed jointly
1014           at NTT and Mitsubishi Electric Corporation.
1015
1016           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1017
1018           See also:
1019           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1020
1021 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1022         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1023         depends on X86 && 64BIT
1024         depends on CRYPTO
1025         select CRYPTO_ALGAPI
1026         select CRYPTO_CRYPTD
1027         select CRYPTO_ABLK_HELPER
1028         select CRYPTO_GLUE_HELPER_X86
1029         select CRYPTO_CAMELLIA_X86_64
1030         select CRYPTO_LRW
1031         select CRYPTO_XTS
1032         help
1033           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1034
1035           Camellia is a symmetric key block cipher developed jointly
1036           at NTT and Mitsubishi Electric Corporation.
1037
1038           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1039
1040           See also:
1041           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1042
1043 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1044         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1045         depends on X86 && 64BIT
1046         depends on CRYPTO
1047         select CRYPTO_ALGAPI
1048         select CRYPTO_CRYPTD
1049         select CRYPTO_ABLK_HELPER
1050         select CRYPTO_GLUE_HELPER_X86
1051         select CRYPTO_CAMELLIA_X86_64
1052         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1053         select CRYPTO_LRW
1054         select CRYPTO_XTS
1055         help
1056           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1057
1058           Camellia is a symmetric key block cipher developed jointly
1059           at NTT and Mitsubishi Electric Corporation.
1060
1061           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1062
1063           See also:
1064           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1065
1066 config CRYPTO_CAMELLIA_SPARC64
1067         tristate "Camellia cipher algorithm (SPARC64)"
1068         depends on SPARC64
1069         depends on CRYPTO
1070         select CRYPTO_ALGAPI
1071         help
1072           Camellia cipher algorithm module (SPARC64).
1073
1074           Camellia is a symmetric key block cipher developed jointly
1075           at NTT and Mitsubishi Electric Corporation.
1076
1077           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1078
1079           See also:
1080           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1081
1082 config CRYPTO_CAST_COMMON
1083         tristate
1084         help
1085           Common parts of the CAST cipher algorithms shared by the
1086           generic c and the assembler implementations.
1087
1088 config CRYPTO_CAST5
1089         tristate "CAST5 (CAST-128) cipher algorithm"
1090         select CRYPTO_ALGAPI
1091         select CRYPTO_CAST_COMMON
1092         help
1093           The CAST5 encryption algorithm (synonymous with CAST-128) is
1094           described in RFC2144.
1095
1096 config CRYPTO_CAST5_AVX_X86_64
1097         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1098         depends on X86 && 64BIT
1099         select CRYPTO_ALGAPI
1100         select CRYPTO_CRYPTD
1101         select CRYPTO_ABLK_HELPER
1102         select CRYPTO_CAST_COMMON
1103         select CRYPTO_CAST5
1104         help
1105           The CAST5 encryption algorithm (synonymous with CAST-128) is
1106           described in RFC2144.
1107
1108           This module provides the Cast5 cipher algorithm that processes
1109           sixteen blocks parallel using the AVX instruction set.
1110
1111 config CRYPTO_CAST6
1112         tristate "CAST6 (CAST-256) cipher algorithm"
1113         select CRYPTO_ALGAPI
1114         select CRYPTO_CAST_COMMON
1115         help
1116           The CAST6 encryption algorithm (synonymous with CAST-256) is
1117           described in RFC2612.
1118
1119 config CRYPTO_CAST6_AVX_X86_64
1120         tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1121         depends on X86 && 64BIT
1122         select CRYPTO_ALGAPI
1123         select CRYPTO_CRYPTD
1124         select CRYPTO_ABLK_HELPER
1125         select CRYPTO_GLUE_HELPER_X86
1126         select CRYPTO_CAST_COMMON
1127         select CRYPTO_CAST6
1128         select CRYPTO_LRW
1129         select CRYPTO_XTS
1130         help
1131           The CAST6 encryption algorithm (synonymous with CAST-256) is
1132           described in RFC2612.
1133
1134           This module provides the Cast6 cipher algorithm that processes
1135           eight blocks parallel using the AVX instruction set.
1136
1137 config CRYPTO_DES
1138         tristate "DES and Triple DES EDE cipher algorithms"
1139         select CRYPTO_ALGAPI
1140         help
1141           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1142
1143 config CRYPTO_DES_SPARC64
1144         tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1145         depends on SPARC64
1146         select CRYPTO_ALGAPI
1147         select CRYPTO_DES
1148         help
1149           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1150           optimized using SPARC64 crypto opcodes.
1151
1152 config CRYPTO_DES3_EDE_X86_64
1153         tristate "Triple DES EDE cipher algorithm (x86-64)"
1154         depends on X86 && 64BIT
1155         select CRYPTO_ALGAPI
1156         select CRYPTO_DES
1157         help
1158           Triple DES EDE (FIPS 46-3) algorithm.
1159
1160           This module provides implementation of the Triple DES EDE cipher
1161           algorithm that is optimized for x86-64 processors. Two versions of
1162           algorithm are provided; regular processing one input block and
1163           one that processes three blocks parallel.
1164
1165 config CRYPTO_FCRYPT
1166         tristate "FCrypt cipher algorithm"
1167         select CRYPTO_ALGAPI
1168         select CRYPTO_BLKCIPHER
1169         help
1170           FCrypt algorithm used by RxRPC.
1171
1172 config CRYPTO_KHAZAD
1173         tristate "Khazad cipher algorithm"
1174         select CRYPTO_ALGAPI
1175         help
1176           Khazad cipher algorithm.
1177
1178           Khazad was a finalist in the initial NESSIE competition.  It is
1179           an algorithm optimized for 64-bit processors with good performance
1180           on 32-bit processors.  Khazad uses an 128 bit key size.
1181
1182           See also:
1183           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1184
1185 config CRYPTO_SALSA20
1186         tristate "Salsa20 stream cipher algorithm"
1187         select CRYPTO_BLKCIPHER
1188         help
1189           Salsa20 stream cipher algorithm.
1190
1191           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1192           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1193
1194           The Salsa20 stream cipher algorithm is designed by Daniel J.
1195           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1196
1197 config CRYPTO_SALSA20_586
1198         tristate "Salsa20 stream cipher algorithm (i586)"
1199         depends on (X86 || UML_X86) && !64BIT
1200         select CRYPTO_BLKCIPHER
1201         help
1202           Salsa20 stream cipher algorithm.
1203
1204           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1205           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1206
1207           The Salsa20 stream cipher algorithm is designed by Daniel J.
1208           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1209
1210 config CRYPTO_SALSA20_X86_64
1211         tristate "Salsa20 stream cipher algorithm (x86_64)"
1212         depends on (X86 || UML_X86) && 64BIT
1213         select CRYPTO_BLKCIPHER
1214         help
1215           Salsa20 stream cipher algorithm.
1216
1217           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1218           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1219
1220           The Salsa20 stream cipher algorithm is designed by Daniel J.
1221           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1222
1223 config CRYPTO_SEED
1224         tristate "SEED cipher algorithm"
1225         select CRYPTO_ALGAPI
1226         help
1227           SEED cipher algorithm (RFC4269).
1228
1229           SEED is a 128-bit symmetric key block cipher that has been
1230           developed by KISA (Korea Information Security Agency) as a
1231           national standard encryption algorithm of the Republic of Korea.
1232           It is a 16 round block cipher with the key size of 128 bit.
1233
1234           See also:
1235           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1236
1237 config CRYPTO_SERPENT
1238         tristate "Serpent cipher algorithm"
1239         select CRYPTO_ALGAPI
1240         help
1241           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1242
1243           Keys are allowed to be from 0 to 256 bits in length, in steps
1244           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1245           variant of Serpent for compatibility with old kerneli.org code.
1246
1247           See also:
1248           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1249
1250 config CRYPTO_SERPENT_SSE2_X86_64
1251         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1252         depends on X86 && 64BIT
1253         select CRYPTO_ALGAPI
1254         select CRYPTO_CRYPTD
1255         select CRYPTO_ABLK_HELPER
1256         select CRYPTO_GLUE_HELPER_X86
1257         select CRYPTO_SERPENT
1258         select CRYPTO_LRW
1259         select CRYPTO_XTS
1260         help
1261           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1262
1263           Keys are allowed to be from 0 to 256 bits in length, in steps
1264           of 8 bits.
1265
1266           This module provides Serpent cipher algorithm that processes eigth
1267           blocks parallel using SSE2 instruction set.
1268
1269           See also:
1270           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1271
1272 config CRYPTO_SERPENT_SSE2_586
1273         tristate "Serpent cipher algorithm (i586/SSE2)"
1274         depends on X86 && !64BIT
1275         select CRYPTO_ALGAPI
1276         select CRYPTO_CRYPTD
1277         select CRYPTO_ABLK_HELPER
1278         select CRYPTO_GLUE_HELPER_X86
1279         select CRYPTO_SERPENT
1280         select CRYPTO_LRW
1281         select CRYPTO_XTS
1282         help
1283           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1284
1285           Keys are allowed to be from 0 to 256 bits in length, in steps
1286           of 8 bits.
1287
1288           This module provides Serpent cipher algorithm that processes four
1289           blocks parallel using SSE2 instruction set.
1290
1291           See also:
1292           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1293
1294 config CRYPTO_SERPENT_AVX_X86_64
1295         tristate "Serpent cipher algorithm (x86_64/AVX)"
1296         depends on X86 && 64BIT
1297         select CRYPTO_ALGAPI
1298         select CRYPTO_CRYPTD
1299         select CRYPTO_ABLK_HELPER
1300         select CRYPTO_GLUE_HELPER_X86
1301         select CRYPTO_SERPENT
1302         select CRYPTO_LRW
1303         select CRYPTO_XTS
1304         help
1305           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1306
1307           Keys are allowed to be from 0 to 256 bits in length, in steps
1308           of 8 bits.
1309
1310           This module provides the Serpent cipher algorithm that processes
1311           eight blocks parallel using the AVX instruction set.
1312
1313           See also:
1314           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1315
1316 config CRYPTO_SERPENT_AVX2_X86_64
1317         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1318         depends on X86 && 64BIT
1319         select CRYPTO_ALGAPI
1320         select CRYPTO_CRYPTD
1321         select CRYPTO_ABLK_HELPER
1322         select CRYPTO_GLUE_HELPER_X86
1323         select CRYPTO_SERPENT
1324         select CRYPTO_SERPENT_AVX_X86_64
1325         select CRYPTO_LRW
1326         select CRYPTO_XTS
1327         help
1328           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1329
1330           Keys are allowed to be from 0 to 256 bits in length, in steps
1331           of 8 bits.
1332
1333           This module provides Serpent cipher algorithm that processes 16
1334           blocks parallel using AVX2 instruction set.
1335
1336           See also:
1337           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1338
1339 config CRYPTO_TEA
1340         tristate "TEA, XTEA and XETA cipher algorithms"
1341         select CRYPTO_ALGAPI
1342         help
1343           TEA cipher algorithm.
1344
1345           Tiny Encryption Algorithm is a simple cipher that uses
1346           many rounds for security.  It is very fast and uses
1347           little memory.
1348
1349           Xtendend Tiny Encryption Algorithm is a modification to
1350           the TEA algorithm to address a potential key weakness
1351           in the TEA algorithm.
1352
1353           Xtendend Encryption Tiny Algorithm is a mis-implementation
1354           of the XTEA algorithm for compatibility purposes.
1355
1356 config CRYPTO_TWOFISH
1357         tristate "Twofish cipher algorithm"
1358         select CRYPTO_ALGAPI
1359         select CRYPTO_TWOFISH_COMMON
1360         help
1361           Twofish cipher algorithm.
1362
1363           Twofish was submitted as an AES (Advanced Encryption Standard)
1364           candidate cipher by researchers at CounterPane Systems.  It is a
1365           16 round block cipher supporting key sizes of 128, 192, and 256
1366           bits.
1367
1368           See also:
1369           <http://www.schneier.com/twofish.html>
1370
1371 config CRYPTO_TWOFISH_COMMON
1372         tristate
1373         help
1374           Common parts of the Twofish cipher algorithm shared by the
1375           generic c and the assembler implementations.
1376
1377 config CRYPTO_TWOFISH_586
1378         tristate "Twofish cipher algorithms (i586)"
1379         depends on (X86 || UML_X86) && !64BIT
1380         select CRYPTO_ALGAPI
1381         select CRYPTO_TWOFISH_COMMON
1382         help
1383           Twofish cipher algorithm.
1384
1385           Twofish was submitted as an AES (Advanced Encryption Standard)
1386           candidate cipher by researchers at CounterPane Systems.  It is a
1387           16 round block cipher supporting key sizes of 128, 192, and 256
1388           bits.
1389
1390           See also:
1391           <http://www.schneier.com/twofish.html>
1392
1393 config CRYPTO_TWOFISH_X86_64
1394         tristate "Twofish cipher algorithm (x86_64)"
1395         depends on (X86 || UML_X86) && 64BIT
1396         select CRYPTO_ALGAPI
1397         select CRYPTO_TWOFISH_COMMON
1398         help
1399           Twofish cipher algorithm (x86_64).
1400
1401           Twofish was submitted as an AES (Advanced Encryption Standard)
1402           candidate cipher by researchers at CounterPane Systems.  It is a
1403           16 round block cipher supporting key sizes of 128, 192, and 256
1404           bits.
1405
1406           See also:
1407           <http://www.schneier.com/twofish.html>
1408
1409 config CRYPTO_TWOFISH_X86_64_3WAY
1410         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1411         depends on X86 && 64BIT
1412         select CRYPTO_ALGAPI
1413         select CRYPTO_TWOFISH_COMMON
1414         select CRYPTO_TWOFISH_X86_64
1415         select CRYPTO_GLUE_HELPER_X86
1416         select CRYPTO_LRW
1417         select CRYPTO_XTS
1418         help
1419           Twofish cipher algorithm (x86_64, 3-way parallel).
1420
1421           Twofish was submitted as an AES (Advanced Encryption Standard)
1422           candidate cipher by researchers at CounterPane Systems.  It is a
1423           16 round block cipher supporting key sizes of 128, 192, and 256
1424           bits.
1425
1426           This module provides Twofish cipher algorithm that processes three
1427           blocks parallel, utilizing resources of out-of-order CPUs better.
1428
1429           See also:
1430           <http://www.schneier.com/twofish.html>
1431
1432 config CRYPTO_TWOFISH_AVX_X86_64
1433         tristate "Twofish cipher algorithm (x86_64/AVX)"
1434         depends on X86 && 64BIT
1435         select CRYPTO_ALGAPI
1436         select CRYPTO_CRYPTD
1437         select CRYPTO_ABLK_HELPER
1438         select CRYPTO_GLUE_HELPER_X86
1439         select CRYPTO_TWOFISH_COMMON
1440         select CRYPTO_TWOFISH_X86_64
1441         select CRYPTO_TWOFISH_X86_64_3WAY
1442         select CRYPTO_LRW
1443         select CRYPTO_XTS
1444         help
1445           Twofish cipher algorithm (x86_64/AVX).
1446
1447           Twofish was submitted as an AES (Advanced Encryption Standard)
1448           candidate cipher by researchers at CounterPane Systems.  It is a
1449           16 round block cipher supporting key sizes of 128, 192, and 256
1450           bits.
1451
1452           This module provides the Twofish cipher algorithm that processes
1453           eight blocks parallel using the AVX Instruction Set.
1454
1455           See also:
1456           <http://www.schneier.com/twofish.html>
1457
1458 comment "Compression"
1459
1460 config CRYPTO_DEFLATE
1461         tristate "Deflate compression algorithm"
1462         select CRYPTO_ALGAPI
1463         select ZLIB_INFLATE
1464         select ZLIB_DEFLATE
1465         help
1466           This is the Deflate algorithm (RFC1951), specified for use in
1467           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1468
1469           You will most probably want this if using IPSec.
1470
1471 config CRYPTO_ZLIB
1472         tristate "Zlib compression algorithm"
1473         select CRYPTO_PCOMP
1474         select ZLIB_INFLATE
1475         select ZLIB_DEFLATE
1476         select NLATTR
1477         help
1478           This is the zlib algorithm.
1479
1480 config CRYPTO_LZO
1481         tristate "LZO compression algorithm"
1482         select CRYPTO_ALGAPI
1483         select LZO_COMPRESS
1484         select LZO_DECOMPRESS
1485         help
1486           This is the LZO algorithm.
1487
1488 config CRYPTO_842
1489         tristate "842 compression algorithm"
1490         depends on CRYPTO_DEV_NX_COMPRESS
1491         # 842 uses lzo if the hardware becomes unavailable
1492         select LZO_COMPRESS
1493         select LZO_DECOMPRESS
1494         help
1495           This is the 842 algorithm.
1496
1497 config CRYPTO_LZ4
1498         tristate "LZ4 compression algorithm"
1499         select CRYPTO_ALGAPI
1500         select LZ4_COMPRESS
1501         select LZ4_DECOMPRESS
1502         help
1503           This is the LZ4 algorithm.
1504
1505 config CRYPTO_LZ4HC
1506         tristate "LZ4HC compression algorithm"
1507         select CRYPTO_ALGAPI
1508         select LZ4HC_COMPRESS
1509         select LZ4_DECOMPRESS
1510         help
1511           This is the LZ4 high compression mode algorithm.
1512
1513 comment "Random Number Generation"
1514
1515 config CRYPTO_ANSI_CPRNG
1516         tristate "Pseudo Random Number Generation for Cryptographic modules"
1517         default m
1518         select CRYPTO_AES
1519         select CRYPTO_RNG
1520         help
1521           This option enables the generic pseudo random number generator
1522           for cryptographic modules.  Uses the Algorithm specified in
1523           ANSI X9.31 A.2.4. Note that this option must be enabled if
1524           CRYPTO_FIPS is selected
1525
1526 menuconfig CRYPTO_DRBG_MENU
1527         tristate "NIST SP800-90A DRBG"
1528         help
1529           NIST SP800-90A compliant DRBG. In the following submenu, one or
1530           more of the DRBG types must be selected.
1531
1532 if CRYPTO_DRBG_MENU
1533
1534 config CRYPTO_DRBG_HMAC
1535         bool "Enable HMAC DRBG"
1536         default y
1537         select CRYPTO_HMAC
1538         help
1539           Enable the HMAC DRBG variant as defined in NIST SP800-90A.
1540
1541 config CRYPTO_DRBG_HASH
1542         bool "Enable Hash DRBG"
1543         select CRYPTO_HASH
1544         help
1545           Enable the Hash DRBG variant as defined in NIST SP800-90A.
1546
1547 config CRYPTO_DRBG_CTR
1548         bool "Enable CTR DRBG"
1549         select CRYPTO_AES
1550         help
1551           Enable the CTR DRBG variant as defined in NIST SP800-90A.
1552
1553 config CRYPTO_DRBG
1554         tristate
1555         default CRYPTO_DRBG_MENU if (CRYPTO_DRBG_HMAC || CRYPTO_DRBG_HASH || CRYPTO_DRBG_CTR)
1556         select CRYPTO_RNG
1557
1558 endif   # if CRYPTO_DRBG_MENU
1559
1560 config CRYPTO_USER_API
1561         tristate
1562
1563 config CRYPTO_USER_API_HASH
1564         tristate "User-space interface for hash algorithms"
1565         depends on NET
1566         select CRYPTO_HASH
1567         select CRYPTO_USER_API
1568         help
1569           This option enables the user-spaces interface for hash
1570           algorithms.
1571
1572 config CRYPTO_USER_API_SKCIPHER
1573         tristate "User-space interface for symmetric key cipher algorithms"
1574         depends on NET
1575         select CRYPTO_BLKCIPHER
1576         select CRYPTO_USER_API
1577         help
1578           This option enables the user-spaces interface for symmetric
1579           key cipher algorithms.
1580
1581 config CRYPTO_USER_API_RNG
1582         tristate "User-space interface for random number generator algorithms"
1583         depends on NET
1584         select CRYPTO_RNG
1585         select CRYPTO_USER_API
1586         help
1587           This option enables the user-spaces interface for random
1588           number generator algorithms.
1589
1590 config CRYPTO_USER_API_AEAD
1591         tristate "User-space interface for AEAD cipher algorithms"
1592         depends on NET
1593         select CRYPTO_AEAD
1594         select CRYPTO_USER_API
1595         help
1596           This option enables the user-spaces interface for AEAD
1597           cipher algorithms.
1598
1599 config CRYPTO_HASH_INFO
1600         bool
1601
1602 source "drivers/crypto/Kconfig"
1603 source crypto/asymmetric_keys/Kconfig
1604
1605 endif   # if CRYPTO