xref: /linux/crypto/Kconfig (revision 40286d6379aacfcc053253ef78dc78b09addffda)
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_RMD160
909	tristate "RIPEMD-160"
910	select CRYPTO_HASH
911	help
912	  RIPEMD-160 hash function (ISO/IEC 10118-3)
913
914	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
915	  to be used as a secure replacement for the 128-bit hash functions
916	  MD4, MD5 and its predecessor RIPEMD
917	  (not to be confused with RIPEMD-128).
918
919	  Its speed is comparable to SHA-1 and there are no known attacks
920	  against RIPEMD-160.
921
922	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
923	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
924	  for further information.
925
926config CRYPTO_SHA1
927	tristate "SHA-1"
928	select CRYPTO_HASH
929	select CRYPTO_LIB_SHA1
930	help
931	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including
932	  HMAC support.
933
934config CRYPTO_SHA256
935	tristate "SHA-224 and SHA-256"
936	select CRYPTO_HASH
937	select CRYPTO_LIB_SHA256
938	help
939	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC
940	  10118-3), including HMAC support.
941
942	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
943
944config CRYPTO_SHA512
945	tristate "SHA-384 and SHA-512"
946	select CRYPTO_HASH
947	select CRYPTO_LIB_SHA512
948	help
949	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC
950	  10118-3), including HMAC support.
951
952config CRYPTO_SHA3
953	tristate "SHA-3"
954	select CRYPTO_HASH
955	select CRYPTO_LIB_SHA3
956	help
957	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
958
959config CRYPTO_SM3
960	tristate "SM3 (ShangMi 3)"
961	select CRYPTO_HASH
962	select CRYPTO_LIB_SM3
963	help
964	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
965
966	  This is part of the Chinese Commercial Cryptography suite.
967
968	  References:
969	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
970	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
971
972config CRYPTO_STREEBOG
973	tristate "Streebog"
974	select CRYPTO_HASH
975	help
976	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
977
978	  This is one of the Russian cryptographic standard algorithms (called
979	  GOST algorithms). This setting enables two hash algorithms with
980	  256 and 512 bits output.
981
982	  References:
983	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
984	  https://tools.ietf.org/html/rfc6986
985
986config CRYPTO_WP512
987	tristate "Whirlpool"
988	select CRYPTO_HASH
989	help
990	  Whirlpool hash function (ISO/IEC 10118-3)
991
992	  512, 384 and 256-bit hashes.
993
994	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
995
996	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
997	  for further information.
998
999config CRYPTO_XCBC
1000	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1001	select CRYPTO_HASH
1002	select CRYPTO_MANAGER
1003	help
1004	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
1005	  Code) (RFC3566)
1006
1007config CRYPTO_XXHASH
1008	tristate "xxHash"
1009	select CRYPTO_HASH
1010	select XXHASH
1011	help
1012	  xxHash non-cryptographic hash algorithm
1013
1014	  Extremely fast, working at speeds close to RAM limits.
1015
1016endmenu
1017
1018menu "CRCs (cyclic redundancy checks)"
1019
1020config CRYPTO_CRC32C
1021	tristate "CRC32c"
1022	select CRYPTO_HASH
1023	select CRC32
1024	help
1025	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1026
1027	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1028	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1029	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1030	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1031	  iSCSI.
1032
1033config CRYPTO_CRC32
1034	tristate "CRC32"
1035	select CRYPTO_HASH
1036	select CRC32
1037	help
1038	  CRC32 CRC algorithm (IEEE 802.3)
1039
1040endmenu
1041
1042menu "Compression"
1043
1044config CRYPTO_DEFLATE
1045	tristate "Deflate"
1046	select CRYPTO_ALGAPI
1047	select CRYPTO_ACOMP2
1048	select ZLIB_INFLATE
1049	select ZLIB_DEFLATE
1050	help
1051	  Deflate compression algorithm (RFC1951)
1052
1053	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
1054
1055config CRYPTO_LZO
1056	tristate "LZO"
1057	select CRYPTO_ALGAPI
1058	select CRYPTO_ACOMP2
1059	select LZO_COMPRESS
1060	select LZO_DECOMPRESS
1061	help
1062	  LZO compression algorithm
1063
1064	  See https://www.oberhumer.com/opensource/lzo/ for further information.
1065
1066config CRYPTO_842
1067	tristate "842"
1068	select CRYPTO_ALGAPI
1069	select CRYPTO_ACOMP2
1070	select 842_COMPRESS
1071	select 842_DECOMPRESS
1072	help
1073	  842 compression algorithm by IBM
1074
1075	  See https://github.com/plauth/lib842 for further information.
1076
1077config CRYPTO_LZ4
1078	tristate "LZ4"
1079	select CRYPTO_ALGAPI
1080	select CRYPTO_ACOMP2
1081	select LZ4_COMPRESS
1082	select LZ4_DECOMPRESS
1083	help
1084	  LZ4 compression algorithm
1085
1086	  See https://github.com/lz4/lz4 for further information.
1087
1088config CRYPTO_LZ4HC
1089	tristate "LZ4HC"
1090	select CRYPTO_ALGAPI
1091	select CRYPTO_ACOMP2
1092	select LZ4HC_COMPRESS
1093	select LZ4_DECOMPRESS
1094	help
1095	  LZ4 high compression mode algorithm
1096
1097	  See https://github.com/lz4/lz4 for further information.
1098
1099config CRYPTO_ZSTD
1100	tristate "Zstd"
1101	select CRYPTO_ALGAPI
1102	select CRYPTO_ACOMP2
1103	select ZSTD_COMPRESS
1104	select ZSTD_DECOMPRESS
1105	help
1106	  zstd compression algorithm
1107
1108	  See https://github.com/facebook/zstd for further information.
1109
1110endmenu
1111
1112menu "Random number generation"
1113
1114menuconfig CRYPTO_DRBG_MENU
1115	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1116	help
1117	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
1118
1119	  In the following submenu, one or more of the DRBG types must be selected.
1120
1121if CRYPTO_DRBG_MENU
1122
1123config CRYPTO_DRBG_HMAC
1124	bool
1125	default y
1126	select CRYPTO_HMAC
1127	select CRYPTO_SHA512
1128
1129config CRYPTO_DRBG_HASH
1130	bool "Hash_DRBG"
1131	select CRYPTO_SHA256
1132	help
1133	  Hash_DRBG variant as defined in NIST SP800-90A.
1134
1135	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
1136
1137config CRYPTO_DRBG_CTR
1138	bool "CTR_DRBG"
1139	select CRYPTO_DF80090A
1140	help
1141	  CTR_DRBG variant as defined in NIST SP800-90A.
1142
1143	  This uses the AES cipher algorithm with the counter block mode.
1144
1145config CRYPTO_DRBG
1146	tristate
1147	default CRYPTO_DRBG_MENU
1148	select CRYPTO_RNG
1149	select CRYPTO_JITTERENTROPY
1150
1151endif	# if CRYPTO_DRBG_MENU
1152
1153config CRYPTO_JITTERENTROPY
1154	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
1155	select CRYPTO_LIB_SHA3
1156	select CRYPTO_RNG
1157	help
1158	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
1159
1160	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
1161	  compliant with NIST SP800-90B) intended to provide a seed to a
1162	  deterministic RNG (e.g., per NIST SP800-90C).
1163	  This RNG does not perform any cryptographic whitening of the generated
1164	  random numbers.
1165
1166	  See https://www.chronox.de/jent/
1167
1168if CRYPTO_JITTERENTROPY
1169if CRYPTO_FIPS && EXPERT
1170
1171choice
1172	prompt "CPU Jitter RNG Memory Size"
1173	default CRYPTO_JITTERENTROPY_MEMSIZE_2
1174	help
1175	  The Jitter RNG measures the execution time of memory accesses.
1176	  Multiple consecutive memory accesses are performed. If the memory
1177	  size fits into a cache (e.g. L1), only the memory access timing
1178	  to that cache is measured. The closer the cache is to the CPU
1179	  the less variations are measured and thus the less entropy is
1180	  obtained. Thus, if the memory size fits into the L1 cache, the
1181	  obtained entropy is less than if the memory size fits within
1182	  L1 + L2, which in turn is less if the memory fits into
1183	  L1 + L2 + L3. Thus, by selecting a different memory size,
1184	  the entropy rate produced by the Jitter RNG can be modified.
1185
1186	config CRYPTO_JITTERENTROPY_MEMSIZE_2
1187		bool "2048 Bytes (default)"
1188
1189	config CRYPTO_JITTERENTROPY_MEMSIZE_128
1190		bool "128 kBytes"
1191
1192	config CRYPTO_JITTERENTROPY_MEMSIZE_1024
1193		bool "1024 kBytes"
1194
1195	config CRYPTO_JITTERENTROPY_MEMSIZE_8192
1196		bool "8192 kBytes"
1197endchoice
1198
1199config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1200	int
1201	default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1202	default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1203	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1204	default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1205
1206config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1207	int
1208	default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2
1209	default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128
1210	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
1211	default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
1212
1213config CRYPTO_JITTERENTROPY_OSR
1214	int "CPU Jitter RNG Oversampling Rate"
1215	range 1 15
1216	default 3
1217	help
1218	  The Jitter RNG allows the specification of an oversampling rate (OSR).
1219	  The Jitter RNG operation requires a fixed amount of timing
1220	  measurements to produce one output block of random numbers. The
1221	  OSR value is multiplied with the amount of timing measurements to
1222	  generate one output block. Thus, the timing measurement is oversampled
1223	  by the OSR factor. The oversampling allows the Jitter RNG to operate
1224	  on hardware whose timers deliver limited amount of entropy (e.g.
1225	  the timer is coarse) by setting the OSR to a higher value. The
1226	  trade-off, however, is that the Jitter RNG now requires more time
1227	  to generate random numbers.
1228
1229config CRYPTO_JITTERENTROPY_TESTINTERFACE
1230	bool "CPU Jitter RNG Test Interface"
1231	help
1232	  The test interface allows a privileged process to capture
1233	  the raw unconditioned high resolution time stamp noise that
1234	  is collected by the Jitter RNG for statistical analysis. As
1235	  this data is used at the same time to generate random bits,
1236	  the Jitter RNG operates in an insecure mode as long as the
1237	  recording is enabled. This interface therefore is only
1238	  intended for testing purposes and is not suitable for
1239	  production systems.
1240
1241	  The raw noise data can be obtained using the jent_raw_hires
1242	  debugfs file. Using the option
1243	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
1244	  the first 1000 entropy events since boot can be sampled.
1245
1246	  If unsure, select N.
1247
1248endif	# if CRYPTO_FIPS && EXPERT
1249
1250if !(CRYPTO_FIPS && EXPERT)
1251
1252config CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1253	int
1254	default 64
1255
1256config CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1257	int
1258	default 32
1259
1260config CRYPTO_JITTERENTROPY_OSR
1261	int
1262	default 1
1263
1264config CRYPTO_JITTERENTROPY_TESTINTERFACE
1265	bool
1266
1267endif	# if !(CRYPTO_FIPS && EXPERT)
1268endif	# if CRYPTO_JITTERENTROPY
1269
1270config CRYPTO_KDF800108_CTR
1271	tristate
1272	select CRYPTO_HMAC
1273	select CRYPTO_SHA256
1274
1275config CRYPTO_DF80090A
1276	tristate
1277	select CRYPTO_AES
1278	select CRYPTO_CTR
1279
1280endmenu
1281menu "Userspace interface"
1282
1283config CRYPTO_USER_API
1284	tristate
1285
1286config CRYPTO_USER_API_HASH
1287	tristate "Hash algorithms"
1288	depends on NET
1289	select CRYPTO_HASH
1290	select CRYPTO_USER_API
1291	help
1292	  Enable the userspace interface for hash algorithms.
1293
1294	  See Documentation/crypto/userspace-if.rst and
1295	  https://www.chronox.de/libkcapi/html/index.html
1296
1297config CRYPTO_USER_API_SKCIPHER
1298	tristate "Symmetric key cipher algorithms"
1299	depends on NET
1300	select CRYPTO_SKCIPHER
1301	select CRYPTO_USER_API
1302	help
1303	  Enable the userspace interface for symmetric key cipher algorithms.
1304
1305	  See Documentation/crypto/userspace-if.rst and
1306	  https://www.chronox.de/libkcapi/html/index.html
1307
1308config CRYPTO_USER_API_RNG
1309	tristate "RNG (random number generator) algorithms"
1310	depends on NET
1311	select CRYPTO_RNG
1312	select CRYPTO_USER_API
1313	help
1314	  Enable the userspace interface for RNG (random number generator)
1315	  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_CAVP
1321	bool "Enable CAVP testing of DRBG"
1322	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1323	help
1324	  Enable extra APIs in the userspace interface for NIST CAVP
1325	  (Cryptographic Algorithm Validation Program) testing:
1326	  - resetting DRBG entropy
1327	  - providing Additional Data
1328
1329	  This should only be enabled for CAVP testing. You should say
1330	  no unless you know what this is.
1331
1332config CRYPTO_USER_API_AEAD
1333	tristate "AEAD cipher algorithms"
1334	depends on NET
1335	select CRYPTO_AEAD
1336	select CRYPTO_SKCIPHER
1337	select CRYPTO_USER_API
1338	help
1339	  Enable the userspace interface for AEAD cipher algorithms.
1340
1341	  See Documentation/crypto/userspace-if.rst and
1342	  https://www.chronox.de/libkcapi/html/index.html
1343
1344config CRYPTO_USER_API_ENABLE_OBSOLETE
1345	bool "Obsolete cryptographic algorithms"
1346	depends on CRYPTO_USER_API
1347	default y
1348	help
1349	  Allow obsolete cryptographic algorithms to be selected that have
1350	  already been phased out from internal use by the kernel, and are
1351	  only useful for userspace clients that still rely on them.
1352
1353endmenu
1354
1355if !KMSAN # avoid false positives from assembly
1356if ARM
1357source "arch/arm/crypto/Kconfig"
1358endif
1359if ARM64
1360source "arch/arm64/crypto/Kconfig"
1361endif
1362if LOONGARCH
1363source "arch/loongarch/crypto/Kconfig"
1364endif
1365if MIPS
1366source "arch/mips/crypto/Kconfig"
1367endif
1368if PPC
1369source "arch/powerpc/crypto/Kconfig"
1370endif
1371if RISCV
1372source "arch/riscv/crypto/Kconfig"
1373endif
1374if S390
1375source "arch/s390/crypto/Kconfig"
1376endif
1377if SPARC
1378source "arch/sparc/crypto/Kconfig"
1379endif
1380if X86
1381source "arch/x86/crypto/Kconfig"
1382endif
1383endif
1384
1385source "drivers/crypto/Kconfig"
1386source "crypto/asymmetric_keys/Kconfig"
1387source "certs/Kconfig"
1388source "crypto/krb5/Kconfig"
1389
1390endif	# if CRYPTO
1391