xref: /linux/lib/crypto/Kconfig (revision d6b6aac0cdb4b4f81cccc531ed76211d56c17444)
1# SPDX-License-Identifier: GPL-2.0
2
3menu "Crypto library routines"
4
5config CRYPTO_HASH_INFO
6	bool
7
8config CRYPTO_LIB_UTILS
9	tristate
10
11config CRYPTO_LIB_AES
12	tristate
13
14config CRYPTO_LIB_AESCFB
15	tristate
16	select CRYPTO_LIB_AES
17	select CRYPTO_LIB_UTILS
18
19config CRYPTO_LIB_AESGCM
20	tristate
21	select CRYPTO_LIB_AES
22	select CRYPTO_LIB_GF128MUL
23	select CRYPTO_LIB_UTILS
24
25config CRYPTO_LIB_ARC4
26	tristate
27
28config CRYPTO_LIB_GF128MUL
29	tristate
30
31config CRYPTO_ARCH_HAVE_LIB_BLAKE2S
32	bool
33	help
34	  Declares whether the architecture provides an arch-specific
35	  accelerated implementation of the Blake2s library interface,
36	  either builtin or as a module.
37
38config CRYPTO_LIB_BLAKE2S_GENERIC
39	def_bool !CRYPTO_ARCH_HAVE_LIB_BLAKE2S
40	help
41	  This symbol can be depended upon by arch implementations of the
42	  Blake2s library interface that require the generic code as a
43	  fallback, e.g., for SIMD implementations. If no arch specific
44	  implementation is enabled, this implementation serves the users
45	  of CRYPTO_LIB_BLAKE2S.
46
47config CRYPTO_ARCH_HAVE_LIB_CHACHA
48	bool
49	help
50	  Declares whether the architecture provides an arch-specific
51	  accelerated implementation of the ChaCha library interface,
52	  either builtin or as a module.
53
54config CRYPTO_LIB_CHACHA_GENERIC
55	tristate
56	default CRYPTO_LIB_CHACHA if !CRYPTO_ARCH_HAVE_LIB_CHACHA
57	select CRYPTO_LIB_UTILS
58	help
59	  This symbol can be selected by arch implementations of the ChaCha
60	  library interface that require the generic code as a fallback, e.g.,
61	  for SIMD implementations. If no arch specific implementation is
62	  enabled, this implementation serves the users of CRYPTO_LIB_CHACHA.
63
64config CRYPTO_LIB_CHACHA
65	tristate
66	help
67	  Enable the ChaCha library interface. This interface may be fulfilled
68	  by either the generic implementation or an arch-specific one, if one
69	  is available and enabled.
70
71config CRYPTO_ARCH_HAVE_LIB_CURVE25519
72	bool
73	help
74	  Declares whether the architecture provides an arch-specific
75	  accelerated implementation of the Curve25519 library interface,
76	  either builtin or as a module.
77
78config CRYPTO_LIB_CURVE25519_GENERIC
79	tristate
80	select CRYPTO_LIB_UTILS
81	help
82	  This symbol can be depended upon by arch implementations of the
83	  Curve25519 library interface that require the generic code as a
84	  fallback, e.g., for SIMD implementations. If no arch specific
85	  implementation is enabled, this implementation serves the users
86	  of CRYPTO_LIB_CURVE25519.
87
88config CRYPTO_LIB_CURVE25519_INTERNAL
89	tristate
90	select CRYPTO_LIB_CURVE25519_GENERIC if CRYPTO_ARCH_HAVE_LIB_CURVE25519=n
91
92config CRYPTO_LIB_CURVE25519
93	tristate
94	select CRYPTO
95	select CRYPTO_LIB_CURVE25519_INTERNAL
96	help
97	  Enable the Curve25519 library interface. This interface may be
98	  fulfilled by either the generic implementation or an arch-specific
99	  one, if one is available and enabled.
100
101config CRYPTO_LIB_DES
102	tristate
103
104config CRYPTO_LIB_MD5
105	tristate
106	help
107	  The MD5 and HMAC-MD5 library functions.  Select this if your module
108	  uses any of the functions from <crypto/md5.h>.
109
110config CRYPTO_LIB_MD5_ARCH
111	bool
112	depends on CRYPTO_LIB_MD5 && !UML
113	default y if MIPS && CPU_CAVIUM_OCTEON
114	default y if PPC
115	default y if SPARC64
116
117config CRYPTO_LIB_POLY1305_RSIZE
118	int
119	default 2 if MIPS
120	default 11 if X86_64
121	default 9 if ARM || ARM64
122	default 1
123
124config CRYPTO_ARCH_HAVE_LIB_POLY1305
125	bool
126	help
127	  Declares whether the architecture provides an arch-specific
128	  accelerated implementation of the Poly1305 library interface,
129	  either builtin or as a module.
130
131config CRYPTO_LIB_POLY1305_GENERIC
132	tristate
133	default CRYPTO_LIB_POLY1305 if !CRYPTO_ARCH_HAVE_LIB_POLY1305
134	help
135	  This symbol can be selected by arch implementations of the Poly1305
136	  library interface that require the generic code as a fallback, e.g.,
137	  for SIMD implementations. If no arch specific implementation is
138	  enabled, this implementation serves the users of CRYPTO_LIB_POLY1305.
139
140config CRYPTO_LIB_POLY1305
141	tristate
142	help
143	  Enable the Poly1305 library interface. This interface may be fulfilled
144	  by either the generic implementation or an arch-specific one, if one
145	  is available and enabled.
146
147config CRYPTO_LIB_CHACHA20POLY1305
148	tristate
149	select CRYPTO_LIB_CHACHA
150	select CRYPTO_LIB_POLY1305
151	select CRYPTO_LIB_UTILS
152
153config CRYPTO_LIB_SHA1
154	tristate
155	help
156	  The SHA-1 and HMAC-SHA1 library functions.  Select this if your module
157	  uses any of the functions from <crypto/sha1.h>.
158
159config CRYPTO_LIB_SHA1_ARCH
160	bool
161	depends on CRYPTO_LIB_SHA1 && !UML
162	default y if ARM
163	default y if ARM64 && KERNEL_MODE_NEON
164	default y if MIPS && CPU_CAVIUM_OCTEON
165	default y if PPC
166	default y if S390
167	default y if SPARC64
168	default y if X86_64
169
170config CRYPTO_LIB_SHA256
171	tristate
172	help
173	  The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions.
174	  Select this if your module uses any of these functions from
175	  <crypto/sha2.h>.
176
177config CRYPTO_LIB_SHA256_ARCH
178	bool
179	depends on CRYPTO_LIB_SHA256 && !UML
180	default y if ARM && !CPU_V7M
181	default y if ARM64
182	default y if MIPS && CPU_CAVIUM_OCTEON
183	default y if PPC && SPE
184	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
185	default y if S390
186	default y if SPARC64
187	default y if X86_64
188
189config CRYPTO_LIB_SHA512
190	tristate
191	help
192	  The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
193	  Select this if your module uses any of these functions from
194	  <crypto/sha2.h>.
195
196config CRYPTO_LIB_SHA512_ARCH
197	bool
198	depends on CRYPTO_LIB_SHA512 && !UML
199	default y if ARM && !CPU_V7M
200	default y if ARM64
201	default y if MIPS && CPU_CAVIUM_OCTEON
202	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
203	default y if S390
204	default y if SPARC64
205	default y if X86_64
206
207config CRYPTO_LIB_SM3
208	tristate
209
210source "lib/crypto/tests/Kconfig"
211
212if !KMSAN # avoid false positives from assembly
213if ARM
214source "lib/crypto/arm/Kconfig"
215endif
216if ARM64
217source "lib/crypto/arm64/Kconfig"
218endif
219if MIPS
220source "lib/crypto/mips/Kconfig"
221endif
222if PPC
223source "lib/crypto/powerpc/Kconfig"
224endif
225if RISCV
226source "lib/crypto/riscv/Kconfig"
227endif
228if S390
229source "lib/crypto/s390/Kconfig"
230endif
231if X86
232source "lib/crypto/x86/Kconfig"
233endif
234endif
235
236endmenu
237