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