xref: /linux/crypto/Kconfig (revision 0e28a1a644c15f2f7786ec825220d3f28b8476b5)
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=y && 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_AKCIPHER2
113	tristate
114	select CRYPTO_ALGAPI2
115
116config CRYPTO_AKCIPHER
117	tristate
118	select CRYPTO_AKCIPHER2
119	select CRYPTO_ALGAPI
120
121config CRYPTO_KPP2
122	tristate
123	select CRYPTO_ALGAPI2
124
125config CRYPTO_KPP
126	tristate
127	select CRYPTO_ALGAPI
128	select CRYPTO_KPP2
129
130config CRYPTO_ACOMP2
131	tristate
132	select CRYPTO_ALGAPI2
133	select SGL_ALLOC
134
135config CRYPTO_ACOMP
136	tristate
137	select CRYPTO_ALGAPI
138	select CRYPTO_ACOMP2
139
140config CRYPTO_HKDF
141	tristate
142	select CRYPTO_SHA256 if CRYPTO_SELFTESTS
143	select CRYPTO_SHA512 if CRYPTO_SELFTESTS
144	select CRYPTO_HASH2
145
146config CRYPTO_MANAGER
147	tristate
148	default CRYPTO_ALGAPI if CRYPTO_SELFTESTS
149	select CRYPTO_MANAGER2
150	help
151	  This provides the support for instantiating templates such as
152	  cbc(aes), and the support for the crypto self-tests.
153
154config CRYPTO_MANAGER2
155	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
156	select CRYPTO_ACOMP2
157	select CRYPTO_AEAD2
158	select CRYPTO_AKCIPHER2
159	select CRYPTO_SIG2
160	select CRYPTO_HASH2
161	select CRYPTO_KPP2
162	select CRYPTO_RNG2
163	select CRYPTO_SKCIPHER2
164
165config CRYPTO_USER
166	tristate "Userspace cryptographic algorithm configuration"
167	depends on NET
168	select CRYPTO_MANAGER
169	help
170	  Userspace configuration for cryptographic instantiations such as
171	  cbc(aes).
172
173config CRYPTO_SELFTESTS
174	bool "Enable cryptographic self-tests"
175	depends on EXPERT
176	help
177	  Enable the cryptographic self-tests.
178
179	  The cryptographic self-tests run at boot time, or at algorithm
180	  registration time if algorithms are dynamically loaded later.
181
182	  There are two main use cases for these tests:
183
184	  - Development and pre-release testing.  In this case, also enable
185	    CRYPTO_SELFTESTS_FULL to get the full set of tests.  All crypto code
186	    in the kernel is expected to pass the full set of tests.
187
188	  - Production kernels, to help prevent buggy drivers from being used
189	    and/or meet FIPS 140-3 pre-operational testing requirements.  In
190	    this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL.
191
192config CRYPTO_SELFTESTS_FULL
193	bool "Enable the full set of cryptographic self-tests"
194	depends on CRYPTO_SELFTESTS
195	help
196	  Enable the full set of cryptographic self-tests for each algorithm.
197
198	  The full set of tests should be enabled for development and
199	  pre-release testing, but not in production kernels.
200
201	  All crypto code in the kernel is expected to pass the full tests.
202
203config CRYPTO_NULL
204	tristate "Null algorithms"
205	select CRYPTO_ALGAPI
206	select CRYPTO_SKCIPHER
207	select CRYPTO_HASH
208	help
209	  These are 'Null' algorithms, used by IPsec, which do nothing.
210
211config CRYPTO_PCRYPT
212	tristate "Parallel crypto engine"
213	depends on SMP
214	select PADATA
215	select CRYPTO_MANAGER
216	select CRYPTO_AEAD
217	help
218	  This converts an arbitrary crypto algorithm into a parallel
219	  algorithm that executes in kernel threads.
220
221config CRYPTO_CRYPTD
222	tristate "Software async crypto daemon"
223	select CRYPTO_SKCIPHER
224	select CRYPTO_HASH
225	select CRYPTO_MANAGER
226	help
227	  This is a generic software asynchronous crypto daemon that
228	  converts an arbitrary synchronous software crypto algorithm
229	  into an asynchronous algorithm that executes in a kernel thread.
230
231config CRYPTO_AUTHENC
232	tristate "Authenc support"
233	select CRYPTO_AEAD
234	select CRYPTO_SKCIPHER
235	select CRYPTO_MANAGER
236	select CRYPTO_HASH
237	help
238	  Authenc: Combined mode wrapper for IPsec.
239
240	  This is required for IPSec ESP (XFRM_ESP).
241
242config CRYPTO_KRB5ENC
243	tristate "Kerberos 5 combined hash+cipher support"
244	select CRYPTO_AEAD
245	select CRYPTO_SKCIPHER
246	select CRYPTO_MANAGER
247	select CRYPTO_HASH
248	help
249	  Combined hash and cipher support for Kerberos 5 RFC3961 simplified
250	  profile.  This is required for Kerberos 5-style encryption, used by
251	  sunrpc/NFS and rxrpc/AFS.
252
253config CRYPTO_BENCHMARK
254	tristate "Crypto benchmarking module"
255	depends on m || EXPERT
256	select CRYPTO_MANAGER
257	help
258	  Quick & dirty crypto benchmarking module.
259
260	  This is mainly intended for use by people developing cryptographic
261	  algorithms in the kernel.  It should not be enabled in production
262	  kernels.
263
264config CRYPTO_SIMD
265	tristate
266	select CRYPTO_CRYPTD
267
268config CRYPTO_ENGINE
269	tristate
270
271endmenu
272
273menu "Public-key cryptography"
274
275config CRYPTO_RSA
276	tristate "RSA (Rivest-Shamir-Adleman)"
277	select CRYPTO_AKCIPHER
278	select CRYPTO_MANAGER
279	select CRYPTO_SIG
280	select MPILIB
281	select ASN1
282	help
283	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
284
285config CRYPTO_DH
286	tristate "DH (Diffie-Hellman)"
287	select CRYPTO_KPP
288	select MPILIB
289	help
290	  DH (Diffie-Hellman) key exchange algorithm
291
292config CRYPTO_DH_RFC7919_GROUPS
293	bool "RFC 7919 FFDHE groups"
294	depends on CRYPTO_DH
295	help
296	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
297	  defined in RFC7919.
298
299	  Support these finite-field groups in DH key exchanges:
300	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
301
302	  If unsure, say N.
303
304config CRYPTO_ECC
305	tristate
306
307config CRYPTO_ECDH
308	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
309	select CRYPTO_ECC
310	select CRYPTO_KPP
311	help
312	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
313	  using curves P-192, P-256, and P-384 (FIPS 186)
314
315config CRYPTO_ECDSA
316	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
317	select CRYPTO_ECC
318	select CRYPTO_SIG
319	select ASN1
320	help
321	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
322	  ISO/IEC 14888-3)
323	  using curves P-192, P-256, P-384 and P-521
324
325	  Only signature verification is implemented.
326
327config CRYPTO_ECRDSA
328	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
329	select CRYPTO_ECC
330	select CRYPTO_SIG
331	select CRYPTO_STREEBOG
332	select OID_REGISTRY
333	select ASN1
334	help
335	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
336	  RFC 7091, ISO/IEC 14888-3)
337
338	  One of the Russian cryptographic standard algorithms (called GOST
339	  algorithms). Only signature verification is implemented.
340
341config CRYPTO_MLDSA
342	tristate "ML-DSA (Module-Lattice-Based Digital Signature Algorithm)"
343	select CRYPTO_SIG
344	select CRYPTO_LIB_MLDSA
345	help
346	  ML-DSA (Module-Lattice-Based Digital Signature Algorithm) (FIPS-204).
347
348	  Only signature verification is implemented.
349
350endmenu
351
352menu "Block ciphers"
353
354config CRYPTO_AES
355	tristate "AES (Advanced Encryption Standard)"
356	select CRYPTO_ALGAPI
357	select CRYPTO_LIB_AES
358	help
359	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
360
361	  Rijndael appears to be consistently a very good performer in
362	  both hardware and software across a wide range of computing
363	  environments regardless of its use in feedback or non-feedback
364	  modes. Its key setup time is excellent, and its key agility is
365	  good. Rijndael's very low memory requirements make it very well
366	  suited for restricted-space environments, in which it also
367	  demonstrates excellent performance. Rijndael's operations are
368	  among the easiest to defend against power and timing attacks.
369
370	  The AES specifies three key sizes: 128, 192 and 256 bits
371
372config CRYPTO_ANUBIS
373	tristate "Anubis"
374	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
375	select CRYPTO_ALGAPI
376	help
377	  Anubis cipher algorithm
378
379	  Anubis is a variable key length cipher which can use keys from
380	  128 bits to 320 bits in length.  It was evaluated as a entrant
381	  in the NESSIE competition.
382
383	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
384	  for further information.
385
386config CRYPTO_ARIA
387	tristate "ARIA"
388	select CRYPTO_ALGAPI
389	help
390	  ARIA cipher algorithm (RFC5794)
391
392	  ARIA is a standard encryption algorithm of the Republic of Korea.
393	  The ARIA specifies three key sizes and rounds.
394	  128-bit: 12 rounds.
395	  192-bit: 14 rounds.
396	  256-bit: 16 rounds.
397
398	  See:
399	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
400
401config CRYPTO_BLOWFISH
402	tristate "Blowfish"
403	select CRYPTO_ALGAPI
404	select CRYPTO_BLOWFISH_COMMON
405	help
406	  Blowfish cipher algorithm, by Bruce Schneier
407
408	  This is a variable key length cipher which can use keys from 32
409	  bits to 448 bits in length.  It's fast, simple and specifically
410	  designed for use on "large microprocessors".
411
412	  See https://www.schneier.com/blowfish.html for further information.
413
414config CRYPTO_BLOWFISH_COMMON
415	tristate
416	help
417	  Common parts of the Blowfish cipher algorithm shared by the
418	  generic c and the assembler implementations.
419
420config CRYPTO_CAMELLIA
421	tristate "Camellia"
422	select CRYPTO_ALGAPI
423	help
424	  Camellia cipher algorithms (ISO/IEC 18033-3)
425
426	  Camellia is a symmetric key block cipher developed jointly
427	  at NTT and Mitsubishi Electric Corporation.
428
429	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
430
431	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
432
433config CRYPTO_CAST_COMMON
434	tristate
435	help
436	  Common parts of the CAST cipher algorithms shared by the
437	  generic c and the assembler implementations.
438
439config CRYPTO_CAST5
440	tristate "CAST5 (CAST-128)"
441	select CRYPTO_ALGAPI
442	select CRYPTO_CAST_COMMON
443	help
444	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
445
446config CRYPTO_CAST6
447	tristate "CAST6 (CAST-256)"
448	select CRYPTO_ALGAPI
449	select CRYPTO_CAST_COMMON
450	help
451	  CAST6 (CAST-256) encryption algorithm (RFC2612)
452
453config CRYPTO_DES
454	tristate "DES and Triple DES EDE"
455	select CRYPTO_ALGAPI
456	select CRYPTO_LIB_DES
457	help
458	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
459	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
460	  cipher algorithms
461
462config CRYPTO_FCRYPT
463	tristate "FCrypt"
464	select CRYPTO_ALGAPI
465	select CRYPTO_SKCIPHER
466	help
467	  FCrypt algorithm used by RxRPC
468
469	  See https://ota.polyonymo.us/fcrypt-paper.txt
470
471config CRYPTO_KHAZAD
472	tristate "Khazad"
473	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
474	select CRYPTO_ALGAPI
475	help
476	  Khazad cipher algorithm
477
478	  Khazad was a finalist in the initial NESSIE competition.  It is
479	  an algorithm optimized for 64-bit processors with good performance
480	  on 32-bit processors.  Khazad uses an 128 bit key size.
481
482	  See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
483	  for further information.
484
485config CRYPTO_SEED
486	tristate "SEED"
487	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
488	select CRYPTO_ALGAPI
489	help
490	  SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
491
492	  SEED is a 128-bit symmetric key block cipher that has been
493	  developed by KISA (Korea Information Security Agency) as a
494	  national standard encryption algorithm of the Republic of Korea.
495	  It is a 16 round block cipher with the key size of 128 bit.
496
497	  See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
498	  for further information.
499
500config CRYPTO_SERPENT
501	tristate "Serpent"
502	select CRYPTO_ALGAPI
503	help
504	  Serpent cipher algorithm, by Anderson, Biham & Knudsen
505
506	  Keys are allowed to be from 0 to 256 bits in length, in steps
507	  of 8 bits.
508
509	  See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
510
511config CRYPTO_SM4
512	tristate
513
514config CRYPTO_SM4_GENERIC
515	tristate "SM4 (ShangMi 4)"
516	select CRYPTO_ALGAPI
517	select CRYPTO_SM4
518	help
519	  SM4 cipher algorithms (OSCCA GB/T 32907-2016,
520	  ISO/IEC 18033-3:2010/Amd 1:2021)
521
522	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
523	  Organization of State Commercial Administration of China (OSCCA)
524	  as an authorized cryptographic algorithms for the use within China.
525
526	  SMS4 was originally created for use in protecting wireless
527	  networks, and is mandated in the Chinese National Standard for
528	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
529	  (GB.15629.11-2003).
530
531	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
532	  standardized through TC 260 of the Standardization Administration
533	  of the People's Republic of China (SAC).
534
535	  The input, output, and key of SMS4 are each 128 bits.
536
537	  See https://eprint.iacr.org/2008/329.pdf for further information.
538
539	  If unsure, say N.
540
541config CRYPTO_TEA
542	tristate "TEA, XTEA and XETA"
543	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
544	select CRYPTO_ALGAPI
545	help
546	  TEA (Tiny Encryption Algorithm) cipher algorithms
547
548	  Tiny Encryption Algorithm is a simple cipher that uses
549	  many rounds for security.  It is very fast and uses
550	  little memory.
551
552	  Xtendend Tiny Encryption Algorithm is a modification to
553	  the TEA algorithm to address a potential key weakness
554	  in the TEA algorithm.
555
556	  Xtendend Encryption Tiny Algorithm is a mis-implementation
557	  of the XTEA algorithm for compatibility purposes.
558
559config CRYPTO_TWOFISH
560	tristate "Twofish"
561	select CRYPTO_ALGAPI
562	select CRYPTO_TWOFISH_COMMON
563	help
564	  Twofish cipher algorithm
565
566	  Twofish was submitted as an AES (Advanced Encryption Standard)
567	  candidate cipher by researchers at CounterPane Systems.  It is a
568	  16 round block cipher supporting key sizes of 128, 192, and 256
569	  bits.
570
571	  See https://www.schneier.com/twofish.html for further information.
572
573config CRYPTO_TWOFISH_COMMON
574	tristate
575	help
576	  Common parts of the Twofish cipher algorithm shared by the
577	  generic c and the assembler implementations.
578
579endmenu
580
581menu "Length-preserving ciphers and modes"
582
583config CRYPTO_ADIANTUM
584	tristate "Adiantum"
585	select CRYPTO_CHACHA20
586	select CRYPTO_LIB_NH
587	select CRYPTO_LIB_POLY1305
588	select CRYPTO_LIB_POLY1305_GENERIC
589	select CRYPTO_MANAGER
590	help
591	  Adiantum tweakable, length-preserving encryption mode
592
593	  Designed for fast and secure disk encryption, especially on
594	  CPUs without dedicated crypto instructions.  It encrypts
595	  each sector using the XChaCha12 stream cipher, two passes of
596	  an ε-almost-∆-universal hash function, and an invocation of
597	  the AES-256 block cipher on a single 16-byte block.  On CPUs
598	  without AES instructions, Adiantum is much faster than
599	  AES-XTS.
600
601	  Adiantum's security is provably reducible to that of its
602	  underlying stream and block ciphers, subject to a security
603	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
604	  mode, so it actually provides an even stronger notion of
605	  security than XTS, subject to the security bound.
606
607	  If unsure, say N.
608
609config CRYPTO_ARC4
610	tristate "ARC4 (Alleged Rivest Cipher 4)"
611	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
612	select CRYPTO_SKCIPHER
613	select CRYPTO_LIB_ARC4
614	help
615	  ARC4 cipher algorithm
616
617	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
618	  bits in length.  This algorithm is required for driver-based
619	  WEP, but it should not be for other purposes because of the
620	  weakness of the algorithm.
621
622config CRYPTO_CHACHA20
623	tristate "ChaCha"
624	select CRYPTO_LIB_CHACHA
625	select CRYPTO_SKCIPHER
626	help
627	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
628
629	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
630	  Bernstein and further specified in RFC7539 for use in IETF protocols.
631	  This is the portable C implementation of ChaCha20.  See
632	  https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
633
634	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
635	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
636	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
637	  while provably retaining ChaCha20's security.  See
638	  https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
639
640	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
641	  reduced security margin but increased performance.  It can be needed
642	  in some performance-sensitive scenarios.
643
644config CRYPTO_CBC
645	tristate "CBC (Cipher Block Chaining)"
646	select CRYPTO_SKCIPHER
647	select CRYPTO_MANAGER
648	help
649	  CBC (Cipher Block Chaining) mode (NIST SP800-38A)
650
651	  This block cipher mode is required for IPSec ESP (XFRM_ESP).
652
653config CRYPTO_CTR
654	tristate "CTR (Counter)"
655	select CRYPTO_SKCIPHER
656	select CRYPTO_MANAGER
657	help
658	  CTR (Counter) mode (NIST SP800-38A)
659
660config CRYPTO_CTS
661	tristate "CTS (Cipher Text Stealing)"
662	select CRYPTO_SKCIPHER
663	select CRYPTO_MANAGER
664	help
665	  CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
666	  Addendum to SP800-38A (October 2010))
667
668	  This mode is required for Kerberos gss mechanism support
669	  for AES encryption.
670
671config CRYPTO_ECB
672	tristate "ECB (Electronic Codebook)"
673	select CRYPTO_SKCIPHER2
674	select CRYPTO_MANAGER
675	help
676	  ECB (Electronic Codebook) mode (NIST SP800-38A)
677
678config CRYPTO_HCTR2
679	tristate "HCTR2"
680	select CRYPTO_XCTR
681	select CRYPTO_LIB_POLYVAL
682	select CRYPTO_MANAGER
683	help
684	  HCTR2 length-preserving encryption mode
685
686	  A mode for storage encryption that is efficient on processors with
687	  instructions to accelerate AES and carryless multiplication, e.g.
688	  x86 processors with AES-NI and CLMUL, and ARM processors with the
689	  ARMv8 crypto extensions.
690
691	  See https://eprint.iacr.org/2021/1441
692
693config CRYPTO_LRW
694	tristate "LRW (Liskov Rivest Wagner)"
695	select CRYPTO_LIB_GF128MUL
696	select CRYPTO_SKCIPHER
697	select CRYPTO_MANAGER
698	select CRYPTO_ECB
699	help
700	  LRW (Liskov Rivest Wagner) mode
701
702	  A tweakable, non malleable, non movable
703	  narrow block cipher mode for dm-crypt.  Use it with cipher
704	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
705	  The first 128, 192 or 256 bits in the key are used for AES and the
706	  rest is used to tie each cipher block to its logical position.
707
708	  See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
709
710config CRYPTO_PCBC
711	tristate "PCBC (Propagating Cipher Block Chaining)"
712	select CRYPTO_SKCIPHER
713	select CRYPTO_MANAGER
714	help
715	  PCBC (Propagating Cipher Block Chaining) mode
716
717	  This block cipher mode is required for RxRPC.
718
719config CRYPTO_XCTR
720	tristate
721	select CRYPTO_SKCIPHER
722	select CRYPTO_MANAGER
723	help
724	  XCTR (XOR Counter) mode for HCTR2
725
726	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
727	  addition rather than big-endian arithmetic.
728
729	  XCTR mode is used to implement HCTR2.
730
731config CRYPTO_XTS
732	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
733	select CRYPTO_SKCIPHER
734	select CRYPTO_MANAGER
735	select CRYPTO_ECB
736	help
737	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
738	  and IEEE 1619)
739
740	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
741	  implementation currently can't handle a sectorsize which is not a
742	  multiple of 16 bytes.
743
744endmenu
745
746menu "AEAD (authenticated encryption with associated data) ciphers"
747
748config CRYPTO_AEGIS128
749	tristate "AEGIS-128"
750	select CRYPTO_AEAD
751	select CRYPTO_LIB_AES  # for AES S-box tables
752	help
753	  AEGIS-128 AEAD algorithm
754
755config CRYPTO_AEGIS128_SIMD
756	bool "AEGIS-128 (arm NEON, arm64 NEON)"
757	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
758	default y
759	help
760	  AEGIS-128 AEAD algorithm
761
762	  Architecture: arm or arm64 using:
763	  - NEON (Advanced SIMD) extension
764
765config CRYPTO_CHACHA20POLY1305
766	tristate "ChaCha20-Poly1305"
767	select CRYPTO_CHACHA20
768	select CRYPTO_AEAD
769	select CRYPTO_LIB_POLY1305
770	select CRYPTO_MANAGER
771	help
772	  ChaCha20 stream cipher and Poly1305 authenticator combined
773	  mode (RFC8439)
774
775config CRYPTO_CCM
776	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
777	select CRYPTO_CTR
778	select CRYPTO_HASH
779	select CRYPTO_AEAD
780	select CRYPTO_MANAGER
781	help
782	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
783	  authenticated encryption mode (NIST SP800-38C)
784
785config CRYPTO_GCM
786	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
787	select CRYPTO_CTR
788	select CRYPTO_AEAD
789	select CRYPTO_GHASH
790	select CRYPTO_MANAGER
791	help
792	  GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
793	  (GCM Message Authentication Code) (NIST SP800-38D)
794
795	  This is required for IPSec ESP (XFRM_ESP).
796
797config CRYPTO_GENIV
798	tristate
799	select CRYPTO_AEAD
800	select CRYPTO_MANAGER
801
802config CRYPTO_SEQIV
803	tristate "Sequence Number IV Generator"
804	select CRYPTO_GENIV
805	help
806	  Sequence Number IV generator
807
808	  This IV generator generates an IV based on a sequence number by
809	  xoring it with a salt.  This algorithm is mainly useful for CTR.
810
811	  This is required for IPsec ESP (XFRM_ESP).
812
813config CRYPTO_ECHAINIV
814	tristate "Encrypted Chain IV Generator"
815	select CRYPTO_GENIV
816	help
817	  Encrypted Chain IV generator
818
819	  This IV generator generates an IV based on the encryption of
820	  a sequence number xored with a salt.  This is the default
821	  algorithm for CBC.
822
823config CRYPTO_ESSIV
824	tristate "Encrypted Salt-Sector IV Generator"
825	select CRYPTO_AUTHENC
826	help
827	  Encrypted Salt-Sector IV generator
828
829	  This IV generator is used in some cases by fscrypt and/or
830	  dm-crypt. It uses the hash of the block encryption key as the
831	  symmetric key for a block encryption pass applied to the input
832	  IV, making low entropy IV sources more suitable for block
833	  encryption.
834
835	  This driver implements a crypto API template that can be
836	  instantiated either as an skcipher or as an AEAD (depending on the
837	  type of the first template argument), and which defers encryption
838	  and decryption requests to the encapsulated cipher after applying
839	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
840	  that the keys are presented in the same format used by the authenc
841	  template, and that the IV appears at the end of the authenticated
842	  associated data (AAD) region (which is how dm-crypt uses it.)
843
844	  Note that the use of ESSIV is not recommended for new deployments,
845	  and so this only needs to be enabled when interoperability with
846	  existing encrypted volumes of filesystems is required, or when
847	  building for a particular system that requires it (e.g., when
848	  the SoC in question has accelerated CBC but not XTS, making CBC
849	  combined with ESSIV the only feasible mode for h/w accelerated
850	  block encryption)
851
852endmenu
853
854menu "Hashes, digests, and MACs"
855
856config CRYPTO_BLAKE2B
857	tristate "BLAKE2b"
858	select CRYPTO_HASH
859	select CRYPTO_LIB_BLAKE2B
860	help
861	  BLAKE2b cryptographic hash function (RFC 7693)
862
863	  BLAKE2b is optimized for 64-bit platforms and can produce digests
864	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
865
866	  This module provides the following algorithms:
867	  - blake2b-160
868	  - blake2b-256
869	  - blake2b-384
870	  - blake2b-512
871
872	  Used by the btrfs filesystem.
873
874	  See https://blake2.net for further information.
875
876config CRYPTO_CMAC
877	tristate "CMAC (Cipher-based MAC)"
878	select CRYPTO_HASH
879	select CRYPTO_MANAGER
880	help
881	  CMAC (Cipher-based Message Authentication Code) authentication
882	  mode (NIST SP800-38B and IETF RFC4493)
883
884config CRYPTO_GHASH
885	tristate "GHASH"
886	select CRYPTO_HASH
887	select CRYPTO_LIB_GF128MUL
888	help
889	  GCM GHASH function (NIST SP800-38D)
890
891config CRYPTO_HMAC
892	tristate "HMAC (Keyed-Hash MAC)"
893	select CRYPTO_HASH
894	select CRYPTO_MANAGER
895	help
896	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
897	  RFC2104)
898
899	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
900
901config CRYPTO_MD4
902	tristate "MD4"
903	select CRYPTO_HASH
904	help
905	  MD4 message digest algorithm (RFC1320)
906
907config CRYPTO_MD5
908	tristate "MD5"
909	select CRYPTO_HASH
910	select CRYPTO_LIB_MD5
911	help
912	  MD5 message digest algorithm (RFC1321), including HMAC support.
913
914config CRYPTO_MICHAEL_MIC
915	tristate "Michael MIC"
916	select CRYPTO_HASH
917	help
918	  Michael MIC (Message Integrity Code) (IEEE 802.11i)
919
920	  Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
921	  known as WPA (Wif-Fi Protected Access).
922
923	  This algorithm is required for TKIP, but it should not be used for
924	  other purposes because of the weakness of the algorithm.
925
926config CRYPTO_RMD160
927	tristate "RIPEMD-160"
928	select CRYPTO_HASH
929	help
930	  RIPEMD-160 hash function (ISO/IEC 10118-3)
931
932	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
933	  to be used as a secure replacement for the 128-bit hash functions
934	  MD4, MD5 and its predecessor RIPEMD
935	  (not to be confused with RIPEMD-128).
936
937	  Its speed is comparable to SHA-1 and there are no known attacks
938	  against RIPEMD-160.
939
940	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
941	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
942	  for further information.
943
944config CRYPTO_SHA1
945	tristate "SHA-1"
946	select CRYPTO_HASH
947	select CRYPTO_LIB_SHA1
948	help
949	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including
950	  HMAC support.
951
952config CRYPTO_SHA256
953	tristate "SHA-224 and SHA-256"
954	select CRYPTO_HASH
955	select CRYPTO_LIB_SHA256
956	help
957	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC
958	  10118-3), including HMAC support.
959
960	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
961	  Used by the btrfs filesystem, Ceph, NFS, and SMB.
962
963config CRYPTO_SHA512
964	tristate "SHA-384 and SHA-512"
965	select CRYPTO_HASH
966	select CRYPTO_LIB_SHA512
967	help
968	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC
969	  10118-3), including HMAC support.
970
971config CRYPTO_SHA3
972	tristate "SHA-3"
973	select CRYPTO_HASH
974	select CRYPTO_LIB_SHA3
975	help
976	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
977
978config CRYPTO_SM3_GENERIC
979	tristate "SM3 (ShangMi 3)"
980	select CRYPTO_HASH
981	select CRYPTO_LIB_SM3
982	help
983	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
984
985	  This is part of the Chinese Commercial Cryptography suite.
986
987	  References:
988	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
989	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
990
991config CRYPTO_STREEBOG
992	tristate "Streebog"
993	select CRYPTO_HASH
994	help
995	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
996
997	  This is one of the Russian cryptographic standard algorithms (called
998	  GOST algorithms). This setting enables two hash algorithms with
999	  256 and 512 bits output.
1000
1001	  References:
1002	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1003	  https://tools.ietf.org/html/rfc6986
1004
1005config CRYPTO_WP512
1006	tristate "Whirlpool"
1007	select CRYPTO_HASH
1008	help
1009	  Whirlpool hash function (ISO/IEC 10118-3)
1010
1011	  512, 384 and 256-bit hashes.
1012
1013	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
1014
1015	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
1016	  for further information.
1017
1018config CRYPTO_XCBC
1019	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1020	select CRYPTO_HASH
1021	select CRYPTO_MANAGER
1022	help
1023	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
1024	  Code) (RFC3566)
1025
1026config CRYPTO_XXHASH
1027	tristate "xxHash"
1028	select CRYPTO_HASH
1029	select XXHASH
1030	help
1031	  xxHash non-cryptographic hash algorithm
1032
1033	  Extremely fast, working at speeds close to RAM limits.
1034
1035	  Used by the btrfs filesystem.
1036
1037endmenu
1038
1039menu "CRCs (cyclic redundancy checks)"
1040
1041config CRYPTO_CRC32C
1042	tristate "CRC32c"
1043	select CRYPTO_HASH
1044	select CRC32
1045	help
1046	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1047
1048	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1049	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1050	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1051	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1052	  iSCSI.
1053
1054	  Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
1055
1056config CRYPTO_CRC32
1057	tristate "CRC32"
1058	select CRYPTO_HASH
1059	select CRC32
1060	help
1061	  CRC32 CRC algorithm (IEEE 802.3)
1062
1063	  Used by RoCEv2 and f2fs.
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