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