]> Git Repo - linux.git/blame - crypto/Kconfig
crypto: Kconfig - sort the arm entries
[linux.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
584fffc8 319comment "Authenticated Encryption with Associated Data"
cd12fb90 320
584fffc8
SS
321config CRYPTO_CCM
322 tristate "CCM support"
323 select CRYPTO_CTR
f15f05b0 324 select CRYPTO_HASH
584fffc8 325 select CRYPTO_AEAD
c8a3315a 326 select CRYPTO_MANAGER
1da177e4 327 help
584fffc8 328 Support for Counter with CBC MAC. Required for IPsec.
1da177e4 329
584fffc8
SS
330config CRYPTO_GCM
331 tristate "GCM/GMAC support"
332 select CRYPTO_CTR
333 select CRYPTO_AEAD
9382d97a 334 select CRYPTO_GHASH
9489667d 335 select CRYPTO_NULL
c8a3315a 336 select CRYPTO_MANAGER
1da177e4 337 help
584fffc8
SS
338 Support for Galois/Counter Mode (GCM) and Galois Message
339 Authentication Code (GMAC). Required for IPSec.
1da177e4 340
71ebc4d1
MW
341config CRYPTO_CHACHA20POLY1305
342 tristate "ChaCha20-Poly1305 AEAD support"
343 select CRYPTO_CHACHA20
344 select CRYPTO_POLY1305
345 select CRYPTO_AEAD
c8a3315a 346 select CRYPTO_MANAGER
71ebc4d1
MW
347 help
348 ChaCha20-Poly1305 AEAD support, RFC7539.
349
350 Support for the AEAD wrapper using the ChaCha20 stream cipher combined
351 with the Poly1305 authenticator. It is defined in RFC7539 for use in
352 IETF protocols.
353
f606a88e
OM
354config CRYPTO_AEGIS128
355 tristate "AEGIS-128 AEAD algorithm"
356 select CRYPTO_AEAD
357 select CRYPTO_AES # for AES S-box tables
358 help
359 Support for the AEGIS-128 dedicated AEAD algorithm.
360
a4397635
AB
361config CRYPTO_AEGIS128_SIMD
362 bool "Support SIMD acceleration for AEGIS-128"
363 depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
364 default y
365
584fffc8
SS
366config CRYPTO_SEQIV
367 tristate "Sequence Number IV Generator"
368 select CRYPTO_AEAD
b95bba5d 369 select CRYPTO_SKCIPHER
856e3f40 370 select CRYPTO_NULL
401e4238 371 select CRYPTO_RNG_DEFAULT
c8a3315a 372 select CRYPTO_MANAGER
1da177e4 373 help
584fffc8
SS
374 This IV generator generates an IV based on a sequence number by
375 xoring it with a salt. This algorithm is mainly useful for CTR
1da177e4 376
a10f554f
HX
377config CRYPTO_ECHAINIV
378 tristate "Encrypted Chain IV Generator"
379 select CRYPTO_AEAD
380 select CRYPTO_NULL
401e4238 381 select CRYPTO_RNG_DEFAULT
c8a3315a 382 select CRYPTO_MANAGER
a10f554f
HX
383 help
384 This IV generator generates an IV based on the encryption of
385 a sequence number xored with a salt. This is the default
386 algorithm for CBC.
387
584fffc8 388comment "Block modes"
c494e070 389
584fffc8
SS
390config CRYPTO_CBC
391 tristate "CBC support"
b95bba5d 392 select CRYPTO_SKCIPHER
43518407 393 select CRYPTO_MANAGER
db131ef9 394 help
584fffc8
SS
395 CBC: Cipher Block Chaining mode
396 This block cipher algorithm is required for IPSec.
db131ef9 397
a7d85e06
JB
398config CRYPTO_CFB
399 tristate "CFB support"
b95bba5d 400 select CRYPTO_SKCIPHER
a7d85e06
JB
401 select CRYPTO_MANAGER
402 help
403 CFB: Cipher FeedBack mode
404 This block cipher algorithm is required for TPM2 Cryptography.
405
584fffc8
SS
406config CRYPTO_CTR
407 tristate "CTR support"
b95bba5d 408 select CRYPTO_SKCIPHER
43518407 409 select CRYPTO_MANAGER
db131ef9 410 help
584fffc8 411 CTR: Counter mode
db131ef9
HX
412 This block cipher algorithm is required for IPSec.
413
584fffc8
SS
414config CRYPTO_CTS
415 tristate "CTS support"
b95bba5d 416 select CRYPTO_SKCIPHER
c8a3315a 417 select CRYPTO_MANAGER
584fffc8
SS
418 help
419 CTS: Cipher Text Stealing
420 This is the Cipher Text Stealing mode as described by
ecd6d5c9
GBY
421 Section 8 of rfc2040 and referenced by rfc3962
422 (rfc3962 includes errata information in its Appendix A) or
423 CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
584fffc8
SS
424 This mode is required for Kerberos gss mechanism support
425 for AES encryption.
426
ecd6d5c9
GBY
427 See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
428
584fffc8
SS
429config CRYPTO_ECB
430 tristate "ECB support"
b95bba5d 431 select CRYPTO_SKCIPHER
91652be5 432 select CRYPTO_MANAGER
91652be5 433 help
584fffc8
SS
434 ECB: Electronic CodeBook mode
435 This is the simplest block cipher algorithm. It simply encrypts
436 the input block by block.
91652be5 437
64470f1b 438config CRYPTO_LRW
2470a2b2 439 tristate "LRW support"
b95bba5d 440 select CRYPTO_SKCIPHER
64470f1b
RS
441 select CRYPTO_MANAGER
442 select CRYPTO_GF128MUL
f60bbbbe 443 select CRYPTO_ECB
64470f1b
RS
444 help
445 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
446 narrow block cipher mode for dm-crypt. Use it with cipher
447 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
448 The first 128, 192 or 256 bits in the key are used for AES and the
449 rest is used to tie each cipher block to its logical position.
450
e497c518
GBY
451config CRYPTO_OFB
452 tristate "OFB support"
b95bba5d 453 select CRYPTO_SKCIPHER
e497c518
GBY
454 select CRYPTO_MANAGER
455 help
456 OFB: the Output Feedback mode makes a block cipher into a synchronous
457 stream cipher. It generates keystream blocks, which are then XORed
458 with the plaintext blocks to get the ciphertext. Flipping a bit in the
459 ciphertext produces a flipped bit in the plaintext at the same
460 location. This property allows many error correcting codes to function
461 normally even when applied before encryption.
462
584fffc8
SS
463config CRYPTO_PCBC
464 tristate "PCBC support"
b95bba5d 465 select CRYPTO_SKCIPHER
584fffc8
SS
466 select CRYPTO_MANAGER
467 help
468 PCBC: Propagating Cipher Block Chaining mode
469 This block cipher algorithm is required for RxRPC.
470
17fee07a
NH
471config CRYPTO_XCTR
472 tristate
473 select CRYPTO_SKCIPHER
474 select CRYPTO_MANAGER
475 help
476 XCTR: XOR Counter mode. This blockcipher mode is a variant of CTR mode
477 using XORs and little-endian addition rather than big-endian arithmetic.
478 XCTR mode is used to implement HCTR2.
479
f19f5111 480config CRYPTO_XTS
5bcf8e6d 481 tristate "XTS support"
b95bba5d 482 select CRYPTO_SKCIPHER
f19f5111 483 select CRYPTO_MANAGER
12cb3a1c 484 select CRYPTO_ECB
f19f5111
RS
485 help
486 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
487 key size 256, 384 or 512 bits. This implementation currently
488 can't handle a sectorsize which is not a multiple of 16 bytes.
489
1c49678e
SM
490config CRYPTO_KEYWRAP
491 tristate "Key wrapping support"
b95bba5d 492 select CRYPTO_SKCIPHER
c8a3315a 493 select CRYPTO_MANAGER
1c49678e
SM
494 help
495 Support for key wrapping (NIST SP800-38F / RFC3394) without
496 padding.
497
26609a21
EB
498config CRYPTO_NHPOLY1305
499 tristate
500 select CRYPTO_HASH
48ea8c6e 501 select CRYPTO_LIB_POLY1305_GENERIC
26609a21 502
059c2a4d
EB
503config CRYPTO_ADIANTUM
504 tristate "Adiantum support"
505 select CRYPTO_CHACHA20
48ea8c6e 506 select CRYPTO_LIB_POLY1305_GENERIC
059c2a4d 507 select CRYPTO_NHPOLY1305
c8a3315a 508 select CRYPTO_MANAGER
059c2a4d
EB
509 help
510 Adiantum is a tweakable, length-preserving encryption mode
511 designed for fast and secure disk encryption, especially on
512 CPUs without dedicated crypto instructions. It encrypts
513 each sector using the XChaCha12 stream cipher, two passes of
514 an ε-almost-∆-universal hash function, and an invocation of
515 the AES-256 block cipher on a single 16-byte block. On CPUs
516 without AES instructions, Adiantum is much faster than
517 AES-XTS.
518
519 Adiantum's security is provably reducible to that of its
520 underlying stream and block ciphers, subject to a security
521 bound. Unlike XTS, Adiantum is a true wide-block encryption
522 mode, so it actually provides an even stronger notion of
523 security than XTS, subject to the security bound.
524
525 If unsure, say N.
526
7ff554ce
NH
527config CRYPTO_HCTR2
528 tristate "HCTR2 support"
529 select CRYPTO_XCTR
530 select CRYPTO_POLYVAL
531 select CRYPTO_MANAGER
532 help
533 HCTR2 is a length-preserving encryption mode for storage encryption that
534 is efficient on processors with instructions to accelerate AES and
535 carryless multiplication, e.g. x86 processors with AES-NI and CLMUL, and
536 ARM processors with the ARMv8 crypto extensions.
537
be1eb7f7
AB
538config CRYPTO_ESSIV
539 tristate "ESSIV support for block encryption"
540 select CRYPTO_AUTHENC
541 help
542 Encrypted salt-sector initialization vector (ESSIV) is an IV
543 generation method that is used in some cases by fscrypt and/or
544 dm-crypt. It uses the hash of the block encryption key as the
545 symmetric key for a block encryption pass applied to the input
546 IV, making low entropy IV sources more suitable for block
547 encryption.
548
549 This driver implements a crypto API template that can be
ab3d436b 550 instantiated either as an skcipher or as an AEAD (depending on the
be1eb7f7
AB
551 type of the first template argument), and which defers encryption
552 and decryption requests to the encapsulated cipher after applying
ab3d436b 553 ESSIV to the input IV. Note that in the AEAD case, it is assumed
be1eb7f7
AB
554 that the keys are presented in the same format used by the authenc
555 template, and that the IV appears at the end of the authenticated
556 associated data (AAD) region (which is how dm-crypt uses it.)
557
558 Note that the use of ESSIV is not recommended for new deployments,
559 and so this only needs to be enabled when interoperability with
560 existing encrypted volumes of filesystems is required, or when
561 building for a particular system that requires it (e.g., when
562 the SoC in question has accelerated CBC but not XTS, making CBC
563 combined with ESSIV the only feasible mode for h/w accelerated
564 block encryption)
565
584fffc8
SS
566comment "Hash modes"
567
93b5e86a
JK
568config CRYPTO_CMAC
569 tristate "CMAC support"
570 select CRYPTO_HASH
571 select CRYPTO_MANAGER
572 help
573 Cipher-based Message Authentication Code (CMAC) specified by
574 The National Institute of Standards and Technology (NIST).
575
576 https://tools.ietf.org/html/rfc4493
577 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
578
584fffc8
SS
579config CRYPTO_HMAC
580 tristate "HMAC support"
581 select CRYPTO_HASH
23e353c8 582 select CRYPTO_MANAGER
23e353c8 583 help
584fffc8
SS
584 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
585 This is required for IPSec.
23e353c8 586
584fffc8
SS
587config CRYPTO_XCBC
588 tristate "XCBC support"
584fffc8
SS
589 select CRYPTO_HASH
590 select CRYPTO_MANAGER
76cb9521 591 help
584fffc8 592 XCBC: Keyed-Hashing with encryption algorithm
9332a9e7 593 https://www.ietf.org/rfc/rfc3566.txt
584fffc8
SS
594 http://csrc.nist.gov/encryption/modes/proposedmodes/
595 xcbc-mac/xcbc-mac-spec.pdf
76cb9521 596
f1939f7c
SW
597config CRYPTO_VMAC
598 tristate "VMAC support"
f1939f7c
SW
599 select CRYPTO_HASH
600 select CRYPTO_MANAGER
601 help
602 VMAC is a message authentication algorithm designed for
603 very high speed on 64-bit architectures.
604
605 See also:
9332a9e7 606 <https://fastcrypto.org/vmac>
f1939f7c 607
584fffc8 608comment "Digest"
28db8e3e 609
584fffc8
SS
610config CRYPTO_CRC32C
611 tristate "CRC32c CRC algorithm"
5773a3e6 612 select CRYPTO_HASH
6a0962b2 613 select CRC32
4a49b499 614 help
584fffc8
SS
615 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
616 by iSCSI for header and data digests and by others.
69c35efc 617 See Castagnoli93. Module will be crc32c.
4a49b499 618
78c37d19
AB
619config CRYPTO_CRC32
620 tristate "CRC32 CRC algorithm"
621 select CRYPTO_HASH
622 select CRC32
623 help
624 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
625 Shash crypto api wrappers to crc32_le function.
626
67882e76
NB
627config CRYPTO_XXHASH
628 tristate "xxHash hash algorithm"
629 select CRYPTO_HASH
630 select XXHASH
631 help
632 xxHash non-cryptographic hash algorithm. Extremely fast, working at
633 speeds close to RAM limits.
634
91d68933
DS
635config CRYPTO_BLAKE2B
636 tristate "BLAKE2b digest algorithm"
637 select CRYPTO_HASH
638 help
639 Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
640 optimized for 64bit platforms and can produce digests of any size
641 between 1 to 64. The keyed hash is also implemented.
642
643 This module provides the following algorithms:
644
645 - blake2b-160
646 - blake2b-256
647 - blake2b-384
648 - blake2b-512
649
650 See https://blake2.net for further information.
651
68411521
HX
652config CRYPTO_CRCT10DIF
653 tristate "CRCT10DIF algorithm"
654 select CRYPTO_HASH
655 help
656 CRC T10 Data Integrity Field computation is being cast as
657 a crypto transform. This allows for faster crc t10 diff
658 transforms to be used if they are available.
659
f3813f4b
KB
660config CRYPTO_CRC64_ROCKSOFT
661 tristate "Rocksoft Model CRC64 algorithm"
662 depends on CRC64
663 select CRYPTO_HASH
664
2cdc6899 665config CRYPTO_GHASH
8dfa20fc 666 tristate "GHASH hash function"
2cdc6899 667 select CRYPTO_GF128MUL
578c60fb 668 select CRYPTO_HASH
2cdc6899 669 help
8dfa20fc
EB
670 GHASH is the hash function used in GCM (Galois/Counter Mode).
671 It is not a general-purpose cryptographic hash function.
2cdc6899 672
f3c923a0
NH
673config CRYPTO_POLYVAL
674 tristate
675 select CRYPTO_GF128MUL
676 select CRYPTO_HASH
677 help
678 POLYVAL is the hash function used in HCTR2. It is not a general-purpose
679 cryptographic hash function.
680
f979e014
MW
681config CRYPTO_POLY1305
682 tristate "Poly1305 authenticator algorithm"
578c60fb 683 select CRYPTO_HASH
48ea8c6e 684 select CRYPTO_LIB_POLY1305_GENERIC
f979e014
MW
685 help
686 Poly1305 authenticator algorithm, RFC7539.
687
688 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
689 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
690 in IETF protocols. This is the portable C implementation of Poly1305.
691
584fffc8
SS
692config CRYPTO_MD4
693 tristate "MD4 digest algorithm"
808a1763 694 select CRYPTO_HASH
124b53d0 695 help
584fffc8 696 MD4 message digest algorithm (RFC1320).
124b53d0 697
584fffc8
SS
698config CRYPTO_MD5
699 tristate "MD5 digest algorithm"
14b75ba7 700 select CRYPTO_HASH
1da177e4 701 help
584fffc8 702 MD5 message digest algorithm (RFC1321).
1da177e4 703
584fffc8
SS
704config CRYPTO_MICHAEL_MIC
705 tristate "Michael MIC keyed digest algorithm"
19e2bf14 706 select CRYPTO_HASH
90831639 707 help
584fffc8
SS
708 Michael MIC is used for message integrity protection in TKIP
709 (IEEE 802.11i). This algorithm is required for TKIP, but it
710 should not be used for other purposes because of the weakness
711 of the algorithm.
90831639 712
82798f90 713config CRYPTO_RMD160
b6d44341 714 tristate "RIPEMD-160 digest algorithm"
e5835fba 715 select CRYPTO_HASH
b6d44341
AB
716 help
717 RIPEMD-160 (ISO/IEC 10118-3:2004).
82798f90 718
b6d44341
AB
719 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
720 to be used as a secure replacement for the 128-bit hash functions
4cbdecd0 721 MD4, MD5 and its predecessor RIPEMD
b6d44341 722 (not to be confused with RIPEMD-128).
82798f90 723
b6d44341
AB
724 It's speed is comparable to SHA1 and there are no known attacks
725 against RIPEMD-160.
534fe2c1 726
b6d44341 727 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
9332a9e7 728 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
534fe2c1 729
584fffc8
SS
730config CRYPTO_SHA1
731 tristate "SHA1 digest algorithm"
54ccb367 732 select CRYPTO_HASH
ec8f7f48 733 select CRYPTO_LIB_SHA1
1da177e4 734 help
584fffc8 735 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
1da177e4 736
584fffc8
SS
737config CRYPTO_SHA256
738 tristate "SHA224 and SHA256 digest algorithm"
50e109b5 739 select CRYPTO_HASH
08c327f6 740 select CRYPTO_LIB_SHA256
1da177e4 741 help
584fffc8 742 SHA256 secure hash standard (DFIPS 180-2).
1da177e4 743
584fffc8
SS
744 This version of SHA implements a 256 bit hash with 128 bits of
745 security against collision attacks.
2729bb42 746
b6d44341
AB
747 This code also includes SHA-224, a 224 bit hash with 112 bits
748 of security against collision attacks.
584fffc8
SS
749
750config CRYPTO_SHA512
751 tristate "SHA384 and SHA512 digest algorithms"
bd9d20db 752 select CRYPTO_HASH
b9f535ff 753 help
584fffc8 754 SHA512 secure hash standard (DFIPS 180-2).
b9f535ff 755
584fffc8
SS
756 This version of SHA implements a 512 bit hash with 256 bits of
757 security against collision attacks.
b9f535ff 758
584fffc8
SS
759 This code also includes SHA-384, a 384 bit hash with 192 bits
760 of security against collision attacks.
b9f535ff 761
53964b9e
JG
762config CRYPTO_SHA3
763 tristate "SHA3 digest algorithm"
764 select CRYPTO_HASH
765 help
766 SHA-3 secure hash standard (DFIPS 202). It's based on
767 cryptographic sponge function family called Keccak.
768
769 References:
770 http://keccak.noekeon.org/
771
4f0fc160 772config CRYPTO_SM3
d2825fa9
JD
773 tristate
774
775config CRYPTO_SM3_GENERIC
4f0fc160
GBY
776 tristate "SM3 digest algorithm"
777 select CRYPTO_HASH
d2825fa9 778 select CRYPTO_SM3
4f0fc160
GBY
779 help
780 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
781 It is part of the Chinese Commercial Cryptography suite.
782
783 References:
784 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
785 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
786
fe18957e
VC
787config CRYPTO_STREEBOG
788 tristate "Streebog Hash Function"
789 select CRYPTO_HASH
790 help
791 Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
792 cryptographic standard algorithms (called GOST algorithms).
793 This setting enables two hash algorithms with 256 and 512 bits output.
794
795 References:
796 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
797 https://tools.ietf.org/html/rfc6986
798
584fffc8
SS
799config CRYPTO_WP512
800 tristate "Whirlpool digest algorithms"
4946510b 801 select CRYPTO_HASH
1da177e4 802 help
584fffc8 803 Whirlpool hash algorithm 512, 384 and 256-bit hashes
1da177e4 804
584fffc8
SS
805 Whirlpool-512 is part of the NESSIE cryptographic primitives.
806 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1da177e4
LT
807
808 See also:
6d8de74c 809 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
584fffc8
SS
810
811comment "Ciphers"
1da177e4
LT
812
813config CRYPTO_AES
814 tristate "AES cipher algorithms"
cce9e06d 815 select CRYPTO_ALGAPI
5bb12d78 816 select CRYPTO_LIB_AES
1da177e4 817 help
584fffc8 818 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
819 algorithm.
820
821 Rijndael appears to be consistently a very good performer in
584fffc8
SS
822 both hardware and software across a wide range of computing
823 environments regardless of its use in feedback or non-feedback
824 modes. Its key setup time is excellent, and its key agility is
825 good. Rijndael's very low memory requirements make it very well
826 suited for restricted-space environments, in which it also
827 demonstrates excellent performance. Rijndael's operations are
828 among the easiest to defend against power and timing attacks.
1da177e4 829
584fffc8 830 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
831
832 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
833
b5e0b032
AB
834config CRYPTO_AES_TI
835 tristate "Fixed time AES cipher"
836 select CRYPTO_ALGAPI
e59c1c98 837 select CRYPTO_LIB_AES
b5e0b032
AB
838 help
839 This is a generic implementation of AES that attempts to eliminate
840 data dependent latencies as much as possible without affecting
841 performance too much. It is intended for use by the generic CCM
842 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
843 solely on encryption (although decryption is supported as well, but
844 with a more dramatic performance hit)
845
846 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
847 8 for decryption), this implementation only uses just two S-boxes of
848 256 bytes each, and attempts to eliminate data dependent latencies by
849 prefetching the entire table into the cache at the start of each
0a6a40c2
EB
850 block. Interrupts are also disabled to avoid races where cachelines
851 are evicted when the CPU is interrupted to do something else.
b5e0b032 852
584fffc8
SS
853config CRYPTO_ANUBIS
854 tristate "Anubis cipher algorithm"
1674aea5 855 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
584fffc8
SS
856 select CRYPTO_ALGAPI
857 help
858 Anubis cipher algorithm.
859
860 Anubis is a variable key length cipher which can use keys from
861 128 bits to 320 bits in length. It was evaluated as a entrant
862 in the NESSIE competition.
863
864 See also:
6d8de74c
JM
865 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
866 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
584fffc8
SS
867
868config CRYPTO_ARC4
869 tristate "ARC4 cipher algorithm"
9ace6771 870 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
b95bba5d 871 select CRYPTO_SKCIPHER
dc51f257 872 select CRYPTO_LIB_ARC4
584fffc8
SS
873 help
874 ARC4 cipher algorithm.
875
876 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
877 bits in length. This algorithm is required for driver-based
878 WEP, but it should not be for other purposes because of the
879 weakness of the algorithm.
880
881config CRYPTO_BLOWFISH
882 tristate "Blowfish cipher algorithm"
883 select CRYPTO_ALGAPI
52ba867c 884 select CRYPTO_BLOWFISH_COMMON
584fffc8
SS
885 help
886 Blowfish cipher algorithm, by Bruce Schneier.
887
888 This is a variable key length cipher which can use keys from 32
889 bits to 448 bits in length. It's fast, simple and specifically
890 designed for use on "large microprocessors".
891
892 See also:
9332a9e7 893 <https://www.schneier.com/blowfish.html>
584fffc8 894
52ba867c
JK
895config CRYPTO_BLOWFISH_COMMON
896 tristate
897 help
898 Common parts of the Blowfish cipher algorithm shared by the
899 generic c and the assembler implementations.
900
901 See also:
9332a9e7 902 <https://www.schneier.com/blowfish.html>
52ba867c 903
584fffc8
SS
904config CRYPTO_CAMELLIA
905 tristate "Camellia cipher algorithms"
584fffc8
SS
906 select CRYPTO_ALGAPI
907 help
908 Camellia cipher algorithms module.
909
910 Camellia is a symmetric key block cipher developed jointly
911 at NTT and Mitsubishi Electric Corporation.
912
913 The Camellia specifies three key sizes: 128, 192 and 256 bits.
914
915 See also:
916 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
917
044ab525
JK
918config CRYPTO_CAST_COMMON
919 tristate
920 help
921 Common parts of the CAST cipher algorithms shared by the
922 generic c and the assembler implementations.
923
1da177e4
LT
924config CRYPTO_CAST5
925 tristate "CAST5 (CAST-128) cipher algorithm"
cce9e06d 926 select CRYPTO_ALGAPI
044ab525 927 select CRYPTO_CAST_COMMON
1da177e4
LT
928 help
929 The CAST5 encryption algorithm (synonymous with CAST-128) is
930 described in RFC2144.
931
932config CRYPTO_CAST6
933 tristate "CAST6 (CAST-256) cipher algorithm"
cce9e06d 934 select CRYPTO_ALGAPI
044ab525 935 select CRYPTO_CAST_COMMON
1da177e4
LT
936 help
937 The CAST6 encryption algorithm (synonymous with CAST-256) is
938 described in RFC2612.
939
584fffc8
SS
940config CRYPTO_DES
941 tristate "DES and Triple DES EDE cipher algorithms"
cce9e06d 942 select CRYPTO_ALGAPI
04007b0e 943 select CRYPTO_LIB_DES
1da177e4 944 help
584fffc8 945 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
fb4f10ed 946
584fffc8
SS
947config CRYPTO_FCRYPT
948 tristate "FCrypt cipher algorithm"
cce9e06d 949 select CRYPTO_ALGAPI
b95bba5d 950 select CRYPTO_SKCIPHER
1da177e4 951 help
584fffc8 952 FCrypt algorithm used by RxRPC.
1da177e4
LT
953
954config CRYPTO_KHAZAD
955 tristate "Khazad cipher algorithm"
1674aea5 956 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 957 select CRYPTO_ALGAPI
1da177e4
LT
958 help
959 Khazad cipher algorithm.
960
961 Khazad was a finalist in the initial NESSIE competition. It is
962 an algorithm optimized for 64-bit processors with good performance
963 on 32-bit processors. Khazad uses an 128 bit key size.
964
965 See also:
6d8de74c 966 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1da177e4 967
c08d0e64 968config CRYPTO_CHACHA20
aa762409 969 tristate "ChaCha stream cipher algorithms"
5fb8ef25 970 select CRYPTO_LIB_CHACHA_GENERIC
b95bba5d 971 select CRYPTO_SKCIPHER
c08d0e64 972 help
aa762409 973 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
c08d0e64
MW
974
975 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
976 Bernstein and further specified in RFC7539 for use in IETF protocols.
de61d7ae 977 This is the portable C implementation of ChaCha20. See also:
9332a9e7 978 <https://cr.yp.to/chacha/chacha-20080128.pdf>
c08d0e64 979
de61d7ae
EB
980 XChaCha20 is the application of the XSalsa20 construction to ChaCha20
981 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
982 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
983 while provably retaining ChaCha20's security. See also:
984 <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
985
aa762409
EB
986 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
987 reduced security margin but increased performance. It can be needed
988 in some performance-sensitive scenarios.
989
584fffc8
SS
990config CRYPTO_SEED
991 tristate "SEED cipher algorithm"
1674aea5 992 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 993 select CRYPTO_ALGAPI
1da177e4 994 help
584fffc8 995 SEED cipher algorithm (RFC4269).
1da177e4 996
584fffc8
SS
997 SEED is a 128-bit symmetric key block cipher that has been
998 developed by KISA (Korea Information Security Agency) as a
999 national standard encryption algorithm of the Republic of Korea.
1000 It is a 16 round block cipher with the key size of 128 bit.
1001
1002 See also:
1003 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1004
e4e712bb
TY
1005config CRYPTO_ARIA
1006 tristate "ARIA cipher algorithm"
1007 select CRYPTO_ALGAPI
1008 help
1009 ARIA cipher algorithm (RFC5794).
1010
1011 ARIA is a standard encryption algorithm of the Republic of Korea.
1012 The ARIA specifies three key sizes and rounds.
1013 128-bit: 12 rounds.
1014 192-bit: 14 rounds.
1015 256-bit: 16 rounds.
1016
1017 See also:
1018 <https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do>
1019
584fffc8
SS
1020config CRYPTO_SERPENT
1021 tristate "Serpent cipher algorithm"
cce9e06d 1022 select CRYPTO_ALGAPI
1da177e4 1023 help
584fffc8 1024 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1da177e4 1025
584fffc8 1026 Keys are allowed to be from 0 to 256 bits in length, in steps
784506a1 1027 of 8 bits.
584fffc8
SS
1028
1029 See also:
9332a9e7 1030 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
584fffc8 1031
747c8ce4 1032config CRYPTO_SM4
d2825fa9
JD
1033 tristate
1034
1035config CRYPTO_SM4_GENERIC
747c8ce4
GBY
1036 tristate "SM4 cipher algorithm"
1037 select CRYPTO_ALGAPI
d2825fa9 1038 select CRYPTO_SM4
747c8ce4
GBY
1039 help
1040 SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1041
1042 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1043 Organization of State Commercial Administration of China (OSCCA)
1044 as an authorized cryptographic algorithms for the use within China.
1045
1046 SMS4 was originally created for use in protecting wireless
1047 networks, and is mandated in the Chinese National Standard for
1048 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1049 (GB.15629.11-2003).
1050
1051 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1052 standardized through TC 260 of the Standardization Administration
1053 of the People's Republic of China (SAC).
1054
1055 The input, output, and key of SMS4 are each 128 bits.
1056
1057 See also: <https://eprint.iacr.org/2008/329.pdf>
1058
1059 If unsure, say N.
1060
584fffc8
SS
1061config CRYPTO_TEA
1062 tristate "TEA, XTEA and XETA cipher algorithms"
1674aea5 1063 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
cce9e06d 1064 select CRYPTO_ALGAPI
1da177e4 1065 help
584fffc8 1066 TEA cipher algorithm.
1da177e4 1067
584fffc8
SS
1068 Tiny Encryption Algorithm is a simple cipher that uses
1069 many rounds for security. It is very fast and uses
1070 little memory.
1071
1072 Xtendend Tiny Encryption Algorithm is a modification to
1073 the TEA algorithm to address a potential key weakness
1074 in the TEA algorithm.
1075
1076 Xtendend Encryption Tiny Algorithm is a mis-implementation
1077 of the XTEA algorithm for compatibility purposes.
1078
1079config CRYPTO_TWOFISH
1080 tristate "Twofish cipher algorithm"
04ac7db3 1081 select CRYPTO_ALGAPI
584fffc8 1082 select CRYPTO_TWOFISH_COMMON
04ac7db3 1083 help
584fffc8 1084 Twofish cipher algorithm.
04ac7db3 1085
584fffc8
SS
1086 Twofish was submitted as an AES (Advanced Encryption Standard)
1087 candidate cipher by researchers at CounterPane Systems. It is a
1088 16 round block cipher supporting key sizes of 128, 192, and 256
1089 bits.
04ac7db3 1090
584fffc8 1091 See also:
9332a9e7 1092 <https://www.schneier.com/twofish.html>
584fffc8
SS
1093
1094config CRYPTO_TWOFISH_COMMON
1095 tristate
1096 help
1097 Common parts of the Twofish cipher algorithm shared by the
1098 generic c and the assembler implementations.
1099
584fffc8
SS
1100comment "Compression"
1101
1102config CRYPTO_DEFLATE
1103 tristate "Deflate compression algorithm"
1104 select CRYPTO_ALGAPI
f6ded09d 1105 select CRYPTO_ACOMP2
584fffc8
SS
1106 select ZLIB_INFLATE
1107 select ZLIB_DEFLATE
3c09f17c 1108 help
584fffc8
SS
1109 This is the Deflate algorithm (RFC1951), specified for use in
1110 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1111
1112 You will most probably want this if using IPSec.
3c09f17c 1113
0b77abb3
ZS
1114config CRYPTO_LZO
1115 tristate "LZO compression algorithm"
1116 select CRYPTO_ALGAPI
ac9d2c4b 1117 select CRYPTO_ACOMP2
0b77abb3
ZS
1118 select LZO_COMPRESS
1119 select LZO_DECOMPRESS
1120 help
1121 This is the LZO algorithm.
1122
35a1fc18
SJ
1123config CRYPTO_842
1124 tristate "842 compression algorithm"
2062c5b6 1125 select CRYPTO_ALGAPI
6a8de3ae 1126 select CRYPTO_ACOMP2
2062c5b6
DS
1127 select 842_COMPRESS
1128 select 842_DECOMPRESS
35a1fc18
SJ
1129 help
1130 This is the 842 algorithm.
0ea8530d
CM
1131
1132config CRYPTO_LZ4
1133 tristate "LZ4 compression algorithm"
1134 select CRYPTO_ALGAPI
8cd9330e 1135 select CRYPTO_ACOMP2
0ea8530d
CM
1136 select LZ4_COMPRESS
1137 select LZ4_DECOMPRESS
1138 help
1139 This is the LZ4 algorithm.
1140
1141config CRYPTO_LZ4HC
1142 tristate "LZ4HC compression algorithm"
1143 select CRYPTO_ALGAPI
91d53d96 1144 select CRYPTO_ACOMP2
0ea8530d
CM
1145 select LZ4HC_COMPRESS
1146 select LZ4_DECOMPRESS
1147 help
1148 This is the LZ4 high compression mode algorithm.
35a1fc18 1149
d28fc3db
NT
1150config CRYPTO_ZSTD
1151 tristate "Zstd compression algorithm"
1152 select CRYPTO_ALGAPI
1153 select CRYPTO_ACOMP2
1154 select ZSTD_COMPRESS
1155 select ZSTD_DECOMPRESS
1156 help
1157 This is the zstd algorithm.
1158
17f0f4a4
NH
1159comment "Random Number Generation"
1160
1161config CRYPTO_ANSI_CPRNG
1162 tristate "Pseudo Random Number Generation for Cryptographic modules"
1163 select CRYPTO_AES
1164 select CRYPTO_RNG
17f0f4a4
NH
1165 help
1166 This option enables the generic pseudo random number generator
1167 for cryptographic modules. Uses the Algorithm specified in
7dd607e8
JK
1168 ANSI X9.31 A.2.4. Note that this option must be enabled if
1169 CRYPTO_FIPS is selected
17f0f4a4 1170
f2c89a10 1171menuconfig CRYPTO_DRBG_MENU
419090c6 1172 tristate "NIST SP800-90A DRBG"
419090c6
SM
1173 help
1174 NIST SP800-90A compliant DRBG. In the following submenu, one or
1175 more of the DRBG types must be selected.
1176
f2c89a10 1177if CRYPTO_DRBG_MENU
419090c6
SM
1178
1179config CRYPTO_DRBG_HMAC
401e4238 1180 bool
419090c6 1181 default y
419090c6 1182 select CRYPTO_HMAC
5261cdf4 1183 select CRYPTO_SHA512
419090c6
SM
1184
1185config CRYPTO_DRBG_HASH
1186 bool "Enable Hash DRBG"
826775bb 1187 select CRYPTO_SHA256
419090c6
SM
1188 help
1189 Enable the Hash DRBG variant as defined in NIST SP800-90A.
1190
1191config CRYPTO_DRBG_CTR
1192 bool "Enable CTR DRBG"
419090c6 1193 select CRYPTO_AES
d6fc1a45 1194 select CRYPTO_CTR
419090c6
SM
1195 help
1196 Enable the CTR DRBG variant as defined in NIST SP800-90A.
1197
f2c89a10
HX
1198config CRYPTO_DRBG
1199 tristate
401e4238 1200 default CRYPTO_DRBG_MENU
f2c89a10 1201 select CRYPTO_RNG
bb5530e4 1202 select CRYPTO_JITTERENTROPY
f2c89a10
HX
1203
1204endif # if CRYPTO_DRBG_MENU
419090c6 1205
bb5530e4
SM
1206config CRYPTO_JITTERENTROPY
1207 tristate "Jitterentropy Non-Deterministic Random Number Generator"
2f313e02 1208 select CRYPTO_RNG
bb5530e4
SM
1209 help
1210 The Jitterentropy RNG is a noise that is intended
1211 to provide seed to another RNG. The RNG does not
1212 perform any cryptographic whitening of the generated
1213 random numbers. This Jitterentropy RNG registers with
1214 the kernel crypto API and can be used by any caller.
1215
026a733e
SM
1216config CRYPTO_KDF800108_CTR
1217 tristate
a88592cc 1218 select CRYPTO_HMAC
304b4ace 1219 select CRYPTO_SHA256
026a733e 1220
03c8efc1
HX
1221config CRYPTO_USER_API
1222 tristate
1223
fe869cdb
HX
1224config CRYPTO_USER_API_HASH
1225 tristate "User-space interface for hash algorithms"
7451708f 1226 depends on NET
fe869cdb
HX
1227 select CRYPTO_HASH
1228 select CRYPTO_USER_API
1229 help
1230 This option enables the user-spaces interface for hash
1231 algorithms.
1232
8ff59090
HX
1233config CRYPTO_USER_API_SKCIPHER
1234 tristate "User-space interface for symmetric key cipher algorithms"
7451708f 1235 depends on NET
b95bba5d 1236 select CRYPTO_SKCIPHER
8ff59090
HX
1237 select CRYPTO_USER_API
1238 help
1239 This option enables the user-spaces interface for symmetric
1240 key cipher algorithms.
1241
2f375538
SM
1242config CRYPTO_USER_API_RNG
1243 tristate "User-space interface for random number generator algorithms"
1244 depends on NET
1245 select CRYPTO_RNG
1246 select CRYPTO_USER_API
1247 help
1248 This option enables the user-spaces interface for random
1249 number generator algorithms.
1250
77ebdabe
EP
1251config CRYPTO_USER_API_RNG_CAVP
1252 bool "Enable CAVP testing of DRBG"
1253 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1254 help
1255 This option enables extra API for CAVP testing via the user-space
1256 interface: resetting of DRBG entropy, and providing Additional Data.
1257 This should only be enabled for CAVP testing. You should say
1258 no unless you know what this is.
1259
b64a2d95
HX
1260config CRYPTO_USER_API_AEAD
1261 tristate "User-space interface for AEAD cipher algorithms"
1262 depends on NET
1263 select CRYPTO_AEAD
b95bba5d 1264 select CRYPTO_SKCIPHER
72548b09 1265 select CRYPTO_NULL
b64a2d95
HX
1266 select CRYPTO_USER_API
1267 help
1268 This option enables the user-spaces interface for AEAD
1269 cipher algorithms.
1270
9ace6771
AB
1271config CRYPTO_USER_API_ENABLE_OBSOLETE
1272 bool "Enable obsolete cryptographic algorithms for userspace"
1273 depends on CRYPTO_USER_API
1274 default y
1275 help
1276 Allow obsolete cryptographic algorithms to be selected that have
1277 already been phased out from internal use by the kernel, and are
1278 only useful for userspace clients that still rely on them.
1279
cac5818c
CL
1280config CRYPTO_STATS
1281 bool "Crypto usage statistics for User-space"
a6a31385 1282 depends on CRYPTO_USER
cac5818c
CL
1283 help
1284 This option enables the gathering of crypto stats.
1285 This will collect:
1286 - encrypt/decrypt size and numbers of symmeric operations
1287 - compress/decompress size and numbers of compress operations
1288 - size and numbers of hash operations
1289 - encrypt/decrypt/sign/verify numbers for asymmetric operations
1290 - generate/seed numbers for rng operations
1291
ee08997f
DK
1292config CRYPTO_HASH_INFO
1293 bool
1294
4a329fec
RE
1295if ARM
1296source "arch/arm/crypto/Kconfig"
1297endif
1298if ARM64
1299source "arch/arm64/crypto/Kconfig"
1300endif
e45f710b
RE
1301if MIPS
1302source "arch/mips/crypto/Kconfig"
1303endif
6a490a4e
RE
1304if PPC
1305source "arch/powerpc/crypto/Kconfig"
1306endif
c9d24c97
RE
1307if S390
1308source "arch/s390/crypto/Kconfig"
1309endif
0e9f9ea6
RE
1310if SPARC
1311source "arch/sparc/crypto/Kconfig"
1312endif
28a936ef
RE
1313if X86
1314source "arch/x86/crypto/Kconfig"
1315endif
e45f710b 1316
1da177e4 1317source "drivers/crypto/Kconfig"
8636a1f9
MY
1318source "crypto/asymmetric_keys/Kconfig"
1319source "certs/Kconfig"
1da177e4 1320
cce9e06d 1321endif # if CRYPTO
This page took 1.077314 seconds and 4 git commands to generate.