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