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