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