xref: /linux/lib/crypto/Kconfig (revision 32b7144f806e231a3fb619d4ddc5a6bffb731715)
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_POLY1305_RSIZE
105	int
106	default 2 if MIPS
107	default 11 if X86_64
108	default 9 if ARM || ARM64
109	default 1
110
111config CRYPTO_ARCH_HAVE_LIB_POLY1305
112	bool
113	help
114	  Declares whether the architecture provides an arch-specific
115	  accelerated implementation of the Poly1305 library interface,
116	  either builtin or as a module.
117
118config CRYPTO_LIB_POLY1305_GENERIC
119	tristate
120	default CRYPTO_LIB_POLY1305 if !CRYPTO_ARCH_HAVE_LIB_POLY1305
121	help
122	  This symbol can be selected by arch implementations of the Poly1305
123	  library interface that require the generic code as a fallback, e.g.,
124	  for SIMD implementations. If no arch specific implementation is
125	  enabled, this implementation serves the users of CRYPTO_LIB_POLY1305.
126
127config CRYPTO_LIB_POLY1305
128	tristate
129	help
130	  Enable the Poly1305 library interface. This interface may be fulfilled
131	  by either the generic implementation or an arch-specific one, if one
132	  is available and enabled.
133
134config CRYPTO_LIB_CHACHA20POLY1305
135	tristate
136	select CRYPTO_LIB_CHACHA
137	select CRYPTO_LIB_POLY1305
138	select CRYPTO_LIB_UTILS
139
140config CRYPTO_LIB_SHA1
141	tristate
142	help
143	  The SHA-1 and HMAC-SHA1 library functions.  Select this if your module
144	  uses any of the functions from <crypto/sha1.h>.
145
146config CRYPTO_LIB_SHA1_ARCH
147	bool
148	depends on CRYPTO_LIB_SHA1 && !UML
149	default y if ARM
150	default y if ARM64 && KERNEL_MODE_NEON
151	default y if MIPS && CPU_CAVIUM_OCTEON
152	default y if PPC
153	default y if S390
154	default y if SPARC64
155	default y if X86_64
156
157config CRYPTO_LIB_SHA256
158	tristate
159	help
160	  The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions.
161	  Select this if your module uses any of these functions from
162	  <crypto/sha2.h>.
163
164config CRYPTO_LIB_SHA256_ARCH
165	bool
166	depends on CRYPTO_LIB_SHA256 && !UML
167	default y if ARM && !CPU_V7M
168	default y if ARM64
169	default y if MIPS && CPU_CAVIUM_OCTEON
170	default y if PPC && SPE
171	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
172	default y if S390
173	default y if SPARC64
174	default y if X86_64
175
176config CRYPTO_LIB_SHA512
177	tristate
178	help
179	  The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
180	  Select this if your module uses any of these functions from
181	  <crypto/sha2.h>.
182
183config CRYPTO_LIB_SHA512_ARCH
184	bool
185	depends on CRYPTO_LIB_SHA512 && !UML
186	default y if ARM && !CPU_V7M
187	default y if ARM64
188	default y if MIPS && CPU_CAVIUM_OCTEON
189	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
190	default y if S390
191	default y if SPARC64
192	default y if X86_64
193
194config CRYPTO_LIB_SM3
195	tristate
196
197source "lib/crypto/tests/Kconfig"
198
199if !KMSAN # avoid false positives from assembly
200if ARM
201source "lib/crypto/arm/Kconfig"
202endif
203if ARM64
204source "lib/crypto/arm64/Kconfig"
205endif
206if MIPS
207source "lib/crypto/mips/Kconfig"
208endif
209if PPC
210source "lib/crypto/powerpc/Kconfig"
211endif
212if RISCV
213source "lib/crypto/riscv/Kconfig"
214endif
215if S390
216source "lib/crypto/s390/Kconfig"
217endif
218if X86
219source "lib/crypto/x86/Kconfig"
220endif
221endif
222
223endmenu
224