Merge tag 'drm-intel-next-fixes-2022-08-11' of git://anongit.freedesktop.org/drm...
[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"
abfed87e 18 select LIB_MEMNEQ
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
7cf31864 661config CRYPTO_CRC32C_VPMSUM
6dd7a82c 662 tristate "CRC32c CRC algorithm (powerpc64)"
c12abf34 663 depends on PPC64 && ALTIVEC
6dd7a82c
AB
664 select CRYPTO_HASH
665 select CRC32
666 help
667 CRC32c algorithm implemented using vector polynomial multiply-sum
668 (vpmsum) instructions, introduced in POWER8. Enable on POWER8
669 and newer processors for improved performance.
670
671
442a7c40
DM
672config CRYPTO_CRC32C_SPARC64
673 tristate "CRC32c CRC algorithm (SPARC64)"
674 depends on SPARC64
675 select CRYPTO_HASH
676 select CRC32
677 help
678 CRC32c CRC algorithm implemented using sparc64 crypto instructions,
679 when available.
680
78c37d19
AB
681config CRYPTO_CRC32
682 tristate "CRC32 CRC algorithm"
683 select CRYPTO_HASH
684 select CRC32
685 help
686 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
687 Shash crypto api wrappers to crc32_le function.
688
689config CRYPTO_CRC32_PCLMUL
690 tristate "CRC32 PCLMULQDQ hardware acceleration"
691 depends on X86
692 select CRYPTO_HASH
693 select CRC32
694 help
695 From Intel Westmere and AMD Bulldozer processor with SSE4.2
696 and PCLMULQDQ supported, the processor will support
697 CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
af8cb01f 698 instruction. This option will create 'crc32-pclmul' module,
78c37d19
AB
699 which will enable any routine to use the CRC-32-IEEE 802.3 checksum
700 and gain better performance as compared with the table implementation.
701
4a5dc51e
MN
702config CRYPTO_CRC32_MIPS
703 tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
704 depends on MIPS_CRC_SUPPORT
705 select CRYPTO_HASH
706 help
707 CRC32c and CRC32 CRC algorithms implemented using mips crypto
708 instructions, when available.
709
b7133757
JD
710config CRYPTO_CRC32_S390
711 tristate "CRC-32 algorithms"
712 depends on S390
713 select CRYPTO_HASH
714 select CRC32
715 help
716 Select this option if you want to use hardware accelerated
717 implementations of CRC algorithms. With this option, you
718 can optimize the computation of CRC-32 (IEEE 802.3 Ethernet)
719 and CRC-32C (Castagnoli).
720
721 It is available with IBM z13 or later.
4a5dc51e 722
67882e76
NB
723config CRYPTO_XXHASH
724 tristate "xxHash hash algorithm"
725 select CRYPTO_HASH
726 select XXHASH
727 help
728 xxHash non-cryptographic hash algorithm. Extremely fast, working at
729 speeds close to RAM limits.
730
91d68933
DS
731config CRYPTO_BLAKE2B
732 tristate "BLAKE2b digest algorithm"
733 select CRYPTO_HASH
734 help
735 Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
736 optimized for 64bit platforms and can produce digests of any size
737 between 1 to 64. The keyed hash is also implemented.
738
739 This module provides the following algorithms:
740
741 - blake2b-160
742 - blake2b-256
743 - blake2b-384
744 - blake2b-512
745
746 See https://blake2.net for further information.
747
ed0356ed 748config CRYPTO_BLAKE2S_X86
2d16803c 749 bool "BLAKE2s digest algorithm (x86 accelerated version)"
ed0356ed
JD
750 depends on X86 && 64BIT
751 select CRYPTO_LIB_BLAKE2S_GENERIC
752 select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
753
68411521
HX
754config CRYPTO_CRCT10DIF
755 tristate "CRCT10DIF algorithm"
756 select CRYPTO_HASH
757 help
758 CRC T10 Data Integrity Field computation is being cast as
759 a crypto transform. This allows for faster crc t10 diff
760 transforms to be used if they are available.
761
762config CRYPTO_CRCT10DIF_PCLMUL
763 tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
764 depends on X86 && 64BIT && CRC_T10DIF
765 select CRYPTO_HASH
766 help
767 For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
768 CRC T10 DIF PCLMULQDQ computation can be hardware
769 accelerated PCLMULQDQ instruction. This option will create
af8cb01f 770 'crct10dif-pclmul' module, which is faster when computing the
68411521
HX
771 crct10dif checksum as compared with the generic table implementation.
772
b01df1c1
DA
773config CRYPTO_CRCT10DIF_VPMSUM
774 tristate "CRC32T10DIF powerpc64 hardware acceleration"
775 depends on PPC64 && ALTIVEC && CRC_T10DIF
776 select CRYPTO_HASH
777 help
778 CRC10T10DIF algorithm implemented using vector polynomial
779 multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
780 POWER8 and newer processors for improved performance.
781
f3813f4b
KB
782config CRYPTO_CRC64_ROCKSOFT
783 tristate "Rocksoft Model CRC64 algorithm"
784 depends on CRC64
785 select CRYPTO_HASH
786
146c8688
DA
787config CRYPTO_VPMSUM_TESTER
788 tristate "Powerpc64 vpmsum hardware acceleration tester"
789 depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
790 help
791 Stress test for CRC32c and CRC-T10DIF algorithms implemented with
792 POWER8 vpmsum instructions.
793 Unless you are testing these algorithms, you don't need this.
794
2cdc6899 795config CRYPTO_GHASH
8dfa20fc 796 tristate "GHASH hash function"
2cdc6899 797 select CRYPTO_GF128MUL
578c60fb 798 select CRYPTO_HASH
2cdc6899 799 help
8dfa20fc
EB
800 GHASH is the hash function used in GCM (Galois/Counter Mode).
801 It is not a general-purpose cryptographic hash function.
2cdc6899 802
f3c923a0
NH
803config CRYPTO_POLYVAL
804 tristate
805 select CRYPTO_GF128MUL
806 select CRYPTO_HASH
807 help
808 POLYVAL is the hash function used in HCTR2. It is not a general-purpose
809 cryptographic hash function.
810
34f7f6c3
NH
811config CRYPTO_POLYVAL_CLMUL_NI
812 tristate "POLYVAL hash function (CLMUL-NI accelerated)"
813 depends on X86 && 64BIT
814 select CRYPTO_POLYVAL
815 help
816 This is the x86_64 CLMUL-NI accelerated implementation of POLYVAL. It is
817 used to efficiently implement HCTR2 on x86-64 processors that support
818 carry-less multiplication instructions.
819
f979e014
MW
820config CRYPTO_POLY1305
821 tristate "Poly1305 authenticator algorithm"
578c60fb 822 select CRYPTO_HASH
48ea8c6e 823 select CRYPTO_LIB_POLY1305_GENERIC
f979e014
MW
824 help
825 Poly1305 authenticator algorithm, RFC7539.
826
827 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
828 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
829 in IETF protocols. This is the portable C implementation of Poly1305.
830
c70f4abe 831config CRYPTO_POLY1305_X86_64
b1ccc8f4 832 tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
c70f4abe 833 depends on X86 && 64BIT
1b2c6a51 834 select CRYPTO_LIB_POLY1305_GENERIC
f0e89bcf 835 select CRYPTO_ARCH_HAVE_LIB_POLY1305
c70f4abe
MW
836 help
837 Poly1305 authenticator algorithm, RFC7539.
838
839 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
840 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
841 in IETF protocols. This is the x86_64 assembler implementation using SIMD
842 instructions.
843
a11d055e
AB
844config CRYPTO_POLY1305_MIPS
845 tristate "Poly1305 authenticator algorithm (MIPS optimized)"
6c810cf2 846 depends on MIPS
a11d055e
AB
847 select CRYPTO_ARCH_HAVE_LIB_POLY1305
848
584fffc8
SS
849config CRYPTO_MD4
850 tristate "MD4 digest algorithm"
808a1763 851 select CRYPTO_HASH
124b53d0 852 help
584fffc8 853 MD4 message digest algorithm (RFC1320).
124b53d0 854
584fffc8
SS
855config CRYPTO_MD5
856 tristate "MD5 digest algorithm"
14b75ba7 857 select CRYPTO_HASH
1da177e4 858 help
584fffc8 859 MD5 message digest algorithm (RFC1321).
1da177e4 860
d69e75de
AK
861config CRYPTO_MD5_OCTEON
862 tristate "MD5 digest algorithm (OCTEON)"
863 depends on CPU_CAVIUM_OCTEON
864 select CRYPTO_MD5
865 select CRYPTO_HASH
866 help
867 MD5 message digest algorithm (RFC1321) implemented
868 using OCTEON crypto instructions, when available.
869
e8e59953
MS
870config CRYPTO_MD5_PPC
871 tristate "MD5 digest algorithm (PPC)"
872 depends on PPC
873 select CRYPTO_HASH
874 help
875 MD5 message digest algorithm (RFC1321) implemented
876 in PPC assembler.
877
fa4dfedc
DM
878config CRYPTO_MD5_SPARC64
879 tristate "MD5 digest algorithm (SPARC64)"
880 depends on SPARC64
881 select CRYPTO_MD5
882 select CRYPTO_HASH
883 help
884 MD5 message digest algorithm (RFC1321) implemented
885 using sparc64 crypto instructions, when available.
886
584fffc8
SS
887config CRYPTO_MICHAEL_MIC
888 tristate "Michael MIC keyed digest algorithm"
19e2bf14 889 select CRYPTO_HASH
90831639 890 help
584fffc8
SS
891 Michael MIC is used for message integrity protection in TKIP
892 (IEEE 802.11i). This algorithm is required for TKIP, but it
893 should not be used for other purposes because of the weakness
894 of the algorithm.
90831639 895
82798f90 896config CRYPTO_RMD160
b6d44341 897 tristate "RIPEMD-160 digest algorithm"
e5835fba 898 select CRYPTO_HASH
b6d44341
AB
899 help
900 RIPEMD-160 (ISO/IEC 10118-3:2004).
82798f90 901
b6d44341
AB
902 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
903 to be used as a secure replacement for the 128-bit hash functions
4cbdecd0 904 MD4, MD5 and its predecessor RIPEMD
b6d44341 905 (not to be confused with RIPEMD-128).
82798f90 906
b6d44341
AB
907 It's speed is comparable to SHA1 and there are no known attacks
908 against RIPEMD-160.
534fe2c1 909
b6d44341 910 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
9332a9e7 911 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
534fe2c1 912
584fffc8
SS
913config CRYPTO_SHA1
914 tristate "SHA1 digest algorithm"
54ccb367 915 select CRYPTO_HASH
ec8f7f48 916 select CRYPTO_LIB_SHA1
1da177e4 917 help
584fffc8 918 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
1da177e4 919
66be8951 920config CRYPTO_SHA1_SSSE3
e38b6b7f 921 tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
66be8951
MK
922 depends on X86 && 64BIT
923 select CRYPTO_SHA1
924 select CRYPTO_HASH
925 help
926 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
927 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
e38b6b7f 928 Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
929 when available.
66be8951 930
8275d1aa 931config CRYPTO_SHA256_SSSE3
e38b6b7f 932 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
8275d1aa
TC
933 depends on X86 && 64BIT
934 select CRYPTO_SHA256
935 select CRYPTO_HASH
936 help
937 SHA-256 secure hash standard (DFIPS 180-2) implemented
938 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
939 Extensions version 1 (AVX1), or Advanced Vector Extensions
e38b6b7f 940 version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
941 Instructions) when available.
87de4579
TC
942
943config CRYPTO_SHA512_SSSE3
944 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
945 depends on X86 && 64BIT
946 select CRYPTO_SHA512
947 select CRYPTO_HASH
948 help
949 SHA-512 secure hash standard (DFIPS 180-2) implemented
950 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
951 Extensions version 1 (AVX1), or Advanced Vector Extensions
8275d1aa
TC
952 version 2 (AVX2) instructions, when available.
953
b7133757
JD
954config CRYPTO_SHA512_S390
955 tristate "SHA384 and SHA512 digest algorithm"
956 depends on S390
957 select CRYPTO_HASH
958 help
959 This is the s390 hardware accelerated implementation of the
960 SHA512 secure hash standard.
961
962 It is available as of z10.
963
efdb6f6e
AK
964config CRYPTO_SHA1_OCTEON
965 tristate "SHA1 digest algorithm (OCTEON)"
966 depends on CPU_CAVIUM_OCTEON
967 select CRYPTO_SHA1
968 select CRYPTO_HASH
969 help
970 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
971 using OCTEON crypto instructions, when available.
972
4ff28d4c
DM
973config CRYPTO_SHA1_SPARC64
974 tristate "SHA1 digest algorithm (SPARC64)"
975 depends on SPARC64
976 select CRYPTO_SHA1
977 select CRYPTO_HASH
978 help
979 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
980 using sparc64 crypto instructions, when available.
981
323a6bf1
ME
982config CRYPTO_SHA1_PPC
983 tristate "SHA1 digest algorithm (powerpc)"
984 depends on PPC
985 help
986 This is the powerpc hardware accelerated implementation of the
987 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
988
d9850fc5
MS
989config CRYPTO_SHA1_PPC_SPE
990 tristate "SHA1 digest algorithm (PPC SPE)"
991 depends on PPC && SPE
992 help
993 SHA-1 secure hash standard (DFIPS 180-4) implemented
994 using powerpc SPE SIMD instruction set.
995
b7133757
JD
996config CRYPTO_SHA1_S390
997 tristate "SHA1 digest algorithm"
998 depends on S390
999 select CRYPTO_HASH
1000 help
1001 This is the s390 hardware accelerated implementation of the
1002 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
1003
1004 It is available as of z990.
1005
584fffc8
SS
1006config CRYPTO_SHA256
1007 tristate "SHA224 and SHA256 digest algorithm"
50e109b5 1008 select CRYPTO_HASH
08c327f6 1009 select CRYPTO_LIB_SHA256
1da177e4 1010 help
584fffc8 1011 SHA256 secure hash standard (DFIPS 180-2).
1da177e4 1012
584fffc8
SS
1013 This version of SHA implements a 256 bit hash with 128 bits of
1014 security against collision attacks.
2729bb42 1015
b6d44341
AB
1016 This code also includes SHA-224, a 224 bit hash with 112 bits
1017 of security against collision attacks.
584fffc8 1018
2ecc1e95
MS
1019config CRYPTO_SHA256_PPC_SPE
1020 tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
1021 depends on PPC && SPE
1022 select CRYPTO_SHA256
1023 select CRYPTO_HASH
1024 help
1025 SHA224 and SHA256 secure hash standard (DFIPS 180-2)
1026 implemented using powerpc SPE SIMD instruction set.
1027
efdb6f6e
AK
1028config CRYPTO_SHA256_OCTEON
1029 tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
1030 depends on CPU_CAVIUM_OCTEON
1031 select CRYPTO_SHA256
1032 select CRYPTO_HASH
1033 help
1034 SHA-256 secure hash standard (DFIPS 180-2) implemented
1035 using OCTEON crypto instructions, when available.
1036
86c93b24
DM
1037config CRYPTO_SHA256_SPARC64
1038 tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
1039 depends on SPARC64
1040 select CRYPTO_SHA256
1041 select CRYPTO_HASH
1042 help
1043 SHA-256 secure hash standard (DFIPS 180-2) implemented
1044 using sparc64 crypto instructions, when available.
1045
b7133757
JD
1046config CRYPTO_SHA256_S390
1047 tristate "SHA256 digest algorithm"
1048 depends on S390
1049 select CRYPTO_HASH
1050 help
1051 This is the s390 hardware accelerated implementation of the
1052 SHA256 secure hash standard (DFIPS 180-2).
1053
1054 It is available as of z9.
1055
584fffc8
SS
1056config CRYPTO_SHA512
1057 tristate "SHA384 and SHA512 digest algorithms"
bd9d20db 1058 select CRYPTO_HASH
b9f535ff 1059 help
584fffc8 1060 SHA512 secure hash standard (DFIPS 180-2).
b9f535ff 1061
584fffc8
SS
1062 This version of SHA implements a 512 bit hash with 256 bits of
1063 security against collision attacks.
b9f535ff 1064
584fffc8
SS
1065 This code also includes SHA-384, a 384 bit hash with 192 bits
1066 of security against collision attacks.
b9f535ff 1067
efdb6f6e
AK
1068config CRYPTO_SHA512_OCTEON
1069 tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1070 depends on CPU_CAVIUM_OCTEON
1071 select CRYPTO_SHA512
1072 select CRYPTO_HASH
1073 help
1074 SHA-512 secure hash standard (DFIPS 180-2) implemented
1075 using OCTEON crypto instructions, when available.
1076
775e0c69
DM
1077config CRYPTO_SHA512_SPARC64
1078 tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1079 depends on SPARC64
1080 select CRYPTO_SHA512
1081 select CRYPTO_HASH
1082 help
1083 SHA-512 secure hash standard (DFIPS 180-2) implemented
1084 using sparc64 crypto instructions, when available.
1085
53964b9e
JG
1086config CRYPTO_SHA3
1087 tristate "SHA3 digest algorithm"
1088 select CRYPTO_HASH
1089 help
1090 SHA-3 secure hash standard (DFIPS 202). It's based on
1091 cryptographic sponge function family called Keccak.
1092
1093 References:
1094 http://keccak.noekeon.org/
1095
b7133757
JD
1096config CRYPTO_SHA3_256_S390
1097 tristate "SHA3_224 and SHA3_256 digest algorithm"
1098 depends on S390
1099 select CRYPTO_HASH
1100 help
1101 This is the s390 hardware accelerated implementation of the
1102 SHA3_256 secure hash standard.
1103
1104 It is available as of z14.
1105
1106config CRYPTO_SHA3_512_S390
1107 tristate "SHA3_384 and SHA3_512 digest algorithm"
1108 depends on S390
1109 select CRYPTO_HASH
1110 help
1111 This is the s390 hardware accelerated implementation of the
1112 SHA3_512 secure hash standard.
1113
1114 It is available as of z14.
1115
4f0fc160 1116config CRYPTO_SM3
d2825fa9
JD
1117 tristate
1118
1119config CRYPTO_SM3_GENERIC
4f0fc160
GBY
1120 tristate "SM3 digest algorithm"
1121 select CRYPTO_HASH
d2825fa9 1122 select CRYPTO_SM3
4f0fc160
GBY
1123 help
1124 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1125 It is part of the Chinese Commercial Cryptography suite.
1126
1127 References:
1128 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1129 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1130
930ab34d
TZ
1131config CRYPTO_SM3_AVX_X86_64
1132 tristate "SM3 digest algorithm (x86_64/AVX)"
1133 depends on X86 && 64BIT
1134 select CRYPTO_HASH
d2825fa9 1135 select CRYPTO_SM3
930ab34d
TZ
1136 help
1137 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1138 It is part of the Chinese Commercial Cryptography suite. This is
1139 SM3 optimized implementation using Advanced Vector Extensions (AVX)
1140 when available.
1141
1142 If unsure, say N.
1143
fe18957e
VC
1144config CRYPTO_STREEBOG
1145 tristate "Streebog Hash Function"
1146 select CRYPTO_HASH
1147 help
1148 Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1149 cryptographic standard algorithms (called GOST algorithms).
1150 This setting enables two hash algorithms with 256 and 512 bits output.
1151
1152 References:
1153 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1154 https://tools.ietf.org/html/rfc6986
1155
584fffc8
SS
1156config CRYPTO_WP512
1157 tristate "Whirlpool digest algorithms"
4946510b 1158 select CRYPTO_HASH
1da177e4 1159 help
584fffc8 1160 Whirlpool hash algorithm 512, 384 and 256-bit hashes
1da177e4 1161
584fffc8
SS
1162 Whirlpool-512 is part of the NESSIE cryptographic primitives.
1163 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1da177e4
LT
1164
1165 See also:
6d8de74c 1166 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
584fffc8 1167
0e1227d3 1168config CRYPTO_GHASH_CLMUL_NI_INTEL
8dfa20fc 1169 tristate "GHASH hash function (CLMUL-NI accelerated)"
8af00860 1170 depends on X86 && 64BIT
0e1227d3
HY
1171 select CRYPTO_CRYPTD
1172 help
8dfa20fc
EB
1173 This is the x86_64 CLMUL-NI accelerated implementation of
1174 GHASH, the hash function used in GCM (Galois/Counter mode).
0e1227d3 1175
b7133757
JD
1176config CRYPTO_GHASH_S390
1177 tristate "GHASH hash function"
1178 depends on S390
1179 select CRYPTO_HASH
1180 help
1181 This is the s390 hardware accelerated implementation of GHASH,
1182 the hash function used in GCM (Galois/Counter mode).
1183
1184 It is available as of z196.
1185
584fffc8 1186comment "Ciphers"
1da177e4
LT
1187
1188config CRYPTO_AES
1189 tristate "AES cipher algorithms"
cce9e06d 1190 select CRYPTO_ALGAPI
5bb12d78 1191 select CRYPTO_LIB_AES
1da177e4 1192 help
584fffc8 1193 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
1194 algorithm.
1195
1196 Rijndael appears to be consistently a very good performer in
584fffc8
SS
1197 both hardware and software across a wide range of computing
1198 environments regardless of its use in feedback or non-feedback
1199 modes. Its key setup time is excellent, and its key agility is
1200 good. Rijndael's very low memory requirements make it very well
1201 suited for restricted-space environments, in which it also
1202 demonstrates excellent performance. Rijndael's operations are
1203 among the easiest to defend against power and timing attacks.
1da177e4 1204
584fffc8 1205 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
1206
1207 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1208
b5e0b032
AB
1209config CRYPTO_AES_TI
1210 tristate "Fixed time AES cipher"
1211 select CRYPTO_ALGAPI
e59c1c98 1212 select CRYPTO_LIB_AES
b5e0b032
AB
1213 help
1214 This is a generic implementation of AES that attempts to eliminate
1215 data dependent latencies as much as possible without affecting
1216 performance too much. It is intended for use by the generic CCM
1217 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1218 solely on encryption (although decryption is supported as well, but
1219 with a more dramatic performance hit)
1220
1221 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1222 8 for decryption), this implementation only uses just two S-boxes of
1223 256 bytes each, and attempts to eliminate data dependent latencies by
1224 prefetching the entire table into the cache at the start of each
0a6a40c2
EB
1225 block. Interrupts are also disabled to avoid races where cachelines
1226 are evicted when the CPU is interrupted to do something else.
b5e0b032 1227
54b6a1bd
HY
1228config CRYPTO_AES_NI_INTEL
1229 tristate "AES cipher algorithms (AES-NI)"
8af00860 1230 depends on X86
85671860 1231 select CRYPTO_AEAD
2c53fd11 1232 select CRYPTO_LIB_AES
54b6a1bd 1233 select CRYPTO_ALGAPI
b95bba5d 1234 select CRYPTO_SKCIPHER
85671860 1235 select CRYPTO_SIMD
54b6a1bd
HY
1236 help
1237 Use Intel AES-NI instructions for AES algorithm.
1238
1239 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1240 algorithm.
1241
1242 Rijndael appears to be consistently a very good performer in
1243 both hardware and software across a wide range of computing
1244 environments regardless of its use in feedback or non-feedback
1245 modes. Its key setup time is excellent, and its key agility is
584fffc8
SS
1246 good. Rijndael's very low memory requirements make it very well
1247 suited for restricted-space environments, in which it also
1248 demonstrates excellent performance. Rijndael's operations are
1249 among the easiest to defend against power and timing attacks.
a2a892a2 1250
584fffc8 1251 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
1252
1253 See <http://csrc.nist.gov/encryption/aes/> for more information.
1254
0d258efb
MK
1255 In addition to AES cipher algorithm support, the acceleration
1256 for some popular block cipher mode is supported too, including
944585a6 1257 ECB, CBC, LRW, XTS. The 64 bit version has additional
fd94fcf0 1258 acceleration for CTR and XCTR.
2cf4ac8b 1259
9bf4852d
DM
1260config CRYPTO_AES_SPARC64
1261 tristate "AES cipher algorithms (SPARC64)"
1262 depends on SPARC64
b95bba5d 1263 select CRYPTO_SKCIPHER
9bf4852d
DM
1264 help
1265 Use SPARC64 crypto opcodes for AES algorithm.
1266
1267 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1268 algorithm.
1269
1270 Rijndael appears to be consistently a very good performer in
1271 both hardware and software across a wide range of computing
1272 environments regardless of its use in feedback or non-feedback
1273 modes. Its key setup time is excellent, and its key agility is
1274 good. Rijndael's very low memory requirements make it very well
1275 suited for restricted-space environments, in which it also
1276 demonstrates excellent performance. Rijndael's operations are
1277 among the easiest to defend against power and timing attacks.
1278
1279 The AES specifies three key sizes: 128, 192 and 256 bits
1280
1281 See <http://csrc.nist.gov/encryption/aes/> for more information.
1282
1283 In addition to AES cipher algorithm support, the acceleration
1284 for some popular block cipher mode is supported too, including
1285 ECB and CBC.
1286
504c6143
MS
1287config CRYPTO_AES_PPC_SPE
1288 tristate "AES cipher algorithms (PPC SPE)"
1289 depends on PPC && SPE
b95bba5d 1290 select CRYPTO_SKCIPHER
504c6143
MS
1291 help
1292 AES cipher algorithms (FIPS-197). Additionally the acceleration
1293 for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1294 This module should only be used for low power (router) devices
1295 without hardware AES acceleration (e.g. caam crypto). It reduces the
1296 size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1297 timining attacks. Nevertheless it might be not as secure as other
1298 architecture specific assembler implementations that work on 1KB
1299 tables or 256 bytes S-boxes.
1300
b7133757
JD
1301config CRYPTO_AES_S390
1302 tristate "AES cipher algorithms"
1303 depends on S390
1304 select CRYPTO_ALGAPI
1305 select CRYPTO_SKCIPHER
1306 help
1307 This is the s390 hardware accelerated implementation of the
1308 AES cipher algorithms (FIPS-197).
1309
1310 As of z9 the ECB and CBC modes are hardware accelerated
1311 for 128 bit keys.
1312 As of z10 the ECB and CBC modes are hardware accelerated
1313 for all AES key sizes.
1314 As of z196 the CTR mode is hardware accelerated for all AES
1315 key sizes and XTS mode is hardware accelerated for 256 and
1316 512 bit keys.
1317
584fffc8
SS
1318config CRYPTO_ANUBIS
1319 tristate "Anubis cipher algorithm"
1674aea5 1320 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
584fffc8
SS
1321 select CRYPTO_ALGAPI
1322 help
1323 Anubis cipher algorithm.
1324
1325 Anubis is a variable key length cipher which can use keys from
1326 128 bits to 320 bits in length. It was evaluated as a entrant
1327 in the NESSIE competition.
1328
1329 See also:
6d8de74c
JM
1330 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1331 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
584fffc8
SS
1332
1333config CRYPTO_ARC4
1334 tristate "ARC4 cipher algorithm"
9ace6771 1335 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
b95bba5d 1336 select CRYPTO_SKCIPHER
dc51f257 1337 select CRYPTO_LIB_ARC4
584fffc8
SS
1338 help
1339 ARC4 cipher algorithm.
1340
1341 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1342 bits in length. This algorithm is required for driver-based
1343 WEP, but it should not be for other purposes because of the
1344 weakness of the algorithm.
1345
1346config CRYPTO_BLOWFISH
1347 tristate "Blowfish cipher algorithm"
1348 select CRYPTO_ALGAPI
52ba867c 1349 select CRYPTO_BLOWFISH_COMMON
584fffc8
SS
1350 help
1351 Blowfish cipher algorithm, by Bruce Schneier.
1352
1353 This is a variable key length cipher which can use keys from 32
1354 bits to 448 bits in length. It's fast, simple and specifically
1355 designed for use on "large microprocessors".
1356
1357 See also:
9332a9e7 1358 <https://www.schneier.com/blowfish.html>
584fffc8 1359
52ba867c
JK
1360config CRYPTO_BLOWFISH_COMMON
1361 tristate
1362 help
1363 Common parts of the Blowfish cipher algorithm shared by the
1364 generic c and the assembler implementations.
1365
1366 See also:
9332a9e7 1367 <https://www.schneier.com/blowfish.html>
52ba867c 1368
64b94cea
JK
1369config CRYPTO_BLOWFISH_X86_64
1370 tristate "Blowfish cipher algorithm (x86_64)"
f21a7c19 1371 depends on X86 && 64BIT
b95bba5d 1372 select CRYPTO_SKCIPHER
64b94cea 1373 select CRYPTO_BLOWFISH_COMMON
c0a64926 1374 imply CRYPTO_CTR
64b94cea
JK
1375 help
1376 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1377
1378 This is a variable key length cipher which can use keys from 32
1379 bits to 448 bits in length. It's fast, simple and specifically
1380 designed for use on "large microprocessors".
1381
1382 See also:
9332a9e7 1383 <https://www.schneier.com/blowfish.html>
64b94cea 1384
584fffc8
SS
1385config CRYPTO_CAMELLIA
1386 tristate "Camellia cipher algorithms"
584fffc8
SS
1387 select CRYPTO_ALGAPI
1388 help
1389 Camellia cipher algorithms module.
1390
1391 Camellia is a symmetric key block cipher developed jointly
1392 at NTT and Mitsubishi Electric Corporation.
1393
1394 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1395
1396 See also:
1397 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1398
0b95ec56
JK
1399config CRYPTO_CAMELLIA_X86_64
1400 tristate "Camellia cipher algorithm (x86_64)"
f21a7c19 1401 depends on X86 && 64BIT
b95bba5d 1402 select CRYPTO_SKCIPHER
a1f91ecf 1403 imply CRYPTO_CTR
0b95ec56
JK
1404 help
1405 Camellia cipher algorithm module (x86_64).
1406
1407 Camellia is a symmetric key block cipher developed jointly
1408 at NTT and Mitsubishi Electric Corporation.
1409
1410 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1411
1412 See also:
d9b1d2e7
JK
1413 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1414
1415config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1416 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1417 depends on X86 && 64BIT
b95bba5d 1418 select CRYPTO_SKCIPHER
d9b1d2e7 1419 select CRYPTO_CAMELLIA_X86_64
44893bc2 1420 select CRYPTO_SIMD
55a7e88f 1421 imply CRYPTO_XTS
d9b1d2e7
JK
1422 help
1423 Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1424
1425 Camellia is a symmetric key block cipher developed jointly
1426 at NTT and Mitsubishi Electric Corporation.
1427
1428 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1429
1430 See also:
0b95ec56
JK
1431 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1432
f3f935a7
JK
1433config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1434 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1435 depends on X86 && 64BIT
f3f935a7 1436 select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
f3f935a7
JK
1437 help
1438 Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1439
1440 Camellia is a symmetric key block cipher developed jointly
1441 at NTT and Mitsubishi Electric Corporation.
1442
1443 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1444
1445 See also:
1446 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1447
81658ad0
DM
1448config CRYPTO_CAMELLIA_SPARC64
1449 tristate "Camellia cipher algorithm (SPARC64)"
1450 depends on SPARC64
81658ad0 1451 select CRYPTO_ALGAPI
b95bba5d 1452 select CRYPTO_SKCIPHER
81658ad0
DM
1453 help
1454 Camellia cipher algorithm module (SPARC64).
1455
1456 Camellia is a symmetric key block cipher developed jointly
1457 at NTT and Mitsubishi Electric Corporation.
1458
1459 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1460
1461 See also:
1462 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1463
044ab525
JK
1464config CRYPTO_CAST_COMMON
1465 tristate
1466 help
1467 Common parts of the CAST cipher algorithms shared by the
1468 generic c and the assembler implementations.
1469
1da177e4
LT
1470config CRYPTO_CAST5
1471 tristate "CAST5 (CAST-128) cipher algorithm"
cce9e06d 1472 select CRYPTO_ALGAPI
044ab525 1473 select CRYPTO_CAST_COMMON
1da177e4
LT
1474 help
1475 The CAST5 encryption algorithm (synonymous with CAST-128) is
1476 described in RFC2144.
1477
4d6d6a2c
JG
1478config CRYPTO_CAST5_AVX_X86_64
1479 tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1480 depends on X86 && 64BIT
b95bba5d 1481 select CRYPTO_SKCIPHER
4d6d6a2c 1482 select CRYPTO_CAST5
1e63183a
EB
1483 select CRYPTO_CAST_COMMON
1484 select CRYPTO_SIMD
e2d60e2f 1485 imply CRYPTO_CTR
4d6d6a2c
JG
1486 help
1487 The CAST5 encryption algorithm (synonymous with CAST-128) is
1488 described in RFC2144.
1489
1490 This module provides the Cast5 cipher algorithm that processes
1491 sixteen blocks parallel using the AVX instruction set.
1492
1da177e4
LT
1493config CRYPTO_CAST6
1494 tristate "CAST6 (CAST-256) cipher algorithm"
cce9e06d 1495 select CRYPTO_ALGAPI
044ab525 1496 select CRYPTO_CAST_COMMON
1da177e4
LT
1497 help
1498 The CAST6 encryption algorithm (synonymous with CAST-256) is
1499 described in RFC2612.
1500
4ea1277d
JG
1501config CRYPTO_CAST6_AVX_X86_64
1502 tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1503 depends on X86 && 64BIT
b95bba5d 1504 select CRYPTO_SKCIPHER
4ea1277d 1505 select CRYPTO_CAST6
4bd96924 1506 select CRYPTO_CAST_COMMON
4bd96924 1507 select CRYPTO_SIMD
2cc0fedb 1508 imply CRYPTO_XTS
7a6623cc 1509 imply CRYPTO_CTR
4ea1277d
JG
1510 help
1511 The CAST6 encryption algorithm (synonymous with CAST-256) is
1512 described in RFC2612.
1513
1514 This module provides the Cast6 cipher algorithm that processes
1515 eight blocks parallel using the AVX instruction set.
1516
584fffc8
SS
1517config CRYPTO_DES
1518 tristate "DES and Triple DES EDE cipher algorithms"
cce9e06d 1519 select CRYPTO_ALGAPI
04007b0e 1520 select CRYPTO_LIB_DES
1da177e4 1521 help
584fffc8 1522 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
fb4f10ed 1523
c5aac2df
DM
1524config CRYPTO_DES_SPARC64
1525 tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
97da37b3 1526 depends on SPARC64
c5aac2df 1527 select CRYPTO_ALGAPI
04007b0e 1528 select CRYPTO_LIB_DES
b95bba5d 1529 select CRYPTO_SKCIPHER
c5aac2df
DM
1530 help
1531 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1532 optimized using SPARC64 crypto opcodes.
1533
6574e6c6
JK
1534config CRYPTO_DES3_EDE_X86_64
1535 tristate "Triple DES EDE cipher algorithm (x86-64)"
1536 depends on X86 && 64BIT
b95bba5d 1537 select CRYPTO_SKCIPHER
04007b0e 1538 select CRYPTO_LIB_DES
768db5fe 1539 imply CRYPTO_CTR
6574e6c6
JK
1540 help
1541 Triple DES EDE (FIPS 46-3) algorithm.
1542
1543 This module provides implementation of the Triple DES EDE cipher
1544 algorithm that is optimized for x86-64 processors. Two versions of
1545 algorithm are provided; regular processing one input block and
1546 one that processes three blocks parallel.
1547
b7133757
JD
1548config CRYPTO_DES_S390
1549 tristate "DES and Triple DES cipher algorithms"
1550 depends on S390
1551 select CRYPTO_ALGAPI
1552 select CRYPTO_SKCIPHER
1553 select CRYPTO_LIB_DES
1554 help
1555 This is the s390 hardware accelerated implementation of the
1556 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1557
1558 As of z990 the ECB and CBC mode are hardware accelerated.
1559 As of z196 the CTR mode is hardware accelerated.
1560
584fffc8
SS
1561config CRYPTO_FCRYPT
1562 tristate "FCrypt cipher algorithm"
cce9e06d 1563 select CRYPTO_ALGAPI
b95bba5d 1564 select CRYPTO_SKCIPHER
1da177e4 1565 help
584fffc8 1566 FCrypt algorithm used by RxRPC.
1da177e4
LT
1567
1568config CRYPTO_KHAZAD
1569 tristate "Khazad cipher algorithm"
1674aea5 1570 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 1571 select CRYPTO_ALGAPI
1da177e4
LT
1572 help
1573 Khazad cipher algorithm.
1574
1575 Khazad was a finalist in the initial NESSIE competition. It is
1576 an algorithm optimized for 64-bit processors with good performance
1577 on 32-bit processors. Khazad uses an 128 bit key size.
1578
1579 See also:
6d8de74c 1580 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1da177e4 1581
c08d0e64 1582config CRYPTO_CHACHA20
aa762409 1583 tristate "ChaCha stream cipher algorithms"
5fb8ef25 1584 select CRYPTO_LIB_CHACHA_GENERIC
b95bba5d 1585 select CRYPTO_SKCIPHER
c08d0e64 1586 help
aa762409 1587 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
c08d0e64
MW
1588
1589 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1590 Bernstein and further specified in RFC7539 for use in IETF protocols.
de61d7ae 1591 This is the portable C implementation of ChaCha20. See also:
9332a9e7 1592 <https://cr.yp.to/chacha/chacha-20080128.pdf>
c08d0e64 1593
de61d7ae
EB
1594 XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1595 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
1596 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1597 while provably retaining ChaCha20's security. See also:
1598 <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1599
aa762409
EB
1600 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1601 reduced security margin but increased performance. It can be needed
1602 in some performance-sensitive scenarios.
1603
c9320b6d 1604config CRYPTO_CHACHA20_X86_64
4af78261 1605 tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
c9320b6d 1606 depends on X86 && 64BIT
b95bba5d 1607 select CRYPTO_SKCIPHER
28e8d89b 1608 select CRYPTO_LIB_CHACHA_GENERIC
84e03fa3 1609 select CRYPTO_ARCH_HAVE_LIB_CHACHA
c9320b6d 1610 help
7a507d62
EB
1611 SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1612 XChaCha20, and XChaCha12 stream ciphers.
c9320b6d 1613
3a2f58f3
AB
1614config CRYPTO_CHACHA_MIPS
1615 tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1616 depends on CPU_MIPS32_R2
660eda8d 1617 select CRYPTO_SKCIPHER
3a2f58f3
AB
1618 select CRYPTO_ARCH_HAVE_LIB_CHACHA
1619
b7133757
JD
1620config CRYPTO_CHACHA_S390
1621 tristate "ChaCha20 stream cipher"
1622 depends on S390
1623 select CRYPTO_SKCIPHER
1624 select CRYPTO_LIB_CHACHA_GENERIC
1625 select CRYPTO_ARCH_HAVE_LIB_CHACHA
1626 help
1627 This is the s390 SIMD implementation of the ChaCha20 stream
1628 cipher (RFC 7539).
1629
1630 It is available as of z13.
1631
584fffc8
SS
1632config CRYPTO_SEED
1633 tristate "SEED cipher algorithm"
1674aea5 1634 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 1635 select CRYPTO_ALGAPI
1da177e4 1636 help
584fffc8 1637 SEED cipher algorithm (RFC4269).
1da177e4 1638
584fffc8
SS
1639 SEED is a 128-bit symmetric key block cipher that has been
1640 developed by KISA (Korea Information Security Agency) as a
1641 national standard encryption algorithm of the Republic of Korea.
1642 It is a 16 round block cipher with the key size of 128 bit.
1643
1644 See also:
1645 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1646
e4e712bb
TY
1647config CRYPTO_ARIA
1648 tristate "ARIA cipher algorithm"
1649 select CRYPTO_ALGAPI
1650 help
1651 ARIA cipher algorithm (RFC5794).
1652
1653 ARIA is a standard encryption algorithm of the Republic of Korea.
1654 The ARIA specifies three key sizes and rounds.
1655 128-bit: 12 rounds.
1656 192-bit: 14 rounds.
1657 256-bit: 16 rounds.
1658
1659 See also:
1660 <https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do>
1661
584fffc8
SS
1662config CRYPTO_SERPENT
1663 tristate "Serpent cipher algorithm"
cce9e06d 1664 select CRYPTO_ALGAPI
1da177e4 1665 help
584fffc8 1666 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1da177e4 1667
584fffc8 1668 Keys are allowed to be from 0 to 256 bits in length, in steps
784506a1 1669 of 8 bits.
584fffc8
SS
1670
1671 See also:
9332a9e7 1672 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
584fffc8 1673
937c30d7
JK
1674config CRYPTO_SERPENT_SSE2_X86_64
1675 tristate "Serpent cipher algorithm (x86_64/SSE2)"
1676 depends on X86 && 64BIT
b95bba5d 1677 select CRYPTO_SKCIPHER
937c30d7 1678 select CRYPTO_SERPENT
e0f409dc 1679 select CRYPTO_SIMD
2e9440ae 1680 imply CRYPTO_CTR
937c30d7
JK
1681 help
1682 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1683
1684 Keys are allowed to be from 0 to 256 bits in length, in steps
1685 of 8 bits.
1686
1e6232f8 1687 This module provides Serpent cipher algorithm that processes eight
937c30d7
JK
1688 blocks parallel using SSE2 instruction set.
1689
1690 See also:
9332a9e7 1691 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
937c30d7 1692
251496db
JK
1693config CRYPTO_SERPENT_SSE2_586
1694 tristate "Serpent cipher algorithm (i586/SSE2)"
1695 depends on X86 && !64BIT
b95bba5d 1696 select CRYPTO_SKCIPHER
251496db 1697 select CRYPTO_SERPENT
e0f409dc 1698 select CRYPTO_SIMD
2e9440ae 1699 imply CRYPTO_CTR
251496db
JK
1700 help
1701 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1702
1703 Keys are allowed to be from 0 to 256 bits in length, in steps
1704 of 8 bits.
1705
1706 This module provides Serpent cipher algorithm that processes four
1707 blocks parallel using SSE2 instruction set.
1708
1709 See also:
9332a9e7 1710 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
7efe4076
JG
1711
1712config CRYPTO_SERPENT_AVX_X86_64
1713 tristate "Serpent cipher algorithm (x86_64/AVX)"
1714 depends on X86 && 64BIT
b95bba5d 1715 select CRYPTO_SKCIPHER
7efe4076 1716 select CRYPTO_SERPENT
e16bf974 1717 select CRYPTO_SIMD
9ec0af8a 1718 imply CRYPTO_XTS
2e9440ae 1719 imply CRYPTO_CTR
7efe4076
JG
1720 help
1721 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1722
1723 Keys are allowed to be from 0 to 256 bits in length, in steps
1724 of 8 bits.
1725
1726 This module provides the Serpent cipher algorithm that processes
1727 eight blocks parallel using the AVX instruction set.
1728
1729 See also:
9332a9e7 1730 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
251496db 1731
56d76c96
JK
1732config CRYPTO_SERPENT_AVX2_X86_64
1733 tristate "Serpent cipher algorithm (x86_64/AVX2)"
1734 depends on X86 && 64BIT
56d76c96 1735 select CRYPTO_SERPENT_AVX_X86_64
56d76c96
JK
1736 help
1737 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1738
1739 Keys are allowed to be from 0 to 256 bits in length, in steps
1740 of 8 bits.
1741
1742 This module provides Serpent cipher algorithm that processes 16
1743 blocks parallel using AVX2 instruction set.
1744
1745 See also:
9332a9e7 1746 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
56d76c96 1747
747c8ce4 1748config CRYPTO_SM4
d2825fa9
JD
1749 tristate
1750
1751config CRYPTO_SM4_GENERIC
747c8ce4
GBY
1752 tristate "SM4 cipher algorithm"
1753 select CRYPTO_ALGAPI
d2825fa9 1754 select CRYPTO_SM4
747c8ce4
GBY
1755 help
1756 SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1757
1758 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1759 Organization of State Commercial Administration of China (OSCCA)
1760 as an authorized cryptographic algorithms for the use within China.
1761
1762 SMS4 was originally created for use in protecting wireless
1763 networks, and is mandated in the Chinese National Standard for
1764 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1765 (GB.15629.11-2003).
1766
1767 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1768 standardized through TC 260 of the Standardization Administration
1769 of the People's Republic of China (SAC).
1770
1771 The input, output, and key of SMS4 are each 128 bits.
1772
1773 See also: <https://eprint.iacr.org/2008/329.pdf>
1774
1775 If unsure, say N.
1776
a7ee22ee
TZ
1777config CRYPTO_SM4_AESNI_AVX_X86_64
1778 tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)"
1779 depends on X86 && 64BIT
1780 select CRYPTO_SKCIPHER
1781 select CRYPTO_SIMD
1782 select CRYPTO_ALGAPI
d2825fa9 1783 select CRYPTO_SM4
a7ee22ee
TZ
1784 help
1785 SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX).
1786
1787 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1788 Organization of State Commercial Administration of China (OSCCA)
1789 as an authorized cryptographic algorithms for the use within China.
1790
1791 This is SM4 optimized implementation using AES-NI/AVX/x86_64
1792 instruction set for block cipher. Through two affine transforms,
1793 we can use the AES S-Box to simulate the SM4 S-Box to achieve the
1794 effect of instruction acceleration.
1795
1796 If unsure, say N.
1797
5b2efa2b
TZ
1798config CRYPTO_SM4_AESNI_AVX2_X86_64
1799 tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)"
1800 depends on X86 && 64BIT
1801 select CRYPTO_SKCIPHER
1802 select CRYPTO_SIMD
1803 select CRYPTO_ALGAPI
d2825fa9 1804 select CRYPTO_SM4
5b2efa2b
TZ
1805 select CRYPTO_SM4_AESNI_AVX_X86_64
1806 help
1807 SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2).
1808
1809 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1810 Organization of State Commercial Administration of China (OSCCA)
1811 as an authorized cryptographic algorithms for the use within China.
1812
1813 This is SM4 optimized implementation using AES-NI/AVX2/x86_64
1814 instruction set for block cipher. Through two affine transforms,
1815 we can use the AES S-Box to simulate the SM4 S-Box to achieve the
1816 effect of instruction acceleration.
1817
1818 If unsure, say N.
1819
584fffc8
SS
1820config CRYPTO_TEA
1821 tristate "TEA, XTEA and XETA cipher algorithms"
1674aea5 1822 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 1823 select CRYPTO_ALGAPI
1da177e4 1824 help
584fffc8 1825 TEA cipher algorithm.
1da177e4 1826
584fffc8
SS
1827 Tiny Encryption Algorithm is a simple cipher that uses
1828 many rounds for security. It is very fast and uses
1829 little memory.
1830
1831 Xtendend Tiny Encryption Algorithm is a modification to
1832 the TEA algorithm to address a potential key weakness
1833 in the TEA algorithm.
1834
1835 Xtendend Encryption Tiny Algorithm is a mis-implementation
1836 of the XTEA algorithm for compatibility purposes.
1837
1838config CRYPTO_TWOFISH
1839 tristate "Twofish cipher algorithm"
04ac7db3 1840 select CRYPTO_ALGAPI
584fffc8 1841 select CRYPTO_TWOFISH_COMMON
04ac7db3 1842 help
584fffc8 1843 Twofish cipher algorithm.
04ac7db3 1844
584fffc8
SS
1845 Twofish was submitted as an AES (Advanced Encryption Standard)
1846 candidate cipher by researchers at CounterPane Systems. It is a
1847 16 round block cipher supporting key sizes of 128, 192, and 256
1848 bits.
04ac7db3 1849
584fffc8 1850 See also:
9332a9e7 1851 <https://www.schneier.com/twofish.html>
584fffc8
SS
1852
1853config CRYPTO_TWOFISH_COMMON
1854 tristate
1855 help
1856 Common parts of the Twofish cipher algorithm shared by the
1857 generic c and the assembler implementations.
1858
1859config CRYPTO_TWOFISH_586
1860 tristate "Twofish cipher algorithms (i586)"
1861 depends on (X86 || UML_X86) && !64BIT
1862 select CRYPTO_ALGAPI
1863 select CRYPTO_TWOFISH_COMMON
f43dcaf2 1864 imply CRYPTO_CTR
584fffc8
SS
1865 help
1866 Twofish cipher algorithm.
1867
1868 Twofish was submitted as an AES (Advanced Encryption Standard)
1869 candidate cipher by researchers at CounterPane Systems. It is a
1870 16 round block cipher supporting key sizes of 128, 192, and 256
1871 bits.
04ac7db3
NT
1872
1873 See also:
9332a9e7 1874 <https://www.schneier.com/twofish.html>
04ac7db3 1875
584fffc8
SS
1876config CRYPTO_TWOFISH_X86_64
1877 tristate "Twofish cipher algorithm (x86_64)"
1878 depends on (X86 || UML_X86) && 64BIT
cce9e06d 1879 select CRYPTO_ALGAPI
584fffc8 1880 select CRYPTO_TWOFISH_COMMON
f43dcaf2 1881 imply CRYPTO_CTR
1da177e4 1882 help
584fffc8 1883 Twofish cipher algorithm (x86_64).
1da177e4 1884
584fffc8
SS
1885 Twofish was submitted as an AES (Advanced Encryption Standard)
1886 candidate cipher by researchers at CounterPane Systems. It is a
1887 16 round block cipher supporting key sizes of 128, 192, and 256
1888 bits.
1889
1890 See also:
9332a9e7 1891 <https://www.schneier.com/twofish.html>
584fffc8 1892
8280daad
JK
1893config CRYPTO_TWOFISH_X86_64_3WAY
1894 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
f21a7c19 1895 depends on X86 && 64BIT
b95bba5d 1896 select CRYPTO_SKCIPHER
8280daad
JK
1897 select CRYPTO_TWOFISH_COMMON
1898 select CRYPTO_TWOFISH_X86_64
1899 help
1900 Twofish cipher algorithm (x86_64, 3-way parallel).
1901
1902 Twofish was submitted as an AES (Advanced Encryption Standard)
1903 candidate cipher by researchers at CounterPane Systems. It is a
1904 16 round block cipher supporting key sizes of 128, 192, and 256
1905 bits.
1906
1907 This module provides Twofish cipher algorithm that processes three
1908 blocks parallel, utilizing resources of out-of-order CPUs better.
1909
1910 See also:
9332a9e7 1911 <https://www.schneier.com/twofish.html>
8280daad 1912
107778b5
JG
1913config CRYPTO_TWOFISH_AVX_X86_64
1914 tristate "Twofish cipher algorithm (x86_64/AVX)"
1915 depends on X86 && 64BIT
b95bba5d 1916 select CRYPTO_SKCIPHER
0e6ab46d 1917 select CRYPTO_SIMD
107778b5
JG
1918 select CRYPTO_TWOFISH_COMMON
1919 select CRYPTO_TWOFISH_X86_64
1920 select CRYPTO_TWOFISH_X86_64_3WAY
da4df93a 1921 imply CRYPTO_XTS
107778b5
JG
1922 help
1923 Twofish cipher algorithm (x86_64/AVX).
1924
1925 Twofish was submitted as an AES (Advanced Encryption Standard)
1926 candidate cipher by researchers at CounterPane Systems. It is a
1927 16 round block cipher supporting key sizes of 128, 192, and 256
1928 bits.
1929
1930 This module provides the Twofish cipher algorithm that processes
1931 eight blocks parallel using the AVX Instruction Set.
1932
1933 See also:
9332a9e7 1934 <https://www.schneier.com/twofish.html>
107778b5 1935
584fffc8
SS
1936comment "Compression"
1937
1938config CRYPTO_DEFLATE
1939 tristate "Deflate compression algorithm"
1940 select CRYPTO_ALGAPI
f6ded09d 1941 select CRYPTO_ACOMP2
584fffc8
SS
1942 select ZLIB_INFLATE
1943 select ZLIB_DEFLATE
3c09f17c 1944 help
584fffc8
SS
1945 This is the Deflate algorithm (RFC1951), specified for use in
1946 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1947
1948 You will most probably want this if using IPSec.
3c09f17c 1949
0b77abb3
ZS
1950config CRYPTO_LZO
1951 tristate "LZO compression algorithm"
1952 select CRYPTO_ALGAPI
ac9d2c4b 1953 select CRYPTO_ACOMP2
0b77abb3
ZS
1954 select LZO_COMPRESS
1955 select LZO_DECOMPRESS
1956 help
1957 This is the LZO algorithm.
1958
35a1fc18
SJ
1959config CRYPTO_842
1960 tristate "842 compression algorithm"
2062c5b6 1961 select CRYPTO_ALGAPI
6a8de3ae 1962 select CRYPTO_ACOMP2
2062c5b6
DS
1963 select 842_COMPRESS
1964 select 842_DECOMPRESS
35a1fc18
SJ
1965 help
1966 This is the 842 algorithm.
0ea8530d
CM
1967
1968config CRYPTO_LZ4
1969 tristate "LZ4 compression algorithm"
1970 select CRYPTO_ALGAPI
8cd9330e 1971 select CRYPTO_ACOMP2
0ea8530d
CM
1972 select LZ4_COMPRESS
1973 select LZ4_DECOMPRESS
1974 help
1975 This is the LZ4 algorithm.
1976
1977config CRYPTO_LZ4HC
1978 tristate "LZ4HC compression algorithm"
1979 select CRYPTO_ALGAPI
91d53d96 1980 select CRYPTO_ACOMP2
0ea8530d
CM
1981 select LZ4HC_COMPRESS
1982 select LZ4_DECOMPRESS
1983 help
1984 This is the LZ4 high compression mode algorithm.
35a1fc18 1985
d28fc3db
NT
1986config CRYPTO_ZSTD
1987 tristate "Zstd compression algorithm"
1988 select CRYPTO_ALGAPI
1989 select CRYPTO_ACOMP2
1990 select ZSTD_COMPRESS
1991 select ZSTD_DECOMPRESS
1992 help
1993 This is the zstd algorithm.
1994
17f0f4a4
NH
1995comment "Random Number Generation"
1996
1997config CRYPTO_ANSI_CPRNG
1998 tristate "Pseudo Random Number Generation for Cryptographic modules"
1999 select CRYPTO_AES
2000 select CRYPTO_RNG
17f0f4a4
NH
2001 help
2002 This option enables the generic pseudo random number generator
2003 for cryptographic modules. Uses the Algorithm specified in
7dd607e8
JK
2004 ANSI X9.31 A.2.4. Note that this option must be enabled if
2005 CRYPTO_FIPS is selected
17f0f4a4 2006
f2c89a10 2007menuconfig CRYPTO_DRBG_MENU
419090c6 2008 tristate "NIST SP800-90A DRBG"
419090c6
SM
2009 help
2010 NIST SP800-90A compliant DRBG. In the following submenu, one or
2011 more of the DRBG types must be selected.
2012
f2c89a10 2013if CRYPTO_DRBG_MENU
419090c6
SM
2014
2015config CRYPTO_DRBG_HMAC
401e4238 2016 bool
419090c6 2017 default y
419090c6 2018 select CRYPTO_HMAC
5261cdf4 2019 select CRYPTO_SHA512
419090c6
SM
2020
2021config CRYPTO_DRBG_HASH
2022 bool "Enable Hash DRBG"
826775bb 2023 select CRYPTO_SHA256
419090c6
SM
2024 help
2025 Enable the Hash DRBG variant as defined in NIST SP800-90A.
2026
2027config CRYPTO_DRBG_CTR
2028 bool "Enable CTR DRBG"
419090c6 2029 select CRYPTO_AES
d6fc1a45 2030 select CRYPTO_CTR
419090c6
SM
2031 help
2032 Enable the CTR DRBG variant as defined in NIST SP800-90A.
2033
f2c89a10
HX
2034config CRYPTO_DRBG
2035 tristate
401e4238 2036 default CRYPTO_DRBG_MENU
f2c89a10 2037 select CRYPTO_RNG
bb5530e4 2038 select CRYPTO_JITTERENTROPY
f2c89a10
HX
2039
2040endif # if CRYPTO_DRBG_MENU
419090c6 2041
bb5530e4
SM
2042config CRYPTO_JITTERENTROPY
2043 tristate "Jitterentropy Non-Deterministic Random Number Generator"
2f313e02 2044 select CRYPTO_RNG
bb5530e4
SM
2045 help
2046 The Jitterentropy RNG is a noise that is intended
2047 to provide seed to another RNG. The RNG does not
2048 perform any cryptographic whitening of the generated
2049 random numbers. This Jitterentropy RNG registers with
2050 the kernel crypto API and can be used by any caller.
2051
026a733e
SM
2052config CRYPTO_KDF800108_CTR
2053 tristate
a88592cc 2054 select CRYPTO_HMAC
304b4ace 2055 select CRYPTO_SHA256
026a733e 2056
03c8efc1
HX
2057config CRYPTO_USER_API
2058 tristate
2059
fe869cdb
HX
2060config CRYPTO_USER_API_HASH
2061 tristate "User-space interface for hash algorithms"
7451708f 2062 depends on NET
fe869cdb
HX
2063 select CRYPTO_HASH
2064 select CRYPTO_USER_API
2065 help
2066 This option enables the user-spaces interface for hash
2067 algorithms.
2068
8ff59090
HX
2069config CRYPTO_USER_API_SKCIPHER
2070 tristate "User-space interface for symmetric key cipher algorithms"
7451708f 2071 depends on NET
b95bba5d 2072 select CRYPTO_SKCIPHER
8ff59090
HX
2073 select CRYPTO_USER_API
2074 help
2075 This option enables the user-spaces interface for symmetric
2076 key cipher algorithms.
2077
2f375538
SM
2078config CRYPTO_USER_API_RNG
2079 tristate "User-space interface for random number generator algorithms"
2080 depends on NET
2081 select CRYPTO_RNG
2082 select CRYPTO_USER_API
2083 help
2084 This option enables the user-spaces interface for random
2085 number generator algorithms.
2086
77ebdabe
EP
2087config CRYPTO_USER_API_RNG_CAVP
2088 bool "Enable CAVP testing of DRBG"
2089 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
2090 help
2091 This option enables extra API for CAVP testing via the user-space
2092 interface: resetting of DRBG entropy, and providing Additional Data.
2093 This should only be enabled for CAVP testing. You should say
2094 no unless you know what this is.
2095
b64a2d95
HX
2096config CRYPTO_USER_API_AEAD
2097 tristate "User-space interface for AEAD cipher algorithms"
2098 depends on NET
2099 select CRYPTO_AEAD
b95bba5d 2100 select CRYPTO_SKCIPHER
72548b09 2101 select CRYPTO_NULL
b64a2d95
HX
2102 select CRYPTO_USER_API
2103 help
2104 This option enables the user-spaces interface for AEAD
2105 cipher algorithms.
2106
9ace6771
AB
2107config CRYPTO_USER_API_ENABLE_OBSOLETE
2108 bool "Enable obsolete cryptographic algorithms for userspace"
2109 depends on CRYPTO_USER_API
2110 default y
2111 help
2112 Allow obsolete cryptographic algorithms to be selected that have
2113 already been phased out from internal use by the kernel, and are
2114 only useful for userspace clients that still rely on them.
2115
cac5818c
CL
2116config CRYPTO_STATS
2117 bool "Crypto usage statistics for User-space"
a6a31385 2118 depends on CRYPTO_USER
cac5818c
CL
2119 help
2120 This option enables the gathering of crypto stats.
2121 This will collect:
2122 - encrypt/decrypt size and numbers of symmeric operations
2123 - compress/decompress size and numbers of compress operations
2124 - size and numbers of hash operations
2125 - encrypt/decrypt/sign/verify numbers for asymmetric operations
2126 - generate/seed numbers for rng operations
2127
ee08997f
DK
2128config CRYPTO_HASH_INFO
2129 bool
2130
1da177e4 2131source "drivers/crypto/Kconfig"
8636a1f9
MY
2132source "crypto/asymmetric_keys/Kconfig"
2133source "certs/Kconfig"
1da177e4 2134
cce9e06d 2135endif # if CRYPTO