xref: /linux/lib/crypto/Kconfig (revision eec76ea5a7213c48529a46eed1b343e5cee3aaab)
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
143config CRYPTO_LIB_SHA256
144	tristate
145	help
146	  Enable the SHA-256 library interface. This interface may be fulfilled
147	  by either the generic implementation or an arch-specific one, if one
148	  is available and enabled.
149
150config CRYPTO_LIB_SHA256_ARCH
151	bool
152	depends on CRYPTO_LIB_SHA256 && !UML
153	default y if ARM && !CPU_V7M
154	default y if ARM64
155	default y if MIPS && CPU_CAVIUM_OCTEON
156	default y if PPC && SPE
157	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
158	default y if S390
159	default y if SPARC64
160	default y if X86_64
161
162config CRYPTO_LIB_SHA512
163	tristate
164	help
165	  The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
166	  Select this if your module uses any of these functions from
167	  <crypto/sha2.h>.
168
169config CRYPTO_LIB_SHA512_ARCH
170	bool
171	depends on CRYPTO_LIB_SHA512 && !UML
172	default y if ARM && !CPU_V7M
173	default y if ARM64
174	default y if MIPS && CPU_CAVIUM_OCTEON
175	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
176	default y if S390
177	default y if SPARC64
178	default y if X86_64
179
180config CRYPTO_LIB_SM3
181	tristate
182
183if !KMSAN # avoid false positives from assembly
184if ARM
185source "lib/crypto/arm/Kconfig"
186endif
187if ARM64
188source "lib/crypto/arm64/Kconfig"
189endif
190if MIPS
191source "lib/crypto/mips/Kconfig"
192endif
193if PPC
194source "lib/crypto/powerpc/Kconfig"
195endif
196if RISCV
197source "lib/crypto/riscv/Kconfig"
198endif
199if S390
200source "lib/crypto/s390/Kconfig"
201endif
202if X86
203source "lib/crypto/x86/Kconfig"
204endif
205endif
206
207endmenu
208