Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0
2#
3# Generic algorithms support
4#
5config XOR_BLOCKS
6 tristate
7
8#
9# async_tx api: hardware offloaded memory transfer/transform support
10#
11source "crypto/async_tx/Kconfig"
12
13#
14# Cryptographic API Configuration
15#
16menuconfig CRYPTO
17 tristate "Cryptographic API"
18 select CRYPTO_LIB_UTILS
19 help
20 This option provides the core Cryptographic API.
21
22if CRYPTO
23
24menu "Crypto core or helper"
25
26config CRYPTO_FIPS
27 bool "FIPS 200 compliance"
28 depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
29 depends on (MODULE_SIG || !MODULES)
30 help
31 This option enables the fips boot option which is
32 required if you want the system to operate in a FIPS 200
33 certification. You should say no unless you know what
34 this is.
35
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
57config CRYPTO_ALGAPI
58 tristate
59 select CRYPTO_ALGAPI2
60 help
61 This option provides the API for cryptographic algorithms.
62
63config CRYPTO_ALGAPI2
64 tristate
65
66config CRYPTO_AEAD
67 tristate
68 select CRYPTO_AEAD2
69 select CRYPTO_ALGAPI
70
71config CRYPTO_AEAD2
72 tristate
73 select CRYPTO_ALGAPI2
74
75config CRYPTO_SIG
76 tristate
77 select CRYPTO_SIG2
78 select CRYPTO_ALGAPI
79
80config CRYPTO_SIG2
81 tristate
82 select CRYPTO_ALGAPI2
83
84config CRYPTO_SKCIPHER
85 tristate
86 select CRYPTO_SKCIPHER2
87 select CRYPTO_ALGAPI
88 select CRYPTO_ECB
89
90config CRYPTO_SKCIPHER2
91 tristate
92 select CRYPTO_ALGAPI2
93
94config CRYPTO_HASH
95 tristate
96 select CRYPTO_HASH2
97 select CRYPTO_ALGAPI
98
99config CRYPTO_HASH2
100 tristate
101 select CRYPTO_ALGAPI2
102
103config CRYPTO_RNG
104 tristate
105 select CRYPTO_RNG2
106 select CRYPTO_ALGAPI
107
108config CRYPTO_RNG2
109 tristate
110 select CRYPTO_ALGAPI2
111
112config CRYPTO_RNG_DEFAULT
113 tristate
114 select CRYPTO_DRBG_MENU
115
116config CRYPTO_AKCIPHER2
117 tristate
118 select CRYPTO_ALGAPI2
119
120config CRYPTO_AKCIPHER
121 tristate
122 select CRYPTO_AKCIPHER2
123 select CRYPTO_ALGAPI
124
125config CRYPTO_KPP2
126 tristate
127 select CRYPTO_ALGAPI2
128
129config CRYPTO_KPP
130 tristate
131 select CRYPTO_ALGAPI
132 select CRYPTO_KPP2
133
134config CRYPTO_ACOMP2
135 tristate
136 select CRYPTO_ALGAPI2
137 select SGL_ALLOC
138
139config CRYPTO_ACOMP
140 tristate
141 select CRYPTO_ALGAPI
142 select CRYPTO_ACOMP2
143
144config CRYPTO_MANAGER
145 tristate "Cryptographic algorithm manager"
146 select CRYPTO_MANAGER2
147 help
148 Create default cryptographic template instantiations such as
149 cbc(aes).
150
151config CRYPTO_MANAGER2
152 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
153 select CRYPTO_ACOMP2
154 select CRYPTO_AEAD2
155 select CRYPTO_AKCIPHER2
156 select CRYPTO_SIG2
157 select CRYPTO_HASH2
158 select CRYPTO_KPP2
159 select CRYPTO_RNG2
160 select CRYPTO_SKCIPHER2
161
162config CRYPTO_USER
163 tristate "Userspace cryptographic algorithm configuration"
164 depends on NET
165 select CRYPTO_MANAGER
166 help
167 Userspace configuration for cryptographic instantiations such as
168 cbc(aes).
169
170config CRYPTO_MANAGER_DISABLE_TESTS
171 bool "Disable run-time self tests"
172 default y
173 help
174 Disable run-time self tests that normally take place at
175 algorithm registration.
176
177config CRYPTO_MANAGER_EXTRA_TESTS
178 bool "Enable extra run-time crypto self tests"
179 depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
180 help
181 Enable extra run-time self tests of registered crypto algorithms,
182 including randomized fuzz tests.
183
184 This is intended for developer use only, as these tests take much
185 longer to run than the normal self tests.
186
187config CRYPTO_NULL
188 tristate "Null algorithms"
189 select CRYPTO_NULL2
190 help
191 These are 'Null' algorithms, used by IPsec, which do nothing.
192
193config CRYPTO_NULL2
194 tristate
195 select CRYPTO_ALGAPI2
196 select CRYPTO_SKCIPHER2
197 select CRYPTO_HASH2
198
199config CRYPTO_PCRYPT
200 tristate "Parallel crypto engine"
201 depends on SMP
202 select PADATA
203 select CRYPTO_MANAGER
204 select CRYPTO_AEAD
205 help
206 This converts an arbitrary crypto algorithm into a parallel
207 algorithm that executes in kernel threads.
208
209config CRYPTO_CRYPTD
210 tristate "Software async crypto daemon"
211 select CRYPTO_SKCIPHER
212 select CRYPTO_HASH
213 select CRYPTO_MANAGER
214 help
215 This is a generic software asynchronous crypto daemon that
216 converts an arbitrary synchronous software crypto algorithm
217 into an asynchronous algorithm that executes in a kernel thread.
218
219config CRYPTO_AUTHENC
220 tristate "Authenc support"
221 select CRYPTO_AEAD
222 select CRYPTO_SKCIPHER
223 select CRYPTO_MANAGER
224 select CRYPTO_HASH
225 select CRYPTO_NULL
226 help
227 Authenc: Combined mode wrapper for IPsec.
228
229 This is required for IPSec ESP (XFRM_ESP).
230
231config CRYPTO_TEST
232 tristate "Testing module"
233 depends on m || EXPERT
234 select CRYPTO_MANAGER
235 help
236 Quick & dirty crypto test module.
237
238config CRYPTO_SIMD
239 tristate
240 select CRYPTO_CRYPTD
241
242config CRYPTO_ENGINE
243 tristate
244
245endmenu
246
247menu "Public-key cryptography"
248
249config CRYPTO_RSA
250 tristate "RSA (Rivest-Shamir-Adleman)"
251 select CRYPTO_AKCIPHER
252 select CRYPTO_MANAGER
253 select MPILIB
254 select ASN1
255 help
256 RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
257
258config CRYPTO_DH
259 tristate "DH (Diffie-Hellman)"
260 select CRYPTO_KPP
261 select MPILIB
262 help
263 DH (Diffie-Hellman) key exchange algorithm
264
265config CRYPTO_DH_RFC7919_GROUPS
266 bool "RFC 7919 FFDHE groups"
267 depends on CRYPTO_DH
268 select CRYPTO_RNG_DEFAULT
269 help
270 FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
271 defined in RFC7919.
272
273 Support these finite-field groups in DH key exchanges:
274 - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
275
276 If unsure, say N.
277
278config CRYPTO_ECC
279 tristate
280 select CRYPTO_RNG_DEFAULT
281
282config CRYPTO_ECDH
283 tristate "ECDH (Elliptic Curve Diffie-Hellman)"
284 select CRYPTO_ECC
285 select CRYPTO_KPP
286 help
287 ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
288 using curves P-192, P-256, and P-384 (FIPS 186)
289
290config CRYPTO_ECDSA
291 tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
292 select CRYPTO_ECC
293 select CRYPTO_AKCIPHER
294 select ASN1
295 help
296 ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
297 ISO/IEC 14888-3)
298 using curves P-192, P-256, and P-384
299
300 Only signature verification is implemented.
301
302config CRYPTO_ECRDSA
303 tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
304 select CRYPTO_ECC
305 select CRYPTO_AKCIPHER
306 select CRYPTO_STREEBOG
307 select OID_REGISTRY
308 select ASN1
309 help
310 Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
311 RFC 7091, ISO/IEC 14888-3)
312
313 One of the Russian cryptographic standard algorithms (called GOST
314 algorithms). Only signature verification is implemented.
315
316config CRYPTO_CURVE25519
317 tristate "Curve25519"
318 select CRYPTO_KPP
319 select CRYPTO_LIB_CURVE25519_GENERIC
320 help
321 Curve25519 elliptic curve (RFC7748)
322
323endmenu
324
325menu "Block ciphers"
326
327config CRYPTO_AES
328 tristate "AES (Advanced Encryption Standard)"
329 select CRYPTO_ALGAPI
330 select CRYPTO_LIB_AES
331 help
332 AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
333
334 Rijndael appears to be consistently a very good performer in
335 both hardware and software across a wide range of computing
336 environments regardless of its use in feedback or non-feedback
337 modes. Its key setup time is excellent, and its key agility is
338 good. Rijndael's very low memory requirements make it very well
339 suited for restricted-space environments, in which it also
340 demonstrates excellent performance. Rijndael's operations are
341 among the easiest to defend against power and timing attacks.
342
343 The AES specifies three key sizes: 128, 192 and 256 bits
344
345config CRYPTO_AES_TI
346 tristate "AES (Advanced Encryption Standard) (fixed time)"
347 select CRYPTO_ALGAPI
348 select CRYPTO_LIB_AES
349 help
350 AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
351
352 This is a generic implementation of AES that attempts to eliminate
353 data dependent latencies as much as possible without affecting
354 performance too much. It is intended for use by the generic CCM
355 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
356 solely on encryption (although decryption is supported as well, but
357 with a more dramatic performance hit)
358
359 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
360 8 for decryption), this implementation only uses just two S-boxes of
361 256 bytes each, and attempts to eliminate data dependent latencies by
362 prefetching the entire table into the cache at the start of each
363 block. Interrupts are also disabled to avoid races where cachelines
364 are evicted when the CPU is interrupted to do something else.
365
366config CRYPTO_ANUBIS
367 tristate "Anubis"
368 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
369 select CRYPTO_ALGAPI
370 help
371 Anubis cipher algorithm
372
373 Anubis is a variable key length cipher which can use keys from
374 128 bits to 320 bits in length. It was evaluated as a entrant
375 in the NESSIE competition.
376
377 See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
378 for further information.
379
380config CRYPTO_ARIA
381 tristate "ARIA"
382 select CRYPTO_ALGAPI
383 help
384 ARIA cipher algorithm (RFC5794)
385
386 ARIA is a standard encryption algorithm of the Republic of Korea.
387 The ARIA specifies three key sizes and rounds.
388 128-bit: 12 rounds.
389 192-bit: 14 rounds.
390 256-bit: 16 rounds.
391
392 See:
393 https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
394
395config CRYPTO_BLOWFISH
396 tristate "Blowfish"
397 select CRYPTO_ALGAPI
398 select CRYPTO_BLOWFISH_COMMON
399 help
400 Blowfish cipher algorithm, by Bruce Schneier
401
402 This is a variable key length cipher which can use keys from 32
403 bits to 448 bits in length. It's fast, simple and specifically
404 designed for use on "large microprocessors".
405
406 See https://www.schneier.com/blowfish.html for further information.
407
408config CRYPTO_BLOWFISH_COMMON
409 tristate
410 help
411 Common parts of the Blowfish cipher algorithm shared by the
412 generic c and the assembler implementations.
413
414config CRYPTO_CAMELLIA
415 tristate "Camellia"
416 select CRYPTO_ALGAPI
417 help
418 Camellia cipher algorithms (ISO/IEC 18033-3)
419
420 Camellia is a symmetric key block cipher developed jointly
421 at NTT and Mitsubishi Electric Corporation.
422
423 The Camellia specifies three key sizes: 128, 192 and 256 bits.
424
425 See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
426
427config CRYPTO_CAST_COMMON
428 tristate
429 help
430 Common parts of the CAST cipher algorithms shared by the
431 generic c and the assembler implementations.
432
433config CRYPTO_CAST5
434 tristate "CAST5 (CAST-128)"
435 select CRYPTO_ALGAPI
436 select CRYPTO_CAST_COMMON
437 help
438 CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
439
440config CRYPTO_CAST6
441 tristate "CAST6 (CAST-256)"
442 select CRYPTO_ALGAPI
443 select CRYPTO_CAST_COMMON
444 help
445 CAST6 (CAST-256) encryption algorithm (RFC2612)
446
447config CRYPTO_DES
448 tristate "DES and Triple DES EDE"
449 select CRYPTO_ALGAPI
450 select CRYPTO_LIB_DES
451 help
452 DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
453 Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
454 cipher algorithms
455
456config CRYPTO_FCRYPT
457 tristate "FCrypt"
458 select CRYPTO_ALGAPI
459 select CRYPTO_SKCIPHER
460 help
461 FCrypt algorithm used by RxRPC
462
463 See https://ota.polyonymo.us/fcrypt-paper.txt
464
465config CRYPTO_KHAZAD
466 tristate "Khazad"
467 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
468 select CRYPTO_ALGAPI
469 help
470 Khazad cipher algorithm
471
472 Khazad was a finalist in the initial NESSIE competition. It is
473 an algorithm optimized for 64-bit processors with good performance
474 on 32-bit processors. Khazad uses an 128 bit key size.
475
476 See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
477 for further information.
478
479config CRYPTO_SEED
480 tristate "SEED"
481 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
482 select CRYPTO_ALGAPI
483 help
484 SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
485
486 SEED is a 128-bit symmetric key block cipher that has been
487 developed by KISA (Korea Information Security Agency) as a
488 national standard encryption algorithm of the Republic of Korea.
489 It is a 16 round block cipher with the key size of 128 bit.
490
491 See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
492 for further information.
493
494config CRYPTO_SERPENT
495 tristate "Serpent"
496 select CRYPTO_ALGAPI
497 help
498 Serpent cipher algorithm, by Anderson, Biham & Knudsen
499
500 Keys are allowed to be from 0 to 256 bits in length, in steps
501 of 8 bits.
502
503 See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
504
505config CRYPTO_SM4
506 tristate
507
508config CRYPTO_SM4_GENERIC
509 tristate "SM4 (ShangMi 4)"
510 select CRYPTO_ALGAPI
511 select CRYPTO_SM4
512 help
513 SM4 cipher algorithms (OSCCA GB/T 32907-2016,
514 ISO/IEC 18033-3:2010/Amd 1:2021)
515
516 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
517 Organization of State Commercial Administration of China (OSCCA)
518 as an authorized cryptographic algorithms for the use within China.
519
520 SMS4 was originally created for use in protecting wireless
521 networks, and is mandated in the Chinese National Standard for
522 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
523 (GB.15629.11-2003).
524
525 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
526 standardized through TC 260 of the Standardization Administration
527 of the People's Republic of China (SAC).
528
529 The input, output, and key of SMS4 are each 128 bits.
530
531 See https://eprint.iacr.org/2008/329.pdf for further information.
532
533 If unsure, say N.
534
535config CRYPTO_TEA
536 tristate "TEA, XTEA and XETA"
537 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
538 select CRYPTO_ALGAPI
539 help
540 TEA (Tiny Encryption Algorithm) cipher algorithms
541
542 Tiny Encryption Algorithm is a simple cipher that uses
543 many rounds for security. It is very fast and uses
544 little memory.
545
546 Xtendend Tiny Encryption Algorithm is a modification to
547 the TEA algorithm to address a potential key weakness
548 in the TEA algorithm.
549
550 Xtendend Encryption Tiny Algorithm is a mis-implementation
551 of the XTEA algorithm for compatibility purposes.
552
553config CRYPTO_TWOFISH
554 tristate "Twofish"
555 select CRYPTO_ALGAPI
556 select CRYPTO_TWOFISH_COMMON
557 help
558 Twofish cipher algorithm
559
560 Twofish was submitted as an AES (Advanced Encryption Standard)
561 candidate cipher by researchers at CounterPane Systems. It is a
562 16 round block cipher supporting key sizes of 128, 192, and 256
563 bits.
564
565 See https://www.schneier.com/twofish.html for further information.
566
567config CRYPTO_TWOFISH_COMMON
568 tristate
569 help
570 Common parts of the Twofish cipher algorithm shared by the
571 generic c and the assembler implementations.
572
573endmenu
574
575menu "Length-preserving ciphers and modes"
576
577config CRYPTO_ADIANTUM
578 tristate "Adiantum"
579 select CRYPTO_CHACHA20
580 select CRYPTO_LIB_POLY1305_GENERIC
581 select CRYPTO_NHPOLY1305
582 select CRYPTO_MANAGER
583 help
584 Adiantum tweakable, length-preserving encryption mode
585
586 Designed for fast and secure disk encryption, especially on
587 CPUs without dedicated crypto instructions. It encrypts
588 each sector using the XChaCha12 stream cipher, two passes of
589 an ε-almost-∆-universal hash function, and an invocation of
590 the AES-256 block cipher on a single 16-byte block. On CPUs
591 without AES instructions, Adiantum is much faster than
592 AES-XTS.
593
594 Adiantum's security is provably reducible to that of its
595 underlying stream and block ciphers, subject to a security
596 bound. Unlike XTS, Adiantum is a true wide-block encryption
597 mode, so it actually provides an even stronger notion of
598 security than XTS, subject to the security bound.
599
600 If unsure, say N.
601
602config CRYPTO_ARC4
603 tristate "ARC4 (Alleged Rivest Cipher 4)"
604 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
605 select CRYPTO_SKCIPHER
606 select CRYPTO_LIB_ARC4
607 help
608 ARC4 cipher algorithm
609
610 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
611 bits in length. This algorithm is required for driver-based
612 WEP, but it should not be for other purposes because of the
613 weakness of the algorithm.
614
615config CRYPTO_CHACHA20
616 tristate "ChaCha"
617 select CRYPTO_LIB_CHACHA_GENERIC
618 select CRYPTO_SKCIPHER
619 help
620 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
621
622 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
623 Bernstein and further specified in RFC7539 for use in IETF protocols.
624 This is the portable C implementation of ChaCha20. See
625 https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
626
627 XChaCha20 is the application of the XSalsa20 construction to ChaCha20
628 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
629 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
630 while provably retaining ChaCha20's security. See
631 https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
632
633 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
634 reduced security margin but increased performance. It can be needed
635 in some performance-sensitive scenarios.
636
637config CRYPTO_CBC
638 tristate "CBC (Cipher Block Chaining)"
639 select CRYPTO_SKCIPHER
640 select CRYPTO_MANAGER
641 help
642 CBC (Cipher Block Chaining) mode (NIST SP800-38A)
643
644 This block cipher mode is required for IPSec ESP (XFRM_ESP).
645
646config CRYPTO_CTR
647 tristate "CTR (Counter)"
648 select CRYPTO_SKCIPHER
649 select CRYPTO_MANAGER
650 help
651 CTR (Counter) mode (NIST SP800-38A)
652
653config CRYPTO_CTS
654 tristate "CTS (Cipher Text Stealing)"
655 select CRYPTO_SKCIPHER
656 select CRYPTO_MANAGER
657 help
658 CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
659 Addendum to SP800-38A (October 2010))
660
661 This mode is required for Kerberos gss mechanism support
662 for AES encryption.
663
664config CRYPTO_ECB
665 tristate "ECB (Electronic Codebook)"
666 select CRYPTO_SKCIPHER2
667 select CRYPTO_MANAGER
668 help
669 ECB (Electronic Codebook) mode (NIST SP800-38A)
670
671config CRYPTO_HCTR2
672 tristate "HCTR2"
673 select CRYPTO_XCTR
674 select CRYPTO_POLYVAL
675 select CRYPTO_MANAGER
676 help
677 HCTR2 length-preserving encryption mode
678
679 A mode for storage encryption that is efficient on processors with
680 instructions to accelerate AES and carryless multiplication, e.g.
681 x86 processors with AES-NI and CLMUL, and ARM processors with the
682 ARMv8 crypto extensions.
683
684 See https://eprint.iacr.org/2021/1441
685
686config CRYPTO_KEYWRAP
687 tristate "KW (AES Key Wrap)"
688 select CRYPTO_SKCIPHER
689 select CRYPTO_MANAGER
690 help
691 KW (AES Key Wrap) authenticated encryption mode (NIST SP800-38F
692 and RFC3394) without padding.
693
694config CRYPTO_LRW
695 tristate "LRW (Liskov Rivest Wagner)"
696 select CRYPTO_LIB_GF128MUL
697 select CRYPTO_SKCIPHER
698 select CRYPTO_MANAGER
699 select CRYPTO_ECB
700 help
701 LRW (Liskov Rivest Wagner) mode
702
703 A tweakable, non malleable, non movable
704 narrow block cipher mode for dm-crypt. Use it with cipher
705 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
706 The first 128, 192 or 256 bits in the key are used for AES and the
707 rest is used to tie each cipher block to its logical position.
708
709 See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
710
711config CRYPTO_PCBC
712 tristate "PCBC (Propagating Cipher Block Chaining)"
713 select CRYPTO_SKCIPHER
714 select CRYPTO_MANAGER
715 help
716 PCBC (Propagating Cipher Block Chaining) mode
717
718 This block cipher mode is required for RxRPC.
719
720config CRYPTO_XCTR
721 tristate
722 select CRYPTO_SKCIPHER
723 select CRYPTO_MANAGER
724 help
725 XCTR (XOR Counter) mode for HCTR2
726
727 This blockcipher mode is a variant of CTR mode using XORs and little-endian
728 addition rather than big-endian arithmetic.
729
730 XCTR mode is used to implement HCTR2.
731
732config CRYPTO_XTS
733 tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
734 select CRYPTO_SKCIPHER
735 select CRYPTO_MANAGER
736 select CRYPTO_ECB
737 help
738 XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
739 and IEEE 1619)
740
741 Use with aes-xts-plain, key size 256, 384 or 512 bits. This
742 implementation currently can't handle a sectorsize which is not a
743 multiple of 16 bytes.
744
745config CRYPTO_NHPOLY1305
746 tristate
747 select CRYPTO_HASH
748 select CRYPTO_LIB_POLY1305_GENERIC
749
750endmenu
751
752menu "AEAD (authenticated encryption with associated data) ciphers"
753
754config CRYPTO_AEGIS128
755 tristate "AEGIS-128"
756 select CRYPTO_AEAD
757 select CRYPTO_AES # for AES S-box tables
758 help
759 AEGIS-128 AEAD algorithm
760
761config CRYPTO_AEGIS128_SIMD
762 bool "AEGIS-128 (arm NEON, arm64 NEON)"
763 depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
764 default y
765 help
766 AEGIS-128 AEAD algorithm
767
768 Architecture: arm or arm64 using:
769 - NEON (Advanced SIMD) extension
770
771config CRYPTO_CHACHA20POLY1305
772 tristate "ChaCha20-Poly1305"
773 select CRYPTO_CHACHA20
774 select CRYPTO_POLY1305
775 select CRYPTO_AEAD
776 select CRYPTO_MANAGER
777 help
778 ChaCha20 stream cipher and Poly1305 authenticator combined
779 mode (RFC8439)
780
781config CRYPTO_CCM
782 tristate "CCM (Counter with Cipher Block Chaining-MAC)"
783 select CRYPTO_CTR
784 select CRYPTO_HASH
785 select CRYPTO_AEAD
786 select CRYPTO_MANAGER
787 help
788 CCM (Counter with Cipher Block Chaining-Message Authentication Code)
789 authenticated encryption mode (NIST SP800-38C)
790
791config CRYPTO_GCM
792 tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
793 select CRYPTO_CTR
794 select CRYPTO_AEAD
795 select CRYPTO_GHASH
796 select CRYPTO_NULL
797 select CRYPTO_MANAGER
798 help
799 GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
800 (GCM Message Authentication Code) (NIST SP800-38D)
801
802 This is required for IPSec ESP (XFRM_ESP).
803
804config CRYPTO_GENIV
805 tristate
806 select CRYPTO_AEAD
807 select CRYPTO_NULL
808 select CRYPTO_MANAGER
809 select CRYPTO_RNG_DEFAULT
810
811config CRYPTO_SEQIV
812 tristate "Sequence Number IV Generator"
813 select CRYPTO_GENIV
814 help
815 Sequence Number IV generator
816
817 This IV generator generates an IV based on a sequence number by
818 xoring it with a salt. This algorithm is mainly useful for CTR.
819
820 This is required for IPsec ESP (XFRM_ESP).
821
822config CRYPTO_ECHAINIV
823 tristate "Encrypted Chain IV Generator"
824 select CRYPTO_GENIV
825 help
826 Encrypted Chain IV generator
827
828 This IV generator generates an IV based on the encryption of
829 a sequence number xored with a salt. This is the default
830 algorithm for CBC.
831
832config CRYPTO_ESSIV
833 tristate "Encrypted Salt-Sector IV Generator"
834 select CRYPTO_AUTHENC
835 help
836 Encrypted Salt-Sector IV generator
837
838 This IV generator is used in some cases by fscrypt and/or
839 dm-crypt. It uses the hash of the block encryption key as the
840 symmetric key for a block encryption pass applied to the input
841 IV, making low entropy IV sources more suitable for block
842 encryption.
843
844 This driver implements a crypto API template that can be
845 instantiated either as an skcipher or as an AEAD (depending on the
846 type of the first template argument), and which defers encryption
847 and decryption requests to the encapsulated cipher after applying
848 ESSIV to the input IV. Note that in the AEAD case, it is assumed
849 that the keys are presented in the same format used by the authenc
850 template, and that the IV appears at the end of the authenticated
851 associated data (AAD) region (which is how dm-crypt uses it.)
852
853 Note that the use of ESSIV is not recommended for new deployments,
854 and so this only needs to be enabled when interoperability with
855 existing encrypted volumes of filesystems is required, or when
856 building for a particular system that requires it (e.g., when
857 the SoC in question has accelerated CBC but not XTS, making CBC
858 combined with ESSIV the only feasible mode for h/w accelerated
859 block encryption)
860
861endmenu
862
863menu "Hashes, digests, and MACs"
864
865config CRYPTO_BLAKE2B
866 tristate "BLAKE2b"
867 select CRYPTO_HASH
868 help
869 BLAKE2b cryptographic hash function (RFC 7693)
870
871 BLAKE2b is optimized for 64-bit platforms and can produce digests
872 of any size between 1 and 64 bytes. The keyed hash is also implemented.
873
874 This module provides the following algorithms:
875 - blake2b-160
876 - blake2b-256
877 - blake2b-384
878 - blake2b-512
879
880 Used by the btrfs filesystem.
881
882 See https://blake2.net for further information.
883
884config CRYPTO_CMAC
885 tristate "CMAC (Cipher-based MAC)"
886 select CRYPTO_HASH
887 select CRYPTO_MANAGER
888 help
889 CMAC (Cipher-based Message Authentication Code) authentication
890 mode (NIST SP800-38B and IETF RFC4493)
891
892config CRYPTO_GHASH
893 tristate "GHASH"
894 select CRYPTO_HASH
895 select CRYPTO_LIB_GF128MUL
896 help
897 GCM GHASH function (NIST SP800-38D)
898
899config CRYPTO_HMAC
900 tristate "HMAC (Keyed-Hash MAC)"
901 select CRYPTO_HASH
902 select CRYPTO_MANAGER
903 help
904 HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
905 RFC2104)
906
907 This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
908
909config CRYPTO_MD4
910 tristate "MD4"
911 select CRYPTO_HASH
912 help
913 MD4 message digest algorithm (RFC1320)
914
915config CRYPTO_MD5
916 tristate "MD5"
917 select CRYPTO_HASH
918 help
919 MD5 message digest algorithm (RFC1321)
920
921config CRYPTO_MICHAEL_MIC
922 tristate "Michael MIC"
923 select CRYPTO_HASH
924 help
925 Michael MIC (Message Integrity Code) (IEEE 802.11i)
926
927 Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
928 known as WPA (Wif-Fi Protected Access).
929
930 This algorithm is required for TKIP, but it should not be used for
931 other purposes because of the weakness of the algorithm.
932
933config CRYPTO_POLYVAL
934 tristate
935 select CRYPTO_HASH
936 select CRYPTO_LIB_GF128MUL
937 help
938 POLYVAL hash function for HCTR2
939
940 This is used in HCTR2. It is not a general-purpose
941 cryptographic hash function.
942
943config CRYPTO_POLY1305
944 tristate "Poly1305"
945 select CRYPTO_HASH
946 select CRYPTO_LIB_POLY1305_GENERIC
947 help
948 Poly1305 authenticator algorithm (RFC7539)
949
950 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
951 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
952 in IETF protocols. This is the portable C implementation of Poly1305.
953
954config CRYPTO_RMD160
955 tristate "RIPEMD-160"
956 select CRYPTO_HASH
957 help
958 RIPEMD-160 hash function (ISO/IEC 10118-3)
959
960 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
961 to be used as a secure replacement for the 128-bit hash functions
962 MD4, MD5 and its predecessor RIPEMD
963 (not to be confused with RIPEMD-128).
964
965 Its speed is comparable to SHA-1 and there are no known attacks
966 against RIPEMD-160.
967
968 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
969 See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
970 for further information.
971
972config CRYPTO_SHA1
973 tristate "SHA-1"
974 select CRYPTO_HASH
975 select CRYPTO_LIB_SHA1
976 help
977 SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3)
978
979config CRYPTO_SHA256
980 tristate "SHA-224 and SHA-256"
981 select CRYPTO_HASH
982 select CRYPTO_LIB_SHA256
983 help
984 SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
985
986 This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
987 Used by the btrfs filesystem, Ceph, NFS, and SMB.
988
989config CRYPTO_SHA512
990 tristate "SHA-384 and SHA-512"
991 select CRYPTO_HASH
992 help
993 SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
994
995config CRYPTO_SHA3
996 tristate "SHA-3"
997 select CRYPTO_HASH
998 help
999 SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
1000
1001config CRYPTO_SM3
1002 tristate
1003
1004config CRYPTO_SM3_GENERIC
1005 tristate "SM3 (ShangMi 3)"
1006 select CRYPTO_HASH
1007 select CRYPTO_SM3
1008 help
1009 SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
1010
1011 This is part of the Chinese Commercial Cryptography suite.
1012
1013 References:
1014 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1015 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1016
1017config CRYPTO_STREEBOG
1018 tristate "Streebog"
1019 select CRYPTO_HASH
1020 help
1021 Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
1022
1023 This is one of the Russian cryptographic standard algorithms (called
1024 GOST algorithms). This setting enables two hash algorithms with
1025 256 and 512 bits output.
1026
1027 References:
1028 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1029 https://tools.ietf.org/html/rfc6986
1030
1031config CRYPTO_VMAC
1032 tristate "VMAC"
1033 select CRYPTO_HASH
1034 select CRYPTO_MANAGER
1035 help
1036 VMAC is a message authentication algorithm designed for
1037 very high speed on 64-bit architectures.
1038
1039 See https://fastcrypto.org/vmac for further information.
1040
1041config CRYPTO_WP512
1042 tristate "Whirlpool"
1043 select CRYPTO_HASH
1044 help
1045 Whirlpool hash function (ISO/IEC 10118-3)
1046
1047 512, 384 and 256-bit hashes.
1048
1049 Whirlpool-512 is part of the NESSIE cryptographic primitives.
1050
1051 See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
1052 for further information.
1053
1054config CRYPTO_XCBC
1055 tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1056 select CRYPTO_HASH
1057 select CRYPTO_MANAGER
1058 help
1059 XCBC-MAC (Extended Cipher Block Chaining Message Authentication
1060 Code) (RFC3566)
1061
1062config CRYPTO_XXHASH
1063 tristate "xxHash"
1064 select CRYPTO_HASH
1065 select XXHASH
1066 help
1067 xxHash non-cryptographic hash algorithm
1068
1069 Extremely fast, working at speeds close to RAM limits.
1070
1071 Used by the btrfs filesystem.
1072
1073endmenu
1074
1075menu "CRCs (cyclic redundancy checks)"
1076
1077config CRYPTO_CRC32C
1078 tristate "CRC32c"
1079 select CRYPTO_HASH
1080 select CRC32
1081 help
1082 CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1083
1084 A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1085 by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1086 Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1087 on Communications, Vol. 41, No. 6, June 1993, selected for use with
1088 iSCSI.
1089
1090 Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
1091
1092config CRYPTO_CRC32
1093 tristate "CRC32"
1094 select CRYPTO_HASH
1095 select CRC32
1096 help
1097 CRC32 CRC algorithm (IEEE 802.3)
1098
1099 Used by RoCEv2 and f2fs.
1100
1101config CRYPTO_CRCT10DIF
1102 tristate "CRCT10DIF"
1103 select CRYPTO_HASH
1104 help
1105 CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
1106
1107 CRC algorithm used by the SCSI Block Commands standard.
1108
1109config CRYPTO_CRC64_ROCKSOFT
1110 tristate "CRC64 based on Rocksoft Model algorithm"
1111 depends on CRC64
1112 select CRYPTO_HASH
1113 help
1114 CRC64 CRC algorithm based on the Rocksoft Model CRC Algorithm
1115
1116 Used by the NVMe implementation of T10 DIF (BLK_DEV_INTEGRITY)
1117
1118 See https://zlib.net/crc_v3.txt
1119
1120endmenu
1121
1122menu "Compression"
1123
1124config CRYPTO_DEFLATE
1125 tristate "Deflate"
1126 select CRYPTO_ALGAPI
1127 select CRYPTO_ACOMP2
1128 select ZLIB_INFLATE
1129 select ZLIB_DEFLATE
1130 help
1131 Deflate compression algorithm (RFC1951)
1132
1133 Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
1134
1135config CRYPTO_LZO
1136 tristate "LZO"
1137 select CRYPTO_ALGAPI
1138 select CRYPTO_ACOMP2
1139 select LZO_COMPRESS
1140 select LZO_DECOMPRESS
1141 help
1142 LZO compression algorithm
1143
1144 See https://www.oberhumer.com/opensource/lzo/ for further information.
1145
1146config CRYPTO_842
1147 tristate "842"
1148 select CRYPTO_ALGAPI
1149 select CRYPTO_ACOMP2
1150 select 842_COMPRESS
1151 select 842_DECOMPRESS
1152 help
1153 842 compression algorithm by IBM
1154
1155 See https://github.com/plauth/lib842 for further information.
1156
1157config CRYPTO_LZ4
1158 tristate "LZ4"
1159 select CRYPTO_ALGAPI
1160 select CRYPTO_ACOMP2
1161 select LZ4_COMPRESS
1162 select LZ4_DECOMPRESS
1163 help
1164 LZ4 compression algorithm
1165
1166 See https://github.com/lz4/lz4 for further information.
1167
1168config CRYPTO_LZ4HC
1169 tristate "LZ4HC"
1170 select CRYPTO_ALGAPI
1171 select CRYPTO_ACOMP2
1172 select LZ4HC_COMPRESS
1173 select LZ4_DECOMPRESS
1174 help
1175 LZ4 high compression mode algorithm
1176
1177 See https://github.com/lz4/lz4 for further information.
1178
1179config CRYPTO_ZSTD
1180 tristate "Zstd"
1181 select CRYPTO_ALGAPI
1182 select CRYPTO_ACOMP2
1183 select ZSTD_COMPRESS
1184 select ZSTD_DECOMPRESS
1185 help
1186 zstd compression algorithm
1187
1188 See https://github.com/facebook/zstd for further information.
1189
1190endmenu
1191
1192menu "Random number generation"
1193
1194config CRYPTO_ANSI_CPRNG
1195 tristate "ANSI PRNG (Pseudo Random Number Generator)"
1196 select CRYPTO_AES
1197 select CRYPTO_RNG
1198 help
1199 Pseudo RNG (random number generator) (ANSI X9.31 Appendix A.2.4)
1200
1201 This uses the AES cipher algorithm.
1202
1203 Note that this option must be enabled if CRYPTO_FIPS is selected
1204
1205menuconfig CRYPTO_DRBG_MENU
1206 tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1207 help
1208 DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
1209
1210 In the following submenu, one or more of the DRBG types must be selected.
1211
1212if CRYPTO_DRBG_MENU
1213
1214config CRYPTO_DRBG_HMAC
1215 bool
1216 default y
1217 select CRYPTO_HMAC
1218 select CRYPTO_SHA512
1219
1220config CRYPTO_DRBG_HASH
1221 bool "Hash_DRBG"
1222 select CRYPTO_SHA256
1223 help
1224 Hash_DRBG variant as defined in NIST SP800-90A.
1225
1226 This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
1227
1228config CRYPTO_DRBG_CTR
1229 bool "CTR_DRBG"
1230 select CRYPTO_AES
1231 select CRYPTO_CTR
1232 help
1233 CTR_DRBG variant as defined in NIST SP800-90A.
1234
1235 This uses the AES cipher algorithm with the counter block mode.
1236
1237config CRYPTO_DRBG
1238 tristate
1239 default CRYPTO_DRBG_MENU
1240 select CRYPTO_RNG
1241 select CRYPTO_JITTERENTROPY
1242
1243endif # if CRYPTO_DRBG_MENU
1244
1245config CRYPTO_JITTERENTROPY
1246 tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
1247 select CRYPTO_RNG
1248 select CRYPTO_SHA3
1249 help
1250 CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
1251
1252 A non-physical non-deterministic ("true") RNG (e.g., an entropy source
1253 compliant with NIST SP800-90B) intended to provide a seed to a
1254 deterministic RNG (e.g., per NIST SP800-90C).
1255 This RNG does not perform any cryptographic whitening of the generated
1256 random numbers.
1257
1258 See https://www.chronox.de/jent/
1259
1260if CRYPTO_JITTERENTROPY
1261if CRYPTO_FIPS && EXPERT
1262
1263choice
1264 prompt "CPU Jitter RNG Memory Size"
1265 default CRYPTO_JITTERENTROPY_MEMSIZE_2
1266 help
1267 The Jitter RNG measures the execution time of memory accesses.
1268 Multiple consecutive memory accesses are performed. If the memory
1269 size fits into a cache (e.g. L1), only the memory access timing
1270 to that cache is measured. The closer the cache is to the CPU
1271 the less variations are measured and thus the less entropy is
1272 obtained. Thus, if the memory size fits into the L1 cache, the
1273 obtained entropy is less than if the memory size fits within
1274 L1 + L2, which in turn is less if the memory fits into
1275 L1 + L2 + L3. Thus, by selecting a different memory size,
1276 the entropy rate produced by the Jitter RNG can be modified.
1277
1278 config CRYPTO_JITTERENTROPY_MEMSIZE_2
1279 bool "2048 Bytes (default)"
1280
1281 config CRYPTO_JITTERENTROPY_MEMSIZE_128
1282 bool "128 kBytes"
1283
1284 config CRYPTO_JITTERENTROPY_MEMSIZE_1024
1285 bool "1024 kBytes"
1286
1287 config CRYPTO_JITTERENTROPY_MEMSIZE_8192
1288 bool "8192 kBytes"
1289endchoice
1290
1291config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1292 int
1293 default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1294 default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1295 default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1296 default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1297
1298config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1299 int
1300 default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1301 default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1302 default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1303 default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1304
1305config CRYPTO_JITTERENTROPY_OSR
1306 int "CPU Jitter RNG Oversampling Rate"
1307 range 1 15
1308 default 1
1309 help
1310 The Jitter RNG allows the specification of an oversampling rate (OSR).
1311 The Jitter RNG operation requires a fixed amount of timing
1312 measurements to produce one output block of random numbers. The
1313 OSR value is multiplied with the amount of timing measurements to
1314 generate one output block. Thus, the timing measurement is oversampled
1315 by the OSR factor. The oversampling allows the Jitter RNG to operate
1316 on hardware whose timers deliver limited amount of entropy (e.g.
1317 the timer is coarse) by setting the OSR to a higher value. The
1318 trade-off, however, is that the Jitter RNG now requires more time
1319 to generate random numbers.
1320
1321config CRYPTO_JITTERENTROPY_TESTINTERFACE
1322 bool "CPU Jitter RNG Test Interface"
1323 help
1324 The test interface allows a privileged process to capture
1325 the raw unconditioned high resolution time stamp noise that
1326 is collected by the Jitter RNG for statistical analysis. As
1327 this data is used at the same time to generate random bits,
1328 the Jitter RNG operates in an insecure mode as long as the
1329 recording is enabled. This interface therefore is only
1330 intended for testing purposes and is not suitable for
1331 production systems.
1332
1333 The raw noise data can be obtained using the jent_raw_hires
1334 debugfs file. Using the option
1335 jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
1336 the first 1000 entropy events since boot can be sampled.
1337
1338 If unsure, select N.
1339
1340endif # if CRYPTO_FIPS && EXPERT
1341
1342if !(CRYPTO_FIPS && EXPERT)
1343
1344config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1345 int
1346 default 64
1347
1348config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1349 int
1350 default 32
1351
1352config CRYPTO_JITTERENTROPY_OSR
1353 int
1354 default 1
1355
1356config CRYPTO_JITTERENTROPY_TESTINTERFACE
1357 bool
1358
1359endif # if !(CRYPTO_FIPS && EXPERT)
1360endif # if CRYPTO_JITTERENTROPY
1361
1362config CRYPTO_KDF800108_CTR
1363 tristate
1364 select CRYPTO_HMAC
1365 select CRYPTO_SHA256
1366
1367endmenu
1368menu "Userspace interface"
1369
1370config CRYPTO_USER_API
1371 tristate
1372
1373config CRYPTO_USER_API_HASH
1374 tristate "Hash algorithms"
1375 depends on NET
1376 select CRYPTO_HASH
1377 select CRYPTO_USER_API
1378 help
1379 Enable the userspace interface for hash algorithms.
1380
1381 See Documentation/crypto/userspace-if.rst and
1382 https://www.chronox.de/libkcapi/html/index.html
1383
1384config CRYPTO_USER_API_SKCIPHER
1385 tristate "Symmetric key cipher algorithms"
1386 depends on NET
1387 select CRYPTO_SKCIPHER
1388 select CRYPTO_USER_API
1389 help
1390 Enable the userspace interface for symmetric key cipher algorithms.
1391
1392 See Documentation/crypto/userspace-if.rst and
1393 https://www.chronox.de/libkcapi/html/index.html
1394
1395config CRYPTO_USER_API_RNG
1396 tristate "RNG (random number generator) algorithms"
1397 depends on NET
1398 select CRYPTO_RNG
1399 select CRYPTO_USER_API
1400 help
1401 Enable the userspace interface for RNG (random number generator)
1402 algorithms.
1403
1404 See Documentation/crypto/userspace-if.rst and
1405 https://www.chronox.de/libkcapi/html/index.html
1406
1407config CRYPTO_USER_API_RNG_CAVP
1408 bool "Enable CAVP testing of DRBG"
1409 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1410 help
1411 Enable extra APIs in the userspace interface for NIST CAVP
1412 (Cryptographic Algorithm Validation Program) testing:
1413 - resetting DRBG entropy
1414 - providing Additional Data
1415
1416 This should only be enabled for CAVP testing. You should say
1417 no unless you know what this is.
1418
1419config CRYPTO_USER_API_AEAD
1420 tristate "AEAD cipher algorithms"
1421 depends on NET
1422 select CRYPTO_AEAD
1423 select CRYPTO_SKCIPHER
1424 select CRYPTO_NULL
1425 select CRYPTO_USER_API
1426 help
1427 Enable the userspace interface for AEAD cipher algorithms.
1428
1429 See Documentation/crypto/userspace-if.rst and
1430 https://www.chronox.de/libkcapi/html/index.html
1431
1432config CRYPTO_USER_API_ENABLE_OBSOLETE
1433 bool "Obsolete cryptographic algorithms"
1434 depends on CRYPTO_USER_API
1435 default y
1436 help
1437 Allow obsolete cryptographic algorithms to be selected that have
1438 already been phased out from internal use by the kernel, and are
1439 only useful for userspace clients that still rely on them.
1440
1441endmenu
1442
1443config CRYPTO_HASH_INFO
1444 bool
1445
1446if !KMSAN # avoid false positives from assembly
1447if ARM
1448source "arch/arm/crypto/Kconfig"
1449endif
1450if ARM64
1451source "arch/arm64/crypto/Kconfig"
1452endif
1453if LOONGARCH
1454source "arch/loongarch/crypto/Kconfig"
1455endif
1456if MIPS
1457source "arch/mips/crypto/Kconfig"
1458endif
1459if PPC
1460source "arch/powerpc/crypto/Kconfig"
1461endif
1462if RISCV
1463source "arch/riscv/crypto/Kconfig"
1464endif
1465if S390
1466source "arch/s390/crypto/Kconfig"
1467endif
1468if SPARC
1469source "arch/sparc/crypto/Kconfig"
1470endif
1471if X86
1472source "arch/x86/crypto/Kconfig"
1473endif
1474endif
1475
1476source "drivers/crypto/Kconfig"
1477source "crypto/asymmetric_keys/Kconfig"
1478source "certs/Kconfig"
1479
1480endif # if CRYPTO