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