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