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