xref: /linux/lib/crypto/Kconfig (revision a1848f6e382145e0200843549f24f5af4b5c8136)
1746b2e02SArd Biesheuvel# SPDX-License-Identifier: GPL-2.0
2746b2e02SArd Biesheuvel
3e56e1898SJustin M. Forbesmenu "Crypto library routines"
4e56e1898SJustin M. Forbes
5aacb37f5SEric Biggersconfig CRYPTO_HASH_INFO
6aacb37f5SEric Biggers	bool
7aacb37f5SEric Biggers
87033b937SEric Biggersconfig CRYPTO_LIB_UTILS
97033b937SEric Biggers	tristate
107033b937SEric Biggers
11746b2e02SArd Biesheuvelconfig CRYPTO_LIB_AES
12746b2e02SArd Biesheuvel	tristate
13746b2e02SArd Biesheuvel
14f1354404SArd Biesheuvelconfig CRYPTO_LIB_AESCFB
15f1354404SArd Biesheuvel	tristate
16f1354404SArd Biesheuvel	select CRYPTO_LIB_AES
17f1354404SArd Biesheuvel	select CRYPTO_LIB_UTILS
18f1354404SArd Biesheuvel
19520af5daSArd Biesheuvelconfig CRYPTO_LIB_AESGCM
20520af5daSArd Biesheuvel	tristate
21520af5daSArd Biesheuvel	select CRYPTO_LIB_AES
22520af5daSArd Biesheuvel	select CRYPTO_LIB_GF128MUL
23520af5daSArd Biesheuvel	select CRYPTO_LIB_UTILS
24520af5daSArd Biesheuvel
25746b2e02SArd Biesheuvelconfig CRYPTO_LIB_ARC4
26746b2e02SArd Biesheuvel	tristate
27746b2e02SArd Biesheuvel
2861c581a4SArd Biesheuvelconfig CRYPTO_LIB_GF128MUL
2961c581a4SArd Biesheuvel	tristate
3061c581a4SArd Biesheuvel
3166d7fb94SJason A. Donenfeldconfig CRYPTO_ARCH_HAVE_LIB_BLAKE2S
326048fdccSJason A. Donenfeld	bool
3366d7fb94SJason A. Donenfeld	help
3466d7fb94SJason A. Donenfeld	  Declares whether the architecture provides an arch-specific
3566d7fb94SJason A. Donenfeld	  accelerated implementation of the Blake2s library interface,
3666d7fb94SJason A. Donenfeld	  either builtin or as a module.
3766d7fb94SJason A. Donenfeld
3866d7fb94SJason A. Donenfeldconfig CRYPTO_LIB_BLAKE2S_GENERIC
396048fdccSJason A. Donenfeld	def_bool !CRYPTO_ARCH_HAVE_LIB_BLAKE2S
4066d7fb94SJason A. Donenfeld	help
4166d7fb94SJason A. Donenfeld	  This symbol can be depended upon by arch implementations of the
4266d7fb94SJason A. Donenfeld	  Blake2s library interface that require the generic code as a
4366d7fb94SJason A. Donenfeld	  fallback, e.g., for SIMD implementations. If no arch specific
4466d7fb94SJason A. Donenfeld	  implementation is enabled, this implementation serves the users
4566d7fb94SJason A. Donenfeld	  of CRYPTO_LIB_BLAKE2S.
4666d7fb94SJason A. Donenfeld
475fb8ef25SArd Biesheuvelconfig CRYPTO_ARCH_HAVE_LIB_CHACHA
481047e21aSHerbert Xu	bool
495fb8ef25SArd Biesheuvel	help
505fb8ef25SArd Biesheuvel	  Declares whether the architecture provides an arch-specific
515fb8ef25SArd Biesheuvel	  accelerated implementation of the ChaCha library interface,
525fb8ef25SArd Biesheuvel	  either builtin or as a module.
535fb8ef25SArd Biesheuvel
545fb8ef25SArd Biesheuvelconfig CRYPTO_LIB_CHACHA_GENERIC
555fb8ef25SArd Biesheuvel	tristate
56879f4754SEric Biggers	default CRYPTO_LIB_CHACHA if !CRYPTO_ARCH_HAVE_LIB_CHACHA
576e78ad0bSEric Biggers	select CRYPTO_LIB_UTILS
585fb8ef25SArd Biesheuvel	help
59879f4754SEric Biggers	  This symbol can be selected by arch implementations of the ChaCha
60879f4754SEric Biggers	  library interface that require the generic code as a fallback, e.g.,
61879f4754SEric Biggers	  for SIMD implementations. If no arch specific implementation is
62879f4754SEric Biggers	  enabled, this implementation serves the users of CRYPTO_LIB_CHACHA.
6317ec3e71SHerbert Xu
645fb8ef25SArd Biesheuvelconfig CRYPTO_LIB_CHACHA
65edc8e80bSArnd Bergmann	tristate
665fb8ef25SArd Biesheuvel	help
675fb8ef25SArd Biesheuvel	  Enable the ChaCha library interface. This interface may be fulfilled
685fb8ef25SArd Biesheuvel	  by either the generic implementation or an arch-specific one, if one
695fb8ef25SArd Biesheuvel	  is available and enabled.
705fb8ef25SArd Biesheuvel
710ed42a6fSJason A. Donenfeldconfig CRYPTO_ARCH_HAVE_LIB_CURVE25519
721047e21aSHerbert Xu	bool
730ed42a6fSJason A. Donenfeld	help
740ed42a6fSJason A. Donenfeld	  Declares whether the architecture provides an arch-specific
750ed42a6fSJason A. Donenfeld	  accelerated implementation of the Curve25519 library interface,
760ed42a6fSJason A. Donenfeld	  either builtin or as a module.
770ed42a6fSJason A. Donenfeld
780ed42a6fSJason A. Donenfeldconfig CRYPTO_LIB_CURVE25519_GENERIC
790ed42a6fSJason A. Donenfeld	tristate
8017ec3e71SHerbert Xu	select CRYPTO_LIB_UTILS
810ed42a6fSJason A. Donenfeld	help
820ed42a6fSJason A. Donenfeld	  This symbol can be depended upon by arch implementations of the
830ed42a6fSJason A. Donenfeld	  Curve25519 library interface that require the generic code as a
840ed42a6fSJason A. Donenfeld	  fallback, e.g., for SIMD implementations. If no arch specific
850ed42a6fSJason A. Donenfeld	  implementation is enabled, this implementation serves the users
860ed42a6fSJason A. Donenfeld	  of CRYPTO_LIB_CURVE25519.
870ed42a6fSJason A. Donenfeld
8817ec3e71SHerbert Xuconfig CRYPTO_LIB_CURVE25519_INTERNAL
8917ec3e71SHerbert Xu	tristate
9017ec3e71SHerbert Xu	select CRYPTO_LIB_CURVE25519_GENERIC if CRYPTO_ARCH_HAVE_LIB_CURVE25519=n
9117ec3e71SHerbert Xu
920ed42a6fSJason A. Donenfeldconfig CRYPTO_LIB_CURVE25519
93edc8e80bSArnd Bergmann	tristate
9417ec3e71SHerbert Xu	select CRYPTO
9517ec3e71SHerbert Xu	select CRYPTO_LIB_CURVE25519_INTERNAL
960ed42a6fSJason A. Donenfeld	help
970ed42a6fSJason A. Donenfeld	  Enable the Curve25519 library interface. This interface may be
980ed42a6fSJason A. Donenfeld	  fulfilled by either the generic implementation or an arch-specific
990ed42a6fSJason A. Donenfeld	  one, if one is available and enabled.
1000ed42a6fSJason A. Donenfeld
101746b2e02SArd Biesheuvelconfig CRYPTO_LIB_DES
102746b2e02SArd Biesheuvel	tristate
103746b2e02SArd Biesheuvel
104e1644613SEric Biggersconfig CRYPTO_LIB_MD5
105e1644613SEric Biggers	tristate
106e1644613SEric Biggers	help
107e1644613SEric Biggers	  The MD5 and HMAC-MD5 library functions.  Select this if your module
108e1644613SEric Biggers	  uses any of the functions from <crypto/md5.h>.
109e1644613SEric Biggers
110e1644613SEric Biggersconfig CRYPTO_LIB_MD5_ARCH
111e1644613SEric Biggers	bool
112e1644613SEric Biggers	depends on CRYPTO_LIB_MD5 && !UML
113c9e5ac0aSEric Biggers	default y if MIPS && CPU_CAVIUM_OCTEON
11409371e13SEric Biggers	default y if PPC
115*a1848f6eSEric Biggers	default y if SPARC64
116e1644613SEric Biggers
117a1d93064SArd Biesheuvelconfig CRYPTO_LIB_POLY1305_RSIZE
118a1d93064SArd Biesheuvel	int
119a11d055eSArd Biesheuvel	default 2 if MIPS
120d7d7b853SJason A. Donenfeld	default 11 if X86_64
121a6b803b3SArd Biesheuvel	default 9 if ARM || ARM64
122a1d93064SArd Biesheuvel	default 1
123a1d93064SArd Biesheuvel
124a1d93064SArd Biesheuvelconfig CRYPTO_ARCH_HAVE_LIB_POLY1305
1251047e21aSHerbert Xu	bool
126a1d93064SArd Biesheuvel	help
127a1d93064SArd Biesheuvel	  Declares whether the architecture provides an arch-specific
128a1d93064SArd Biesheuvel	  accelerated implementation of the Poly1305 library interface,
129a1d93064SArd Biesheuvel	  either builtin or as a module.
130a1d93064SArd Biesheuvel
13148ea8c6eSArd Biesheuvelconfig CRYPTO_LIB_POLY1305_GENERIC
13248ea8c6eSArd Biesheuvel	tristate
133af9ce627SEric Biggers	default CRYPTO_LIB_POLY1305 if !CRYPTO_ARCH_HAVE_LIB_POLY1305
134a1d93064SArd Biesheuvel	help
135af9ce627SEric Biggers	  This symbol can be selected by arch implementations of the Poly1305
136af9ce627SEric Biggers	  library interface that require the generic code as a fallback, e.g.,
137af9ce627SEric Biggers	  for SIMD implementations. If no arch specific implementation is
138af9ce627SEric Biggers	  enabled, this implementation serves the users of CRYPTO_LIB_POLY1305.
13917ec3e71SHerbert Xu
140a1d93064SArd Biesheuvelconfig CRYPTO_LIB_POLY1305
141edc8e80bSArnd Bergmann	tristate
142a1d93064SArd Biesheuvel	help
143a1d93064SArd Biesheuvel	  Enable the Poly1305 library interface. This interface may be fulfilled
144a1d93064SArd Biesheuvel	  by either the generic implementation or an arch-specific one, if one
145a1d93064SArd Biesheuvel	  is available and enabled.
14648ea8c6eSArd Biesheuvel
147ed20078bSArd Biesheuvelconfig CRYPTO_LIB_CHACHA20POLY1305
148edc8e80bSArnd Bergmann	tristate
149ed20078bSArd Biesheuvel	select CRYPTO_LIB_CHACHA
150ed20078bSArd Biesheuvel	select CRYPTO_LIB_POLY1305
15117ec3e71SHerbert Xu	select CRYPTO_LIB_UTILS
152ed20078bSArd Biesheuvel
153ec8f7f48SEric Biggersconfig CRYPTO_LIB_SHA1
154ec8f7f48SEric Biggers	tristate
15590860aefSEric Biggers	help
156d73915fdSEric Biggers	  The SHA-1 and HMAC-SHA1 library functions.  Select this if your module
157d73915fdSEric Biggers	  uses any of the functions from <crypto/sha1.h>.
15890860aefSEric Biggers
15990860aefSEric Biggersconfig CRYPTO_LIB_SHA1_ARCH
16090860aefSEric Biggers	bool
16190860aefSEric Biggers	depends on CRYPTO_LIB_SHA1 && !UML
16270cb6ca5SEric Biggers	default y if ARM
16300d549bbSEric Biggers	default y if ARM64 && KERNEL_MODE_NEON
164b6ac1dacSEric Biggers	default y if MIPS && CPU_CAVIUM_OCTEON
1656b9ae8cfSEric Biggers	default y if PPC
166377982d5SEric Biggers	default y if S390
167c7510599SEric Biggers	default y if SPARC64
168f3d6cb3dSEric Biggers	default y if X86_64
169ec8f7f48SEric Biggers
170746b2e02SArd Biesheuvelconfig CRYPTO_LIB_SHA256
171746b2e02SArd Biesheuvel	tristate
172950e5c84SEric Biggers	help
173d73915fdSEric Biggers	  The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions.
174d73915fdSEric Biggers	  Select this if your module uses any of these functions from
175d73915fdSEric Biggers	  <crypto/sha2.h>.
176950e5c84SEric Biggers
177e96cb950SEric Biggersconfig CRYPTO_LIB_SHA256_ARCH
178950e5c84SEric Biggers	bool
179e96cb950SEric Biggers	depends on CRYPTO_LIB_SHA256 && !UML
180e96cb950SEric Biggers	default y if ARM && !CPU_V7M
181e96cb950SEric Biggers	default y if ARM64
182e96cb950SEric Biggers	default y if MIPS && CPU_CAVIUM_OCTEON
183e96cb950SEric Biggers	default y if PPC && SPE
184e96cb950SEric Biggers	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
185e96cb950SEric Biggers	default y if S390
186e96cb950SEric Biggers	default y if SPARC64
187e96cb950SEric Biggers	default y if X86_64
1882b31277aSTianjia Zhang
189b693c703SEric Biggersconfig CRYPTO_LIB_SHA512
190b693c703SEric Biggers	tristate
191b693c703SEric Biggers	help
19223e8b437SEric Biggers	  The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
19323e8b437SEric Biggers	  Select this if your module uses any of these functions from
19423e8b437SEric Biggers	  <crypto/sha2.h>.
195b693c703SEric Biggers
196b693c703SEric Biggersconfig CRYPTO_LIB_SHA512_ARCH
197b693c703SEric Biggers	bool
198b693c703SEric Biggers	depends on CRYPTO_LIB_SHA512 && !UML
19924c91b62SEric Biggers	default y if ARM && !CPU_V7M
20060e3f1e9SEric Biggers	default y if ARM64
2017117739aSEric Biggers	default y if MIPS && CPU_CAVIUM_OCTEON
202b59059a2SEric Biggers	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
203b7b36608SEric Biggers	default y if S390
20402b35babSEric Biggers	default y if SPARC64
205484c1811SEric Biggers	default y if X86_64
206b693c703SEric Biggers
207f4065b2fSHerbert Xuconfig CRYPTO_LIB_SM3
208f4065b2fSHerbert Xu	tristate
209f4065b2fSHerbert Xu
2104dcf6cadSEric Biggerssource "lib/crypto/tests/Kconfig"
2114dcf6cadSEric Biggers
212714656a8SEric Biggersif !KMSAN # avoid false positives from assembly
213714656a8SEric Biggersif ARM
2144a32e5dcSEric Biggerssource "lib/crypto/arm/Kconfig"
215714656a8SEric Biggersendif
216cc16e228SEric Biggersif ARM64
21761f86c70SEric Biggerssource "lib/crypto/arm64/Kconfig"
218cc16e228SEric Biggersendif
219939a54acSEric Biggersif MIPS
2207e54e993SEric Biggerssource "lib/crypto/mips/Kconfig"
221939a54acSEric Biggersendif
222f9f86c03SEric Biggersif PPC
223676d45abSEric Biggerssource "lib/crypto/powerpc/Kconfig"
224f9f86c03SEric Biggersendif
225d604877cSEric Biggersif RISCV
226daed4fcfSEric Biggerssource "lib/crypto/riscv/Kconfig"
227d604877cSEric Biggersendif
2283ea91323SEric Biggersif S390
229b8456f7aSEric Biggerssource "lib/crypto/s390/Kconfig"
2303ea91323SEric Biggersendif
231c7c18c94SEric Biggersif X86
23274750aa7SEric Biggerssource "lib/crypto/x86/Kconfig"
233c7c18c94SEric Biggersendif
234714656a8SEric Biggersendif
235714656a8SEric Biggers
236e56e1898SJustin M. Forbesendmenu
237