GNU Linux-libre 4.14.290-gnu1
[releases.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 CRYPTO_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. Interrupts are also disabled to avoid races where cachelines
934           are evicted when the CPU is interrupted to do something else.
935
936 config CRYPTO_AES_586
937         tristate "AES cipher algorithms (i586)"
938         depends on (X86 || UML_X86) && !64BIT
939         select CRYPTO_ALGAPI
940         select CRYPTO_AES
941         help
942           AES cipher algorithms (FIPS-197). AES uses the Rijndael
943           algorithm.
944
945           Rijndael appears to be consistently a very good performer in
946           both hardware and software across a wide range of computing
947           environments regardless of its use in feedback or non-feedback
948           modes. Its key setup time is excellent, and its key agility is
949           good. Rijndael's very low memory requirements make it very well
950           suited for restricted-space environments, in which it also
951           demonstrates excellent performance. Rijndael's operations are
952           among the easiest to defend against power and timing attacks.
953
954           The AES specifies three key sizes: 128, 192 and 256 bits
955
956           See <http://csrc.nist.gov/encryption/aes/> for more information.
957
958 config CRYPTO_AES_X86_64
959         tristate "AES cipher algorithms (x86_64)"
960         depends on (X86 || UML_X86) && 64BIT
961         select CRYPTO_ALGAPI
962         select CRYPTO_AES
963         help
964           AES cipher algorithms (FIPS-197). AES uses the Rijndael
965           algorithm.
966
967           Rijndael appears to be consistently a very good performer in
968           both hardware and software across a wide range of computing
969           environments regardless of its use in feedback or non-feedback
970           modes. Its key setup time is excellent, and its key agility is
971           good. Rijndael's very low memory requirements make it very well
972           suited for restricted-space environments, in which it also
973           demonstrates excellent performance. Rijndael's operations are
974           among the easiest to defend against power and timing attacks.
975
976           The AES specifies three key sizes: 128, 192 and 256 bits
977
978           See <http://csrc.nist.gov/encryption/aes/> for more information.
979
980 config CRYPTO_AES_NI_INTEL
981         tristate "AES cipher algorithms (AES-NI)"
982         depends on X86
983         select CRYPTO_AEAD
984         select CRYPTO_AES_X86_64 if 64BIT
985         select CRYPTO_AES_586 if !64BIT
986         select CRYPTO_ALGAPI
987         select CRYPTO_BLKCIPHER
988         select CRYPTO_GLUE_HELPER_X86 if 64BIT
989         select CRYPTO_SIMD
990         help
991           Use Intel AES-NI instructions for AES algorithm.
992
993           AES cipher algorithms (FIPS-197). AES uses the Rijndael
994           algorithm.
995
996           Rijndael appears to be consistently a very good performer in
997           both hardware and software across a wide range of computing
998           environments regardless of its use in feedback or non-feedback
999           modes. Its key setup time is excellent, and its key agility is
1000           good. Rijndael's very low memory requirements make it very well
1001           suited for restricted-space environments, in which it also
1002           demonstrates excellent performance. Rijndael's operations are
1003           among the easiest to defend against power and timing attacks.
1004
1005           The AES specifies three key sizes: 128, 192 and 256 bits
1006
1007           See <http://csrc.nist.gov/encryption/aes/> for more information.
1008
1009           In addition to AES cipher algorithm support, the acceleration
1010           for some popular block cipher mode is supported too, including
1011           ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
1012           acceleration for CTR.
1013
1014 config CRYPTO_AES_SPARC64
1015         tristate "AES cipher algorithms (SPARC64)"
1016         depends on SPARC64
1017         select CRYPTO_CRYPTD
1018         select CRYPTO_ALGAPI
1019         help
1020           Use SPARC64 crypto opcodes for AES algorithm.
1021
1022           AES cipher algorithms (FIPS-197). AES uses the Rijndael
1023           algorithm.
1024
1025           Rijndael appears to be consistently a very good performer in
1026           both hardware and software across a wide range of computing
1027           environments regardless of its use in feedback or non-feedback
1028           modes. Its key setup time is excellent, and its key agility is
1029           good. Rijndael's very low memory requirements make it very well
1030           suited for restricted-space environments, in which it also
1031           demonstrates excellent performance. Rijndael's operations are
1032           among the easiest to defend against power and timing attacks.
1033
1034           The AES specifies three key sizes: 128, 192 and 256 bits
1035
1036           See <http://csrc.nist.gov/encryption/aes/> for more information.
1037
1038           In addition to AES cipher algorithm support, the acceleration
1039           for some popular block cipher mode is supported too, including
1040           ECB and CBC.
1041
1042 config CRYPTO_AES_PPC_SPE
1043         tristate "AES cipher algorithms (PPC SPE)"
1044         depends on PPC && SPE
1045         help
1046           AES cipher algorithms (FIPS-197). Additionally the acceleration
1047           for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1048           This module should only be used for low power (router) devices
1049           without hardware AES acceleration (e.g. caam crypto). It reduces the
1050           size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1051           timining attacks. Nevertheless it might be not as secure as other
1052           architecture specific assembler implementations that work on 1KB
1053           tables or 256 bytes S-boxes.
1054
1055 config CRYPTO_ANUBIS
1056         tristate "Anubis cipher algorithm"
1057         select CRYPTO_ALGAPI
1058         help
1059           Anubis cipher algorithm.
1060
1061           Anubis is a variable key length cipher which can use keys from
1062           128 bits to 320 bits in length.  It was evaluated as a entrant
1063           in the NESSIE competition.
1064
1065           See also:
1066           <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1067           <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1068
1069 config CRYPTO_ARC4
1070         tristate "ARC4 cipher algorithm"
1071         select CRYPTO_BLKCIPHER
1072         help
1073           ARC4 cipher algorithm.
1074
1075           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1076           bits in length.  This algorithm is required for driver-based
1077           WEP, but it should not be for other purposes because of the
1078           weakness of the algorithm.
1079
1080 config CRYPTO_BLOWFISH
1081         tristate "Blowfish cipher algorithm"
1082         select CRYPTO_ALGAPI
1083         select CRYPTO_BLOWFISH_COMMON
1084         help
1085           Blowfish cipher algorithm, by Bruce Schneier.
1086
1087           This is a variable key length cipher which can use keys from 32
1088           bits to 448 bits in length.  It's fast, simple and specifically
1089           designed for use on "large microprocessors".
1090
1091           See also:
1092           <http://www.schneier.com/blowfish.html>
1093
1094 config CRYPTO_BLOWFISH_COMMON
1095         tristate
1096         help
1097           Common parts of the Blowfish cipher algorithm shared by the
1098           generic c and the assembler implementations.
1099
1100           See also:
1101           <http://www.schneier.com/blowfish.html>
1102
1103 config CRYPTO_BLOWFISH_X86_64
1104         tristate "Blowfish cipher algorithm (x86_64)"
1105         depends on X86 && 64BIT
1106         select CRYPTO_ALGAPI
1107         select CRYPTO_BLOWFISH_COMMON
1108         help
1109           Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1110
1111           This is a variable key length cipher which can use keys from 32
1112           bits to 448 bits in length.  It's fast, simple and specifically
1113           designed for use on "large microprocessors".
1114
1115           See also:
1116           <http://www.schneier.com/blowfish.html>
1117
1118 config CRYPTO_CAMELLIA
1119         tristate "Camellia cipher algorithms"
1120         depends on CRYPTO
1121         select CRYPTO_ALGAPI
1122         help
1123           Camellia cipher algorithms module.
1124
1125           Camellia is a symmetric key block cipher developed jointly
1126           at NTT and Mitsubishi Electric Corporation.
1127
1128           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1129
1130           See also:
1131           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1132
1133 config CRYPTO_CAMELLIA_X86_64
1134         tristate "Camellia cipher algorithm (x86_64)"
1135         depends on X86 && 64BIT
1136         depends on CRYPTO
1137         select CRYPTO_ALGAPI
1138         select CRYPTO_GLUE_HELPER_X86
1139         select CRYPTO_LRW
1140         select CRYPTO_XTS
1141         help
1142           Camellia cipher algorithm module (x86_64).
1143
1144           Camellia is a symmetric key block cipher developed jointly
1145           at NTT and Mitsubishi Electric Corporation.
1146
1147           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1148
1149           See also:
1150           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1151
1152 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1153         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1154         depends on X86 && 64BIT
1155         depends on CRYPTO
1156         select CRYPTO_ALGAPI
1157         select CRYPTO_CRYPTD
1158         select CRYPTO_ABLK_HELPER
1159         select CRYPTO_GLUE_HELPER_X86
1160         select CRYPTO_CAMELLIA_X86_64
1161         select CRYPTO_LRW
1162         select CRYPTO_XTS
1163         help
1164           Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1165
1166           Camellia is a symmetric key block cipher developed jointly
1167           at NTT and Mitsubishi Electric Corporation.
1168
1169           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1170
1171           See also:
1172           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1173
1174 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1175         tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1176         depends on X86 && 64BIT
1177         depends on CRYPTO
1178         select CRYPTO_ALGAPI
1179         select CRYPTO_CRYPTD
1180         select CRYPTO_ABLK_HELPER
1181         select CRYPTO_GLUE_HELPER_X86
1182         select CRYPTO_CAMELLIA_X86_64
1183         select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1184         select CRYPTO_LRW
1185         select CRYPTO_XTS
1186         help
1187           Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1188
1189           Camellia is a symmetric key block cipher developed jointly
1190           at NTT and Mitsubishi Electric Corporation.
1191
1192           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1193
1194           See also:
1195           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1196
1197 config CRYPTO_CAMELLIA_SPARC64
1198         tristate "Camellia cipher algorithm (SPARC64)"
1199         depends on SPARC64
1200         depends on CRYPTO
1201         select CRYPTO_ALGAPI
1202         help
1203           Camellia cipher algorithm module (SPARC64).
1204
1205           Camellia is a symmetric key block cipher developed jointly
1206           at NTT and Mitsubishi Electric Corporation.
1207
1208           The Camellia specifies three key sizes: 128, 192 and 256 bits.
1209
1210           See also:
1211           <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1212
1213 config CRYPTO_CAST_COMMON
1214         tristate
1215         help
1216           Common parts of the CAST cipher algorithms shared by the
1217           generic c and the assembler implementations.
1218
1219 config CRYPTO_CAST5
1220         tristate "CAST5 (CAST-128) cipher algorithm"
1221         select CRYPTO_ALGAPI
1222         select CRYPTO_CAST_COMMON
1223         help
1224           The CAST5 encryption algorithm (synonymous with CAST-128) is
1225           described in RFC2144.
1226
1227 config CRYPTO_CAST5_AVX_X86_64
1228         tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1229         depends on X86 && 64BIT
1230         select CRYPTO_ALGAPI
1231         select CRYPTO_CRYPTD
1232         select CRYPTO_ABLK_HELPER
1233         select CRYPTO_CAST_COMMON
1234         select CRYPTO_CAST5
1235         help
1236           The CAST5 encryption algorithm (synonymous with CAST-128) is
1237           described in RFC2144.
1238
1239           This module provides the Cast5 cipher algorithm that processes
1240           sixteen blocks parallel using the AVX instruction set.
1241
1242 config CRYPTO_CAST6
1243         tristate "CAST6 (CAST-256) cipher algorithm"
1244         select CRYPTO_ALGAPI
1245         select CRYPTO_CAST_COMMON
1246         help
1247           The CAST6 encryption algorithm (synonymous with CAST-256) is
1248           described in RFC2612.
1249
1250 config CRYPTO_CAST6_AVX_X86_64
1251         tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
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_CAST_COMMON
1258         select CRYPTO_CAST6
1259         select CRYPTO_LRW
1260         select CRYPTO_XTS
1261         help
1262           The CAST6 encryption algorithm (synonymous with CAST-256) is
1263           described in RFC2612.
1264
1265           This module provides the Cast6 cipher algorithm that processes
1266           eight blocks parallel using the AVX instruction set.
1267
1268 config CRYPTO_DES
1269         tristate "DES and Triple DES EDE cipher algorithms"
1270         select CRYPTO_ALGAPI
1271         help
1272           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1273
1274 config CRYPTO_DES_SPARC64
1275         tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1276         depends on SPARC64
1277         select CRYPTO_ALGAPI
1278         select CRYPTO_DES
1279         help
1280           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1281           optimized using SPARC64 crypto opcodes.
1282
1283 config CRYPTO_DES3_EDE_X86_64
1284         tristate "Triple DES EDE cipher algorithm (x86-64)"
1285         depends on X86 && 64BIT
1286         select CRYPTO_ALGAPI
1287         select CRYPTO_DES
1288         help
1289           Triple DES EDE (FIPS 46-3) algorithm.
1290
1291           This module provides implementation of the Triple DES EDE cipher
1292           algorithm that is optimized for x86-64 processors. Two versions of
1293           algorithm are provided; regular processing one input block and
1294           one that processes three blocks parallel.
1295
1296 config CRYPTO_FCRYPT
1297         tristate "FCrypt cipher algorithm"
1298         select CRYPTO_ALGAPI
1299         select CRYPTO_BLKCIPHER
1300         help
1301           FCrypt algorithm used by RxRPC.
1302
1303 config CRYPTO_KHAZAD
1304         tristate "Khazad cipher algorithm"
1305         select CRYPTO_ALGAPI
1306         help
1307           Khazad cipher algorithm.
1308
1309           Khazad was a finalist in the initial NESSIE competition.  It is
1310           an algorithm optimized for 64-bit processors with good performance
1311           on 32-bit processors.  Khazad uses an 128 bit key size.
1312
1313           See also:
1314           <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1315
1316 config CRYPTO_SALSA20
1317         tristate "Salsa20 stream cipher algorithm"
1318         select CRYPTO_BLKCIPHER
1319         help
1320           Salsa20 stream cipher algorithm.
1321
1322           Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1323           Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1324
1325           The Salsa20 stream cipher algorithm is designed by Daniel J.
1326           Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1327
1328 config CRYPTO_CHACHA20
1329         tristate "ChaCha20 cipher algorithm"
1330         select CRYPTO_BLKCIPHER
1331         help
1332           ChaCha20 cipher algorithm, RFC7539.
1333
1334           ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1335           Bernstein and further specified in RFC7539 for use in IETF protocols.
1336           This is the portable C implementation of ChaCha20.
1337
1338           See also:
1339           <http://cr.yp.to/chacha/chacha-20080128.pdf>
1340
1341 config CRYPTO_CHACHA20_X86_64
1342         tristate "ChaCha20 cipher algorithm (x86_64/SSSE3/AVX2)"
1343         depends on X86 && 64BIT
1344         select CRYPTO_BLKCIPHER
1345         select CRYPTO_CHACHA20
1346         help
1347           ChaCha20 cipher algorithm, RFC7539.
1348
1349           ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1350           Bernstein and further specified in RFC7539 for use in IETF protocols.
1351           This is the x86_64 assembler implementation using SIMD instructions.
1352
1353           See also:
1354           <http://cr.yp.to/chacha/chacha-20080128.pdf>
1355
1356 config CRYPTO_SEED
1357         tristate "SEED cipher algorithm"
1358         select CRYPTO_ALGAPI
1359         help
1360           SEED cipher algorithm (RFC4269).
1361
1362           SEED is a 128-bit symmetric key block cipher that has been
1363           developed by KISA (Korea Information Security Agency) as a
1364           national standard encryption algorithm of the Republic of Korea.
1365           It is a 16 round block cipher with the key size of 128 bit.
1366
1367           See also:
1368           <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1369
1370 config CRYPTO_SERPENT
1371         tristate "Serpent cipher algorithm"
1372         select CRYPTO_ALGAPI
1373         help
1374           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1375
1376           Keys are allowed to be from 0 to 256 bits in length, in steps
1377           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1378           variant of Serpent for compatibility with old kerneli.org code.
1379
1380           See also:
1381           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1382
1383 config CRYPTO_SERPENT_SSE2_X86_64
1384         tristate "Serpent cipher algorithm (x86_64/SSE2)"
1385         depends on X86 && 64BIT
1386         select CRYPTO_ALGAPI
1387         select CRYPTO_CRYPTD
1388         select CRYPTO_ABLK_HELPER
1389         select CRYPTO_GLUE_HELPER_X86
1390         select CRYPTO_SERPENT
1391         select CRYPTO_LRW
1392         select CRYPTO_XTS
1393         help
1394           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1395
1396           Keys are allowed to be from 0 to 256 bits in length, in steps
1397           of 8 bits.
1398
1399           This module provides Serpent cipher algorithm that processes eight
1400           blocks parallel using SSE2 instruction set.
1401
1402           See also:
1403           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1404
1405 config CRYPTO_SERPENT_SSE2_586
1406         tristate "Serpent cipher algorithm (i586/SSE2)"
1407         depends on X86 && !64BIT
1408         select CRYPTO_ALGAPI
1409         select CRYPTO_CRYPTD
1410         select CRYPTO_ABLK_HELPER
1411         select CRYPTO_GLUE_HELPER_X86
1412         select CRYPTO_SERPENT
1413         select CRYPTO_LRW
1414         select CRYPTO_XTS
1415         help
1416           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1417
1418           Keys are allowed to be from 0 to 256 bits in length, in steps
1419           of 8 bits.
1420
1421           This module provides Serpent cipher algorithm that processes four
1422           blocks parallel using SSE2 instruction set.
1423
1424           See also:
1425           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1426
1427 config CRYPTO_SERPENT_AVX_X86_64
1428         tristate "Serpent cipher algorithm (x86_64/AVX)"
1429         depends on X86 && 64BIT
1430         select CRYPTO_ALGAPI
1431         select CRYPTO_CRYPTD
1432         select CRYPTO_ABLK_HELPER
1433         select CRYPTO_GLUE_HELPER_X86
1434         select CRYPTO_SERPENT
1435         select CRYPTO_LRW
1436         select CRYPTO_XTS
1437         help
1438           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1439
1440           Keys are allowed to be from 0 to 256 bits in length, in steps
1441           of 8 bits.
1442
1443           This module provides the Serpent cipher algorithm that processes
1444           eight blocks parallel using the AVX instruction set.
1445
1446           See also:
1447           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1448
1449 config CRYPTO_SERPENT_AVX2_X86_64
1450         tristate "Serpent cipher algorithm (x86_64/AVX2)"
1451         depends on X86 && 64BIT
1452         select CRYPTO_ALGAPI
1453         select CRYPTO_CRYPTD
1454         select CRYPTO_ABLK_HELPER
1455         select CRYPTO_GLUE_HELPER_X86
1456         select CRYPTO_SERPENT
1457         select CRYPTO_SERPENT_AVX_X86_64
1458         select CRYPTO_LRW
1459         select CRYPTO_XTS
1460         help
1461           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1462
1463           Keys are allowed to be from 0 to 256 bits in length, in steps
1464           of 8 bits.
1465
1466           This module provides Serpent cipher algorithm that processes 16
1467           blocks parallel using AVX2 instruction set.
1468
1469           See also:
1470           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1471
1472 config CRYPTO_TEA
1473         tristate "TEA, XTEA and XETA cipher algorithms"
1474         select CRYPTO_ALGAPI
1475         help
1476           TEA cipher algorithm.
1477
1478           Tiny Encryption Algorithm is a simple cipher that uses
1479           many rounds for security.  It is very fast and uses
1480           little memory.
1481
1482           Xtendend Tiny Encryption Algorithm is a modification to
1483           the TEA algorithm to address a potential key weakness
1484           in the TEA algorithm.
1485
1486           Xtendend Encryption Tiny Algorithm is a mis-implementation
1487           of the XTEA algorithm for compatibility purposes.
1488
1489 config CRYPTO_TWOFISH
1490         tristate "Twofish cipher algorithm"
1491         select CRYPTO_ALGAPI
1492         select CRYPTO_TWOFISH_COMMON
1493         help
1494           Twofish cipher algorithm.
1495
1496           Twofish was submitted as an AES (Advanced Encryption Standard)
1497           candidate cipher by researchers at CounterPane Systems.  It is a
1498           16 round block cipher supporting key sizes of 128, 192, and 256
1499           bits.
1500
1501           See also:
1502           <http://www.schneier.com/twofish.html>
1503
1504 config CRYPTO_TWOFISH_COMMON
1505         tristate
1506         help
1507           Common parts of the Twofish cipher algorithm shared by the
1508           generic c and the assembler implementations.
1509
1510 config CRYPTO_TWOFISH_586
1511         tristate "Twofish cipher algorithms (i586)"
1512         depends on (X86 || UML_X86) && !64BIT
1513         select CRYPTO_ALGAPI
1514         select CRYPTO_TWOFISH_COMMON
1515         help
1516           Twofish cipher algorithm.
1517
1518           Twofish was submitted as an AES (Advanced Encryption Standard)
1519           candidate cipher by researchers at CounterPane Systems.  It is a
1520           16 round block cipher supporting key sizes of 128, 192, and 256
1521           bits.
1522
1523           See also:
1524           <http://www.schneier.com/twofish.html>
1525
1526 config CRYPTO_TWOFISH_X86_64
1527         tristate "Twofish cipher algorithm (x86_64)"
1528         depends on (X86 || UML_X86) && 64BIT
1529         select CRYPTO_ALGAPI
1530         select CRYPTO_TWOFISH_COMMON
1531         help
1532           Twofish cipher algorithm (x86_64).
1533
1534           Twofish was submitted as an AES (Advanced Encryption Standard)
1535           candidate cipher by researchers at CounterPane Systems.  It is a
1536           16 round block cipher supporting key sizes of 128, 192, and 256
1537           bits.
1538
1539           See also:
1540           <http://www.schneier.com/twofish.html>
1541
1542 config CRYPTO_TWOFISH_X86_64_3WAY
1543         tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1544         depends on X86 && 64BIT
1545         select CRYPTO_ALGAPI
1546         select CRYPTO_TWOFISH_COMMON
1547         select CRYPTO_TWOFISH_X86_64
1548         select CRYPTO_GLUE_HELPER_X86
1549         select CRYPTO_LRW
1550         select CRYPTO_XTS
1551         help
1552           Twofish cipher algorithm (x86_64, 3-way parallel).
1553
1554           Twofish was submitted as an AES (Advanced Encryption Standard)
1555           candidate cipher by researchers at CounterPane Systems.  It is a
1556           16 round block cipher supporting key sizes of 128, 192, and 256
1557           bits.
1558
1559           This module provides Twofish cipher algorithm that processes three
1560           blocks parallel, utilizing resources of out-of-order CPUs better.
1561
1562           See also:
1563           <http://www.schneier.com/twofish.html>
1564
1565 config CRYPTO_TWOFISH_AVX_X86_64
1566         tristate "Twofish cipher algorithm (x86_64/AVX)"
1567         depends on X86 && 64BIT
1568         select CRYPTO_ALGAPI
1569         select CRYPTO_CRYPTD
1570         select CRYPTO_ABLK_HELPER
1571         select CRYPTO_GLUE_HELPER_X86
1572         select CRYPTO_TWOFISH_COMMON
1573         select CRYPTO_TWOFISH_X86_64
1574         select CRYPTO_TWOFISH_X86_64_3WAY
1575         select CRYPTO_LRW
1576         select CRYPTO_XTS
1577         help
1578           Twofish cipher algorithm (x86_64/AVX).
1579
1580           Twofish was submitted as an AES (Advanced Encryption Standard)
1581           candidate cipher by researchers at CounterPane Systems.  It is a
1582           16 round block cipher supporting key sizes of 128, 192, and 256
1583           bits.
1584
1585           This module provides the Twofish cipher algorithm that processes
1586           eight blocks parallel using the AVX Instruction Set.
1587
1588           See also:
1589           <http://www.schneier.com/twofish.html>
1590
1591 comment "Compression"
1592
1593 config CRYPTO_DEFLATE
1594         tristate "Deflate compression algorithm"
1595         select CRYPTO_ALGAPI
1596         select CRYPTO_ACOMP2
1597         select ZLIB_INFLATE
1598         select ZLIB_DEFLATE
1599         help
1600           This is the Deflate algorithm (RFC1951), specified for use in
1601           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1602
1603           You will most probably want this if using IPSec.
1604
1605 config CRYPTO_LZO
1606         tristate "LZO compression algorithm"
1607         select CRYPTO_ALGAPI
1608         select CRYPTO_ACOMP2
1609         select LZO_COMPRESS
1610         select LZO_DECOMPRESS
1611         help
1612           This is the LZO algorithm.
1613
1614 config CRYPTO_842
1615         tristate "842 compression algorithm"
1616         select CRYPTO_ALGAPI
1617         select CRYPTO_ACOMP2
1618         select 842_COMPRESS
1619         select 842_DECOMPRESS
1620         help
1621           This is the 842 algorithm.
1622
1623 config CRYPTO_LZ4
1624         tristate "LZ4 compression algorithm"
1625         select CRYPTO_ALGAPI
1626         select CRYPTO_ACOMP2
1627         select LZ4_COMPRESS
1628         select LZ4_DECOMPRESS
1629         help
1630           This is the LZ4 algorithm.
1631
1632 config CRYPTO_LZ4HC
1633         tristate "LZ4HC compression algorithm"
1634         select CRYPTO_ALGAPI
1635         select CRYPTO_ACOMP2
1636         select LZ4HC_COMPRESS
1637         select LZ4_DECOMPRESS
1638         help
1639           This is the LZ4 high compression mode algorithm.
1640
1641 comment "Random Number Generation"
1642
1643 config CRYPTO_ANSI_CPRNG
1644         tristate "Pseudo Random Number Generation for Cryptographic modules"
1645         select CRYPTO_AES
1646         select CRYPTO_RNG
1647         help
1648           This option enables the generic pseudo random number generator
1649           for cryptographic modules.  Uses the Algorithm specified in
1650           ANSI X9.31 A.2.4. Note that this option must be enabled if
1651           CRYPTO_FIPS is selected
1652
1653 menuconfig CRYPTO_DRBG_MENU
1654         tristate "NIST SP800-90A DRBG"
1655         help
1656           NIST SP800-90A compliant DRBG. In the following submenu, one or
1657           more of the DRBG types must be selected.
1658
1659 if CRYPTO_DRBG_MENU
1660
1661 config CRYPTO_DRBG_HMAC
1662         bool
1663         default y
1664         select CRYPTO_HMAC
1665         select CRYPTO_SHA256
1666
1667 config CRYPTO_DRBG_HASH
1668         bool "Enable Hash DRBG"
1669         select CRYPTO_SHA256
1670         help
1671           Enable the Hash DRBG variant as defined in NIST SP800-90A.
1672
1673 config CRYPTO_DRBG_CTR
1674         bool "Enable CTR DRBG"
1675         select CRYPTO_AES
1676         depends on CRYPTO_CTR
1677         help
1678           Enable the CTR DRBG variant as defined in NIST SP800-90A.
1679
1680 config CRYPTO_DRBG
1681         tristate
1682         default CRYPTO_DRBG_MENU
1683         select CRYPTO_RNG
1684         select CRYPTO_JITTERENTROPY
1685
1686 endif   # if CRYPTO_DRBG_MENU
1687
1688 config CRYPTO_JITTERENTROPY
1689         tristate "Jitterentropy Non-Deterministic Random Number Generator"
1690         select CRYPTO_RNG
1691         help
1692           The Jitterentropy RNG is a noise that is intended
1693           to provide seed to another RNG. The RNG does not
1694           perform any cryptographic whitening of the generated
1695           random numbers. This Jitterentropy RNG registers with
1696           the kernel crypto API and can be used by any caller.
1697
1698 config CRYPTO_USER_API
1699         tristate
1700
1701 config CRYPTO_USER_API_HASH
1702         tristate "User-space interface for hash algorithms"
1703         depends on NET
1704         select CRYPTO_HASH
1705         select CRYPTO_USER_API
1706         help
1707           This option enables the user-spaces interface for hash
1708           algorithms.
1709
1710 config CRYPTO_USER_API_SKCIPHER
1711         tristate "User-space interface for symmetric key cipher algorithms"
1712         depends on NET
1713         select CRYPTO_BLKCIPHER
1714         select CRYPTO_USER_API
1715         help
1716           This option enables the user-spaces interface for symmetric
1717           key cipher algorithms.
1718
1719 config CRYPTO_USER_API_RNG
1720         tristate "User-space interface for random number generator algorithms"
1721         depends on NET
1722         select CRYPTO_RNG
1723         select CRYPTO_USER_API
1724         help
1725           This option enables the user-spaces interface for random
1726           number generator algorithms.
1727
1728 config CRYPTO_USER_API_AEAD
1729         tristate "User-space interface for AEAD cipher algorithms"
1730         depends on NET
1731         select CRYPTO_AEAD
1732         select CRYPTO_BLKCIPHER
1733         select CRYPTO_NULL
1734         select CRYPTO_USER_API
1735         help
1736           This option enables the user-spaces interface for AEAD
1737           cipher algorithms.
1738
1739 config CRYPTO_HASH_INFO
1740         bool
1741
1742 source "drivers/crypto/Kconfig"
1743 source crypto/asymmetric_keys/Kconfig
1744 source certs/Kconfig
1745
1746 endif   # if CRYPTO