xref: /linux/crypto/Kconfig (revision aec2f682d47c54ef434b2d440992626d80b1ebdc)
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_DRBG=y && CRYPTO_SELFTESTS
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_AKCIPHER2
113	tristate
114	select CRYPTO_ALGAPI2
115
116config CRYPTO_AKCIPHER
117	tristate
118	select CRYPTO_AKCIPHER2
119	select CRYPTO_ALGAPI
120
121config CRYPTO_KPP2
122	tristate
123	select CRYPTO_ALGAPI2
124
125config CRYPTO_KPP
126	tristate
127	select CRYPTO_ALGAPI
128	select CRYPTO_KPP2
129
130config CRYPTO_ACOMP2
131	tristate
132	select CRYPTO_ALGAPI2
133	select SGL_ALLOC
134
135config CRYPTO_ACOMP
136	tristate
137	select CRYPTO_ALGAPI
138	select CRYPTO_ACOMP2
139
140config CRYPTO_MANAGER
141	tristate
142	default CRYPTO_ALGAPI if CRYPTO_SELFTESTS
143	select CRYPTO_MANAGER2
144	help
145	  This provides the support for instantiating templates such as
146	  cbc(aes), and the support for the crypto self-tests.
147
148config CRYPTO_MANAGER2
149	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
150	select CRYPTO_ACOMP2 if CRYPTO_SELFTESTS
151	select CRYPTO_AEAD2 if CRYPTO_SELFTESTS
152	select CRYPTO_AKCIPHER2 if CRYPTO_SELFTESTS
153	select CRYPTO_SIG2 if CRYPTO_SELFTESTS
154	select CRYPTO_HASH2 if CRYPTO_SELFTESTS
155	select CRYPTO_KPP2 if CRYPTO_SELFTESTS
156	select CRYPTO_RNG2 if CRYPTO_SELFTESTS
157	select CRYPTO_SKCIPHER2 if CRYPTO_SELFTESTS
158
159config CRYPTO_USER
160	tristate "Userspace cryptographic algorithm configuration"
161	depends on NET
162	select CRYPTO_MANAGER
163	select CRYPTO_RNG
164	help
165	  Userspace configuration for cryptographic instantiations such as
166	  cbc(aes).
167
168config CRYPTO_SELFTESTS
169	bool "Enable cryptographic self-tests"
170	depends on EXPERT
171	help
172	  Enable the cryptographic self-tests.
173
174	  The cryptographic self-tests run at boot time, or at algorithm
175	  registration time if algorithms are dynamically loaded later.
176
177	  There are two main use cases for these tests:
178
179	  - Development and pre-release testing.  In this case, also enable
180	    CRYPTO_SELFTESTS_FULL to get the full set of tests.  All crypto code
181	    in the kernel is expected to pass the full set of tests.
182
183	  - Production kernels, to help prevent buggy drivers from being used
184	    and/or meet FIPS 140-3 pre-operational testing requirements.  In
185	    this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL.
186
187config CRYPTO_SELFTESTS_FULL
188	bool "Enable the full set of cryptographic self-tests"
189	depends on CRYPTO_SELFTESTS
190	help
191	  Enable the full set of cryptographic self-tests for each algorithm.
192
193	  The full set of tests should be enabled for development and
194	  pre-release testing, but not in production kernels.
195
196	  All crypto code in the kernel is expected to pass the full tests.
197
198config CRYPTO_NULL
199	tristate "Null algorithms"
200	select CRYPTO_ALGAPI
201	select CRYPTO_SKCIPHER
202	select CRYPTO_HASH
203	help
204	  These are 'Null' algorithms, used by IPsec, which do nothing.
205
206config CRYPTO_PCRYPT
207	tristate "Parallel crypto engine"
208	depends on SMP
209	select PADATA
210	select CRYPTO_MANAGER
211	select CRYPTO_AEAD
212	help
213	  This converts an arbitrary crypto algorithm into a parallel
214	  algorithm that executes in kernel threads.
215
216config CRYPTO_CRYPTD
217	tristate "Software async crypto daemon"
218	select CRYPTO_AEAD
219	select CRYPTO_SKCIPHER
220	select CRYPTO_HASH
221	select CRYPTO_MANAGER
222	help
223	  This is a generic software asynchronous crypto daemon that
224	  converts an arbitrary synchronous software crypto algorithm
225	  into an asynchronous algorithm that executes in a kernel thread.
226
227config CRYPTO_AUTHENC
228	tristate "Authenc support"
229	select CRYPTO_AEAD
230	select CRYPTO_SKCIPHER
231	select CRYPTO_MANAGER
232	select CRYPTO_HASH
233	help
234	  Authenc: Combined mode wrapper for IPsec.
235
236	  This is required for IPSec ESP (XFRM_ESP).
237
238config CRYPTO_KRB5ENC
239	tristate "Kerberos 5 combined hash+cipher support"
240	select CRYPTO_AEAD
241	select CRYPTO_SKCIPHER
242	select CRYPTO_MANAGER
243	select CRYPTO_HASH
244	help
245	  Combined hash and cipher support for Kerberos 5 RFC3961 simplified
246	  profile.  This is required for Kerberos 5-style encryption, used by
247	  sunrpc/NFS and rxrpc/AFS.
248
249config CRYPTO_BENCHMARK
250	tristate "Crypto benchmarking module"
251	depends on m || EXPERT
252	select CRYPTO_AEAD
253	select CRYPTO_HASH
254	select CRYPTO_MANAGER
255	select CRYPTO_SKCIPHER
256	help
257	  Quick & dirty crypto benchmarking module.
258
259	  This is mainly intended for use by people developing cryptographic
260	  algorithms in the kernel.  It should not be enabled in production
261	  kernels.
262
263config CRYPTO_SIMD
264	tristate
265	select CRYPTO_AEAD
266	select CRYPTO_CRYPTD
267
268config CRYPTO_ENGINE
269	tristate
270	select CRYPTO_AEAD
271	select CRYPTO_AKCIPHER
272	select CRYPTO_HASH
273	select CRYPTO_KPP
274	select CRYPTO_SKCIPHER
275
276endmenu
277
278menu "Public-key cryptography"
279
280config CRYPTO_RSA
281	tristate "RSA (Rivest-Shamir-Adleman)"
282	select CRYPTO_AKCIPHER
283	select CRYPTO_MANAGER
284	select CRYPTO_SIG
285	select MPILIB
286	select ASN1
287	help
288	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
289
290config CRYPTO_DH
291	tristate "DH (Diffie-Hellman)"
292	select CRYPTO_KPP
293	select MPILIB
294	help
295	  DH (Diffie-Hellman) key exchange algorithm
296
297config CRYPTO_DH_RFC7919_GROUPS
298	bool "RFC 7919 FFDHE groups"
299	depends on CRYPTO_DH
300	help
301	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
302	  defined in RFC7919.
303
304	  Support these finite-field groups in DH key exchanges:
305	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
306
307	  If unsure, say N.
308
309config CRYPTO_ECC
310	tristate
311
312config CRYPTO_ECDH
313	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
314	select CRYPTO_ECC
315	select CRYPTO_KPP
316	help
317	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
318	  using curves P-192, P-256, and P-384 (FIPS 186)
319
320config CRYPTO_ECDSA
321	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
322	select CRYPTO_ECC
323	select CRYPTO_SIG
324	select ASN1
325	help
326	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
327	  ISO/IEC 14888-3)
328	  using curves P-192, P-256, P-384 and P-521
329
330	  Only signature verification is implemented.
331
332config CRYPTO_ECRDSA
333	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
334	select CRYPTO_ECC
335	select CRYPTO_SIG
336	select CRYPTO_STREEBOG
337	select OID_REGISTRY
338	select ASN1
339	help
340	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
341	  RFC 7091, ISO/IEC 14888-3)
342
343	  One of the Russian cryptographic standard algorithms (called GOST
344	  algorithms). Only signature verification is implemented.
345
346config CRYPTO_MLDSA
347	tristate "ML-DSA (Module-Lattice-Based Digital Signature Algorithm)"
348	select CRYPTO_SIG
349	select CRYPTO_LIB_MLDSA
350	help
351	  ML-DSA (Module-Lattice-Based Digital Signature Algorithm) (FIPS-204).
352
353	  Only signature verification is implemented.
354
355endmenu
356
357menu "Block ciphers"
358
359config CRYPTO_AES
360	tristate "AES (Advanced Encryption Standard)"
361	select CRYPTO_ALGAPI
362	select CRYPTO_LIB_AES
363	select CRYPTO_LIB_AES_CBC_MACS if CRYPTO_CMAC || CRYPTO_XCBC || CRYPTO_CCM
364	select CRYPTO_HASH if CRYPTO_CMAC || CRYPTO_XCBC || CRYPTO_CCM
365	help
366	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
367
368	  Rijndael appears to be consistently a very good performer in
369	  both hardware and software across a wide range of computing
370	  environments regardless of its use in feedback or non-feedback
371	  modes. Its key setup time is excellent, and its key agility is
372	  good. Rijndael's very low memory requirements make it very well
373	  suited for restricted-space environments, in which it also
374	  demonstrates excellent performance. Rijndael's operations are
375	  among the easiest to defend against power and timing attacks.
376
377	  The AES specifies three key sizes: 128, 192 and 256 bits
378
379config CRYPTO_ANUBIS
380	tristate "Anubis"
381	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
382	select CRYPTO_ALGAPI
383	help
384	  Anubis cipher algorithm
385
386	  Anubis is a variable key length cipher which can use keys from
387	  128 bits to 320 bits in length.  It was evaluated as a entrant
388	  in the NESSIE competition.
389
390	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
391	  for further information.
392
393config CRYPTO_ARIA
394	tristate "ARIA"
395	select CRYPTO_ALGAPI
396	help
397	  ARIA cipher algorithm (RFC5794)
398
399	  ARIA is a standard encryption algorithm of the Republic of Korea.
400	  The ARIA specifies three key sizes and rounds.
401	  128-bit: 12 rounds.
402	  192-bit: 14 rounds.
403	  256-bit: 16 rounds.
404
405	  See:
406	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
407
408config CRYPTO_BLOWFISH
409	tristate "Blowfish"
410	select CRYPTO_ALGAPI
411	select CRYPTO_BLOWFISH_COMMON
412	help
413	  Blowfish cipher algorithm, by Bruce Schneier
414
415	  This is a variable key length cipher which can use keys from 32
416	  bits to 448 bits in length.  It's fast, simple and specifically
417	  designed for use on "large microprocessors".
418
419	  See https://www.schneier.com/blowfish.html for further information.
420
421config CRYPTO_BLOWFISH_COMMON
422	tristate
423	help
424	  Common parts of the Blowfish cipher algorithm shared by the
425	  generic c and the assembler implementations.
426
427config CRYPTO_CAMELLIA
428	tristate "Camellia"
429	select CRYPTO_ALGAPI
430	help
431	  Camellia cipher algorithms (ISO/IEC 18033-3)
432
433	  Camellia is a symmetric key block cipher developed jointly
434	  at NTT and Mitsubishi Electric Corporation.
435
436	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
437
438	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
439
440config CRYPTO_CAST_COMMON
441	tristate
442	help
443	  Common parts of the CAST cipher algorithms shared by the
444	  generic c and the assembler implementations.
445
446config CRYPTO_CAST5
447	tristate "CAST5 (CAST-128)"
448	select CRYPTO_ALGAPI
449	select CRYPTO_CAST_COMMON
450	help
451	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
452
453config CRYPTO_CAST6
454	tristate "CAST6 (CAST-256)"
455	select CRYPTO_ALGAPI
456	select CRYPTO_CAST_COMMON
457	help
458	  CAST6 (CAST-256) encryption algorithm (RFC2612)
459
460config CRYPTO_DES
461	tristate "DES and Triple DES EDE"
462	select CRYPTO_ALGAPI
463	select CRYPTO_LIB_DES
464	help
465	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
466	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
467	  cipher algorithms
468
469config CRYPTO_FCRYPT
470	tristate "FCrypt"
471	select CRYPTO_ALGAPI
472	select CRYPTO_SKCIPHER
473	help
474	  FCrypt algorithm used by RxRPC
475
476	  See https://ota.polyonymo.us/fcrypt-paper.txt
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_PCBC
718	tristate "PCBC (Propagating Cipher Block Chaining)"
719	select CRYPTO_SKCIPHER
720	select CRYPTO_MANAGER
721	help
722	  PCBC (Propagating Cipher Block Chaining) mode
723
724	  This block cipher mode is required for RxRPC.
725
726config CRYPTO_XCTR
727	tristate
728	select CRYPTO_SKCIPHER
729	select CRYPTO_MANAGER
730	help
731	  XCTR (XOR Counter) mode for HCTR2
732
733	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
734	  addition rather than big-endian arithmetic.
735
736	  XCTR mode is used to implement HCTR2.
737
738config CRYPTO_XTS
739	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
740	select CRYPTO_SKCIPHER
741	select CRYPTO_MANAGER
742	select CRYPTO_ECB
743	help
744	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
745	  and IEEE 1619)
746
747	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
748	  implementation currently can't handle a sectorsize which is not a
749	  multiple of 16 bytes.
750
751endmenu
752
753menu "AEAD (authenticated encryption with associated data) ciphers"
754
755config CRYPTO_AEGIS128
756	tristate "AEGIS-128"
757	select CRYPTO_AEAD
758	select CRYPTO_LIB_AES  # for AES S-box tables
759	help
760	  AEGIS-128 AEAD algorithm
761
762config CRYPTO_AEGIS128_SIMD
763	bool "AEGIS-128 (arm NEON, arm64 NEON)"
764	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
765	default y
766	help
767	  AEGIS-128 AEAD algorithm
768
769	  Architecture: arm or arm64 using:
770	  - NEON (Advanced SIMD) extension
771
772config CRYPTO_CHACHA20POLY1305
773	tristate "ChaCha20-Poly1305"
774	select CRYPTO_CHACHA20
775	select CRYPTO_AEAD
776	select CRYPTO_LIB_POLY1305
777	select CRYPTO_MANAGER
778	help
779	  ChaCha20 stream cipher and Poly1305 authenticator combined
780	  mode (RFC8439)
781
782config CRYPTO_CCM
783	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
784	select CRYPTO_CTR
785	select CRYPTO_HASH
786	select CRYPTO_AEAD
787	select CRYPTO_MANAGER
788	help
789	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
790	  authenticated encryption mode (NIST SP800-38C)
791
792config CRYPTO_GCM
793	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
794	select CRYPTO_CTR
795	select CRYPTO_AEAD
796	select CRYPTO_LIB_GF128HASH
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_MANAGER
808
809config CRYPTO_SEQIV
810	tristate "Sequence Number IV Generator"
811	select CRYPTO_GENIV
812	help
813	  Sequence Number IV generator
814
815	  This IV generator generates an IV based on a sequence number by
816	  xoring it with a salt.  This algorithm is mainly useful for CTR.
817
818	  This is required for IPsec ESP (XFRM_ESP).
819
820config CRYPTO_ECHAINIV
821	tristate "Encrypted Chain IV Generator"
822	select CRYPTO_GENIV
823	help
824	  Encrypted Chain IV generator
825
826	  This IV generator generates an IV based on the encryption of
827	  a sequence number xored with a salt.  This is the default
828	  algorithm for CBC.
829
830config CRYPTO_ESSIV
831	tristate "Encrypted Salt-Sector IV Generator"
832	select CRYPTO_AUTHENC
833	help
834	  Encrypted Salt-Sector IV generator
835
836	  This IV generator is used in some cases by fscrypt and/or
837	  dm-crypt. It uses the hash of the block encryption key as the
838	  symmetric key for a block encryption pass applied to the input
839	  IV, making low entropy IV sources more suitable for block
840	  encryption.
841
842	  This driver implements a crypto API template that can be
843	  instantiated either as an skcipher or as an AEAD (depending on the
844	  type of the first template argument), and which defers encryption
845	  and decryption requests to the encapsulated cipher after applying
846	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
847	  that the keys are presented in the same format used by the authenc
848	  template, and that the IV appears at the end of the authenticated
849	  associated data (AAD) region (which is how dm-crypt uses it.)
850
851	  Note that the use of ESSIV is not recommended for new deployments,
852	  and so this only needs to be enabled when interoperability with
853	  existing encrypted volumes of filesystems is required, or when
854	  building for a particular system that requires it (e.g., when
855	  the SoC in question has accelerated CBC but not XTS, making CBC
856	  combined with ESSIV the only feasible mode for h/w accelerated
857	  block encryption)
858
859endmenu
860
861menu "Hashes, digests, and MACs"
862
863config CRYPTO_BLAKE2B
864	tristate "BLAKE2b"
865	select CRYPTO_HASH
866	select CRYPTO_LIB_BLAKE2B
867	help
868	  BLAKE2b cryptographic hash function (RFC 7693)
869
870	  BLAKE2b is optimized for 64-bit platforms and can produce digests
871	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
872
873	  This module provides the following algorithms:
874	  - blake2b-160
875	  - blake2b-256
876	  - blake2b-384
877	  - blake2b-512
878
879	  See https://blake2.net for further information.
880
881config CRYPTO_CMAC
882	tristate "CMAC (Cipher-based MAC)"
883	select CRYPTO_HASH
884	select CRYPTO_MANAGER
885	help
886	  CMAC (Cipher-based Message Authentication Code) authentication
887	  mode (NIST SP800-38B and IETF RFC4493)
888
889config CRYPTO_HMAC
890	tristate "HMAC (Keyed-Hash MAC)"
891	select CRYPTO_HASH
892	select CRYPTO_MANAGER
893	help
894	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
895	  RFC2104)
896
897	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
898
899config CRYPTO_MD4
900	tristate "MD4"
901	select CRYPTO_HASH
902	help
903	  MD4 message digest algorithm (RFC1320)
904
905config CRYPTO_MD5
906	tristate "MD5"
907	select CRYPTO_HASH
908	select CRYPTO_LIB_MD5
909	help
910	  MD5 message digest algorithm (RFC1321), including HMAC support.
911
912config CRYPTO_RMD160
913	tristate "RIPEMD-160"
914	select CRYPTO_HASH
915	help
916	  RIPEMD-160 hash function (ISO/IEC 10118-3)
917
918	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
919	  to be used as a secure replacement for the 128-bit hash functions
920	  MD4, MD5 and its predecessor RIPEMD
921	  (not to be confused with RIPEMD-128).
922
923	  Its speed is comparable to SHA-1 and there are no known attacks
924	  against RIPEMD-160.
925
926	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
927	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
928	  for further information.
929
930config CRYPTO_SHA1
931	tristate "SHA-1"
932	select CRYPTO_HASH
933	select CRYPTO_LIB_SHA1
934	help
935	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including
936	  HMAC support.
937
938config CRYPTO_SHA256
939	tristate "SHA-224 and SHA-256"
940	select CRYPTO_HASH
941	select CRYPTO_LIB_SHA256
942	help
943	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC
944	  10118-3), including HMAC support.
945
946	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
947
948config CRYPTO_SHA512
949	tristate "SHA-384 and SHA-512"
950	select CRYPTO_HASH
951	select CRYPTO_LIB_SHA512
952	help
953	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC
954	  10118-3), including HMAC support.
955
956config CRYPTO_SHA3
957	tristate "SHA-3"
958	select CRYPTO_HASH
959	select CRYPTO_LIB_SHA3
960	help
961	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
962
963config CRYPTO_SM3
964	tristate "SM3 (ShangMi 3)"
965	select CRYPTO_HASH
966	select CRYPTO_LIB_SM3
967	help
968	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
969
970	  This is part of the Chinese Commercial Cryptography suite.
971
972	  References:
973	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
974	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
975
976config CRYPTO_STREEBOG
977	tristate "Streebog"
978	select CRYPTO_HASH
979	help
980	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
981
982	  This is one of the Russian cryptographic standard algorithms (called
983	  GOST algorithms). This setting enables two hash algorithms with
984	  256 and 512 bits output.
985
986	  References:
987	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
988	  https://tools.ietf.org/html/rfc6986
989
990config CRYPTO_WP512
991	tristate "Whirlpool"
992	select CRYPTO_HASH
993	help
994	  Whirlpool hash function (ISO/IEC 10118-3)
995
996	  512, 384 and 256-bit hashes.
997
998	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
999
1000	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
1001	  for further information.
1002
1003config CRYPTO_XCBC
1004	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1005	select CRYPTO_HASH
1006	select CRYPTO_MANAGER
1007	help
1008	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
1009	  Code) (RFC3566)
1010
1011config CRYPTO_XXHASH
1012	tristate "xxHash"
1013	select CRYPTO_HASH
1014	select XXHASH
1015	help
1016	  xxHash non-cryptographic hash algorithm
1017
1018	  Extremely fast, working at speeds close to RAM limits.
1019
1020endmenu
1021
1022menu "CRCs (cyclic redundancy checks)"
1023
1024config CRYPTO_CRC32C
1025	tristate "CRC32c"
1026	select CRYPTO_HASH
1027	select CRC32
1028	help
1029	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1030
1031	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1032	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1033	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1034	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1035	  iSCSI.
1036
1037config CRYPTO_CRC32
1038	tristate "CRC32"
1039	select CRYPTO_HASH
1040	select CRC32
1041	help
1042	  CRC32 CRC algorithm (IEEE 802.3)
1043
1044endmenu
1045
1046menu "Compression"
1047
1048config CRYPTO_DEFLATE
1049	tristate "Deflate"
1050	select CRYPTO_ALGAPI
1051	select CRYPTO_ACOMP2
1052	select ZLIB_INFLATE
1053	select ZLIB_DEFLATE
1054	help
1055	  Deflate compression algorithm (RFC1951)
1056
1057	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
1058
1059config CRYPTO_LZO
1060	tristate "LZO"
1061	select CRYPTO_ALGAPI
1062	select CRYPTO_ACOMP2
1063	select LZO_COMPRESS
1064	select LZO_DECOMPRESS
1065	help
1066	  LZO compression algorithm
1067
1068	  See https://www.oberhumer.com/opensource/lzo/ for further information.
1069
1070config CRYPTO_842
1071	tristate "842"
1072	select CRYPTO_ALGAPI
1073	select CRYPTO_ACOMP2
1074	select 842_COMPRESS
1075	select 842_DECOMPRESS
1076	help
1077	  842 compression algorithm by IBM
1078
1079	  See https://github.com/plauth/lib842 for further information.
1080
1081config CRYPTO_LZ4
1082	tristate "LZ4"
1083	select CRYPTO_ALGAPI
1084	select CRYPTO_ACOMP2
1085	select LZ4_COMPRESS
1086	select LZ4_DECOMPRESS
1087	help
1088	  LZ4 compression algorithm
1089
1090	  See https://github.com/lz4/lz4 for further information.
1091
1092config CRYPTO_LZ4HC
1093	tristate "LZ4HC"
1094	select CRYPTO_ALGAPI
1095	select CRYPTO_ACOMP2
1096	select LZ4HC_COMPRESS
1097	select LZ4_DECOMPRESS
1098	help
1099	  LZ4 high compression mode algorithm
1100
1101	  See https://github.com/lz4/lz4 for further information.
1102
1103config CRYPTO_ZSTD
1104	tristate "Zstd"
1105	select CRYPTO_ALGAPI
1106	select CRYPTO_ACOMP2
1107	select ZSTD_COMPRESS
1108	select ZSTD_DECOMPRESS
1109	help
1110	  zstd compression algorithm
1111
1112	  See https://github.com/facebook/zstd for further information.
1113
1114endmenu
1115
1116menu "Random number generation"
1117
1118menuconfig CRYPTO_DRBG_MENU
1119	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1120	help
1121	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
1122
1123	  In the following submenu, one or more of the DRBG types must be selected.
1124
1125if CRYPTO_DRBG_MENU
1126
1127config CRYPTO_DRBG_HMAC
1128	bool
1129	default y
1130	select CRYPTO_HMAC
1131	select CRYPTO_SHA512
1132
1133config CRYPTO_DRBG_HASH
1134	bool "Hash_DRBG"
1135	select CRYPTO_SHA256
1136	help
1137	  Hash_DRBG variant as defined in NIST SP800-90A.
1138
1139	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
1140
1141config CRYPTO_DRBG_CTR
1142	bool "CTR_DRBG"
1143	select CRYPTO_DF80090A
1144	help
1145	  CTR_DRBG variant as defined in NIST SP800-90A.
1146
1147	  This uses the AES cipher algorithm with the counter block mode.
1148
1149config CRYPTO_DRBG
1150	tristate
1151	default CRYPTO_DRBG_MENU
1152	select CRYPTO_RNG
1153	select CRYPTO_JITTERENTROPY
1154
1155endif	# if CRYPTO_DRBG_MENU
1156
1157config CRYPTO_JITTERENTROPY
1158	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
1159	select CRYPTO_LIB_SHA3
1160	select CRYPTO_RNG
1161	help
1162	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
1163
1164	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
1165	  compliant with NIST SP800-90B) intended to provide a seed to a
1166	  deterministic RNG (e.g., per NIST SP800-90C).
1167	  This RNG does not perform any cryptographic whitening of the generated
1168	  random numbers.
1169
1170	  See https://www.chronox.de/jent/
1171
1172if CRYPTO_JITTERENTROPY
1173if CRYPTO_FIPS && EXPERT
1174
1175choice
1176	prompt "CPU Jitter RNG Memory Size"
1177	default CRYPTO_JITTERENTROPY_MEMSIZE_2
1178	help
1179	  The Jitter RNG measures the execution time of memory accesses.
1180	  Multiple consecutive memory accesses are performed. If the memory
1181	  size fits into a cache (e.g. L1), only the memory access timing
1182	  to that cache is measured. The closer the cache is to the CPU
1183	  the less variations are measured and thus the less entropy is
1184	  obtained. Thus, if the memory size fits into the L1 cache, the
1185	  obtained entropy is less than if the memory size fits within
1186	  L1 + L2, which in turn is less if the memory fits into
1187	  L1 + L2 + L3. Thus, by selecting a different memory size,
1188	  the entropy rate produced by the Jitter RNG can be modified.
1189
1190	config CRYPTO_JITTERENTROPY_MEMSIZE_2
1191		bool "2048 Bytes (default)"
1192
1193	config CRYPTO_JITTERENTROPY_MEMSIZE_128
1194		bool "128 kBytes"
1195
1196	config CRYPTO_JITTERENTROPY_MEMSIZE_1024
1197		bool "1024 kBytes"
1198
1199	config CRYPTO_JITTERENTROPY_MEMSIZE_8192
1200		bool "8192 kBytes"
1201endchoice
1202
1203config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1204	int
1205	default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1206	default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1207	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1208	default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1209
1210config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1211	int
1212	default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1213	default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1214	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1215	default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1216
1217config CRYPTO_JITTERENTROPY_OSR
1218	int "CPU Jitter RNG Oversampling Rate"
1219	range 1 15
1220	default 3
1221	help
1222	  The Jitter RNG allows the specification of an oversampling rate (OSR).
1223	  The Jitter RNG operation requires a fixed amount of timing
1224	  measurements to produce one output block of random numbers. The
1225	  OSR value is multiplied with the amount of timing measurements to
1226	  generate one output block. Thus, the timing measurement is oversampled
1227	  by the OSR factor. The oversampling allows the Jitter RNG to operate
1228	  on hardware whose timers deliver limited amount of entropy (e.g.
1229	  the timer is coarse) by setting the OSR to a higher value. The
1230	  trade-off, however, is that the Jitter RNG now requires more time
1231	  to generate random numbers.
1232
1233config CRYPTO_JITTERENTROPY_TESTINTERFACE
1234	bool "CPU Jitter RNG Test Interface"
1235	help
1236	  The test interface allows a privileged process to capture
1237	  the raw unconditioned high resolution time stamp noise that
1238	  is collected by the Jitter RNG for statistical analysis. As
1239	  this data is used at the same time to generate random bits,
1240	  the Jitter RNG operates in an insecure mode as long as the
1241	  recording is enabled. This interface therefore is only
1242	  intended for testing purposes and is not suitable for
1243	  production systems.
1244
1245	  The raw noise data can be obtained using the jent_raw_hires
1246	  debugfs file. Using the option
1247	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
1248	  the first 1000 entropy events since boot can be sampled.
1249
1250	  If unsure, select N.
1251
1252endif	# if CRYPTO_FIPS && EXPERT
1253
1254if !(CRYPTO_FIPS && EXPERT)
1255
1256config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1257	int
1258	default 64
1259
1260config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1261	int
1262	default 32
1263
1264config CRYPTO_JITTERENTROPY_OSR
1265	int
1266	default 1
1267
1268config CRYPTO_JITTERENTROPY_TESTINTERFACE
1269	bool
1270
1271endif	# if !(CRYPTO_FIPS && EXPERT)
1272endif	# if CRYPTO_JITTERENTROPY
1273
1274config CRYPTO_KDF800108_CTR
1275	tristate
1276	select CRYPTO_HMAC
1277	select CRYPTO_SHA256
1278
1279config CRYPTO_DF80090A
1280	tristate
1281	select CRYPTO_AES
1282	select CRYPTO_CTR
1283
1284endmenu
1285menu "Userspace interface"
1286
1287config CRYPTO_USER_API
1288	tristate
1289
1290config CRYPTO_USER_API_HASH
1291	tristate "Hash algorithms"
1292	depends on NET
1293	select CRYPTO_HASH
1294	select CRYPTO_USER_API
1295	help
1296	  Enable the userspace interface for hash algorithms.
1297
1298	  See Documentation/crypto/userspace-if.rst and
1299	  https://www.chronox.de/libkcapi/html/index.html
1300
1301config CRYPTO_USER_API_SKCIPHER
1302	tristate "Symmetric key cipher algorithms"
1303	depends on NET
1304	select CRYPTO_SKCIPHER
1305	select CRYPTO_USER_API
1306	help
1307	  Enable the userspace interface for symmetric key cipher algorithms.
1308
1309	  See Documentation/crypto/userspace-if.rst and
1310	  https://www.chronox.de/libkcapi/html/index.html
1311
1312config CRYPTO_USER_API_RNG
1313	tristate "RNG (random number generator) algorithms"
1314	depends on NET
1315	select CRYPTO_RNG
1316	select CRYPTO_USER_API
1317	help
1318	  Enable the userspace interface for RNG (random number generator)
1319	  algorithms.
1320
1321	  See Documentation/crypto/userspace-if.rst and
1322	  https://www.chronox.de/libkcapi/html/index.html
1323
1324config CRYPTO_USER_API_RNG_CAVP
1325	bool "Enable CAVP testing of DRBG"
1326	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1327	help
1328	  Enable extra APIs in the userspace interface for NIST CAVP
1329	  (Cryptographic Algorithm Validation Program) testing:
1330	  - resetting DRBG entropy
1331	  - providing Additional Data
1332
1333	  This should only be enabled for CAVP testing. You should say
1334	  no unless you know what this is.
1335
1336config CRYPTO_USER_API_AEAD
1337	tristate "AEAD cipher algorithms"
1338	depends on NET
1339	select CRYPTO_AEAD
1340	select CRYPTO_SKCIPHER
1341	select CRYPTO_USER_API
1342	help
1343	  Enable the userspace interface for AEAD cipher algorithms.
1344
1345	  See Documentation/crypto/userspace-if.rst and
1346	  https://www.chronox.de/libkcapi/html/index.html
1347
1348config CRYPTO_USER_API_ENABLE_OBSOLETE
1349	bool "Obsolete cryptographic algorithms"
1350	depends on CRYPTO_USER_API
1351	default y
1352	help
1353	  Allow obsolete cryptographic algorithms to be selected that have
1354	  already been phased out from internal use by the kernel, and are
1355	  only useful for userspace clients that still rely on them.
1356
1357endmenu
1358
1359if !KMSAN # avoid false positives from assembly
1360if ARM
1361source "arch/arm/crypto/Kconfig"
1362endif
1363if ARM64
1364source "arch/arm64/crypto/Kconfig"
1365endif
1366if LOONGARCH
1367source "arch/loongarch/crypto/Kconfig"
1368endif
1369if MIPS
1370source "arch/mips/crypto/Kconfig"
1371endif
1372if PPC
1373source "arch/powerpc/crypto/Kconfig"
1374endif
1375if RISCV
1376source "arch/riscv/crypto/Kconfig"
1377endif
1378if S390
1379source "arch/s390/crypto/Kconfig"
1380endif
1381if SPARC
1382source "arch/sparc/crypto/Kconfig"
1383endif
1384if X86
1385source "arch/x86/crypto/Kconfig"
1386endif
1387endif
1388
1389source "drivers/crypto/Kconfig"
1390source "crypto/asymmetric_keys/Kconfig"
1391source "certs/Kconfig"
1392source "crypto/krb5/Kconfig"
1393
1394endif	# if CRYPTO
1395