summaryrefslogtreecommitdiff
path: root/lib/crypto/Kconfig
blob: eea17e36a22bedc081f98059c561c8800527be9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# SPDX-License-Identifier: GPL-2.0

menu "Crypto library routines"

config CRYPTO_HASH_INFO
	bool

config CRYPTO_LIB_UTILS
	tristate

config CRYPTO_LIB_AES
	tristate

config CRYPTO_LIB_AESCFB
	tristate
	select CRYPTO_LIB_AES
	select CRYPTO_LIB_UTILS

config CRYPTO_LIB_AESGCM
	tristate
	select CRYPTO_LIB_AES
	select CRYPTO_LIB_GF128MUL
	select CRYPTO_LIB_UTILS

config CRYPTO_LIB_ARC4
	tristate

config CRYPTO_LIB_GF128MUL
	tristate

# BLAKE2s support is always built-in, so there's no CRYPTO_LIB_BLAKE2S option.

config CRYPTO_LIB_BLAKE2S_ARCH
	bool
	depends on !UML
	default y if ARM
	default y if X86_64

config CRYPTO_LIB_CHACHA
	tristate
	select CRYPTO_LIB_UTILS
	help
	  Enable the ChaCha library interface.  Select this if your module uses
	  chacha_crypt() or hchacha_block().

config CRYPTO_LIB_CHACHA_ARCH
	bool
	depends on CRYPTO_LIB_CHACHA && !UML && !KMSAN
	default y if ARM
	default y if ARM64 && KERNEL_MODE_NEON
	default y if MIPS && CPU_MIPS32_R2
	default y if PPC64 && CPU_LITTLE_ENDIAN && VSX
	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
	default y if S390
	default y if X86_64

config CRYPTO_LIB_CURVE25519
	tristate
	select CRYPTO_LIB_UTILS
	help
	  The Curve25519 library functions.  Select this if your module uses any
	  of the functions from <crypto/curve25519.h>.

config CRYPTO_LIB_CURVE25519_ARCH
	bool
	depends on CRYPTO_LIB_CURVE25519 && !UML && !KMSAN
	default y if ARM && KERNEL_MODE_NEON
	default y if PPC64 && CPU_LITTLE_ENDIAN
	default y if X86_64

config CRYPTO_LIB_CURVE25519_GENERIC
	bool
	depends on CRYPTO_LIB_CURVE25519
	default y if !CRYPTO_LIB_CURVE25519_ARCH || ARM || X86_64

config CRYPTO_LIB_DES
	tristate

config CRYPTO_LIB_MD5
	tristate
	help
	  The MD5 and HMAC-MD5 library functions.  Select this if your module
	  uses any of the functions from <crypto/md5.h>.

config CRYPTO_LIB_MD5_ARCH
	bool
	depends on CRYPTO_LIB_MD5 && !UML
	default y if MIPS && CPU_CAVIUM_OCTEON
	default y if PPC
	default y if SPARC64

config CRYPTO_LIB_POLY1305
	tristate
	help
	  The Poly1305 library functions.  Select this if your module uses any
	  of the functions from <crypto/poly1305.h>.

config CRYPTO_LIB_POLY1305_ARCH
	bool
	depends on CRYPTO_LIB_POLY1305 && !UML
	default y if ARM
	default y if ARM64 && KERNEL_MODE_NEON
	default y if MIPS
	# The PPC64 code needs to be fixed to work in softirq context.
	default y if PPC64 && CPU_LITTLE_ENDIAN && VSX && BROKEN
	default y if RISCV
	default y if X86_64

# This symbol controls the inclusion of the Poly1305 generic code.  This differs
# from most of the other algorithms, which handle the generic code
# "automatically" via __maybe_unused.  This is needed so that the Adiantum code,
# which calls the poly1305_core_*() functions directly, can enable them.
config CRYPTO_LIB_POLY1305_GENERIC
	bool
	depends on CRYPTO_LIB_POLY1305
	# Enable if there's no arch impl or the arch impl requires the generic
	# impl as a fallback.  (Or if selected explicitly.)
	default y if !CRYPTO_LIB_POLY1305_ARCH || PPC64

config CRYPTO_LIB_POLY1305_RSIZE
	int
	default 2 if MIPS || RISCV
	default 11 if X86_64
	default 9 if ARM || ARM64
	default 1

config CRYPTO_LIB_CHACHA20POLY1305
	tristate
	select CRYPTO_LIB_CHACHA
	select CRYPTO_LIB_POLY1305
	select CRYPTO_LIB_UTILS

config CRYPTO_LIB_SHA1
	tristate
	help
	  The SHA-1 and HMAC-SHA1 library functions.  Select this if your module
	  uses any of the functions from <crypto/sha1.h>.

config CRYPTO_LIB_SHA1_ARCH
	bool
	depends on CRYPTO_LIB_SHA1 && !UML
	default y if ARM
	default y if ARM64 && KERNEL_MODE_NEON
	default y if MIPS && CPU_CAVIUM_OCTEON
	default y if PPC
	default y if S390
	default y if SPARC64
	default y if X86_64

config CRYPTO_LIB_SHA256
	tristate
	help
	  The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions.
	  Select this if your module uses any of these functions from
	  <crypto/sha2.h>.

config CRYPTO_LIB_SHA256_ARCH
	bool
	depends on CRYPTO_LIB_SHA256 && !UML
	default y if ARM && !CPU_V7M
	default y if ARM64
	default y if MIPS && CPU_CAVIUM_OCTEON
	default y if PPC && SPE
	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
	default y if S390
	default y if SPARC64
	default y if X86_64

config CRYPTO_LIB_SHA512
	tristate
	help
	  The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
	  Select this if your module uses any of these functions from
	  <crypto/sha2.h>.

config CRYPTO_LIB_SHA512_ARCH
	bool
	depends on CRYPTO_LIB_SHA512 && !UML
	default y if ARM && !CPU_V7M
	default y if ARM64
	default y if MIPS && CPU_CAVIUM_OCTEON
	default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
	default y if S390
	default y if SPARC64
	default y if X86_64

config CRYPTO_LIB_SM3
	tristate

source "lib/crypto/tests/Kconfig"

endmenu