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