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