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