hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/crypto/Makefile
....@@ -4,9 +4,7 @@
44 #
55
66 obj-$(CONFIG_CRYPTO) += crypto.o
7
-crypto-y := api.o cipher.o compress.o memneq.o
8
-
9
-obj-$(CONFIG_CRYPTO_WORKQUEUE) += crypto_wq.o
7
+crypto-y := api.o cipher.o compress.o
108
119 obj-$(CONFIG_CRYPTO_ENGINE) += crypto_engine.o
1210 obj-$(CONFIG_CRYPTO_FIPS) += fips.o
....@@ -16,11 +14,9 @@
1614 obj-$(CONFIG_CRYPTO_ALGAPI2) += crypto_algapi.o
1715
1816 obj-$(CONFIG_CRYPTO_AEAD2) += aead.o
17
+obj-$(CONFIG_CRYPTO_AEAD2) += geniv.o
1918
20
-crypto_blkcipher-y := ablkcipher.o
21
-crypto_blkcipher-y += blkcipher.o
22
-crypto_blkcipher-y += skcipher.o
23
-obj-$(CONFIG_CRYPTO_BLKCIPHER2) += crypto_blkcipher.o
19
+obj-$(CONFIG_CRYPTO_SKCIPHER2) += skcipher.o
2420 obj-$(CONFIG_CRYPTO_SEQIV) += seqiv.o
2521 obj-$(CONFIG_CRYPTO_ECHAINIV) += echainiv.o
2622
....@@ -46,6 +42,14 @@
4642 rsa_generic-y += rsa-pkcs1pad.o
4743 obj-$(CONFIG_CRYPTO_RSA) += rsa_generic.o
4844
45
+$(obj)/sm2signature.asn1.o: $(obj)/sm2signature.asn1.c $(obj)/sm2signature.asn1.h
46
+$(obj)/sm2.o: $(obj)/sm2signature.asn1.h
47
+
48
+sm2_generic-y += sm2signature.asn1.o
49
+sm2_generic-y += sm2.o
50
+
51
+obj-$(CONFIG_CRYPTO_SM2) += sm2_generic.o
52
+
4953 crypto_acompress-y := acompress.o
5054 crypto_acompress-y += scompress.o
5155 obj-$(CONFIG_CRYPTO_ACOMP2) += crypto_acompress.o
....@@ -54,6 +58,8 @@
5458
5559 obj-$(CONFIG_CRYPTO_MANAGER2) += cryptomgr.o
5660 obj-$(CONFIG_CRYPTO_USER) += crypto_user.o
61
+crypto_user-y := crypto_user_base.o
62
+crypto_user-$(CONFIG_CRYPTO_STATS) += crypto_user_stat.o
5763 obj-$(CONFIG_CRYPTO_CMAC) += cmac.o
5864 obj-$(CONFIG_CRYPTO_HMAC) += hmac.o
5965 obj-$(CONFIG_CRYPTO_VMAC) += vmac.o
....@@ -70,11 +76,12 @@
7076 obj-$(CONFIG_CRYPTO_SHA512) += sha512_generic.o
7177 obj-$(CONFIG_CRYPTO_SHA3) += sha3_generic.o
7278 obj-$(CONFIG_CRYPTO_SM3) += sm3_generic.o
79
+obj-$(CONFIG_CRYPTO_STREEBOG) += streebog_generic.o
7380 obj-$(CONFIG_CRYPTO_WP512) += wp512.o
7481 CFLAGS_wp512.o := $(call cc-option,-fno-schedule-insns) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79149
7582 obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
76
-obj-$(CONFIG_CRYPTO_BLAKE2S) += blake2s_generic.o
7783 obj-$(CONFIG_CRYPTO_BLAKE2B) += blake2b_generic.o
84
+obj-$(CONFIG_CRYPTO_BLAKE2S) += blake2s_generic.o
7885 obj-$(CONFIG_CRYPTO_GF128MUL) += gf128mul.o
7986 obj-$(CONFIG_CRYPTO_ECB) += ecb.o
8087 obj-$(CONFIG_CRYPTO_CBC) += cbc.o
....@@ -91,13 +98,28 @@
9198 obj-$(CONFIG_CRYPTO_CCM) += ccm.o
9299 obj-$(CONFIG_CRYPTO_CHACHA20POLY1305) += chacha20poly1305.o
93100 obj-$(CONFIG_CRYPTO_AEGIS128) += aegis128.o
94
-obj-$(CONFIG_CRYPTO_AEGIS128L) += aegis128l.o
95
-obj-$(CONFIG_CRYPTO_AEGIS256) += aegis256.o
96
-obj-$(CONFIG_CRYPTO_MORUS640) += morus640.o
97
-obj-$(CONFIG_CRYPTO_MORUS1280) += morus1280.o
101
+aegis128-y := aegis128-core.o
102
+
103
+ifeq ($(ARCH),arm)
104
+CFLAGS_aegis128-neon-inner.o += -ffreestanding -march=armv8-a -mfloat-abi=softfp
105
+CFLAGS_aegis128-neon-inner.o += -mfpu=crypto-neon-fp-armv8
106
+aegis128-$(CONFIG_CRYPTO_AEGIS128_SIMD) += aegis128-neon.o aegis128-neon-inner.o
107
+endif
108
+ifeq ($(ARCH),arm64)
109
+aegis128-cflags-y := -ffreestanding -mcpu=generic+crypto
110
+aegis128-cflags-$(CONFIG_CC_IS_GCC) += -ffixed-q16 -ffixed-q17 -ffixed-q18 \
111
+ -ffixed-q19 -ffixed-q20 -ffixed-q21 \
112
+ -ffixed-q22 -ffixed-q23 -ffixed-q24 \
113
+ -ffixed-q25 -ffixed-q26 -ffixed-q27 \
114
+ -ffixed-q28 -ffixed-q29 -ffixed-q30 \
115
+ -ffixed-q31
116
+CFLAGS_aegis128-neon-inner.o += $(aegis128-cflags-y)
117
+CFLAGS_REMOVE_aegis128-neon-inner.o += -mgeneral-regs-only
118
+aegis128-$(CONFIG_CRYPTO_AEGIS128_SIMD) += aegis128-neon.o aegis128-neon-inner.o
119
+endif
120
+
98121 obj-$(CONFIG_CRYPTO_PCRYPT) += pcrypt.o
99122 obj-$(CONFIG_CRYPTO_CRYPTD) += cryptd.o
100
-obj-$(CONFIG_CRYPTO_MCRYPTD) += mcryptd.o
101123 obj-$(CONFIG_CRYPTO_DES) += des_generic.o
102124 obj-$(CONFIG_CRYPTO_FCRYPT) += fcrypt.o
103125 obj-$(CONFIG_CRYPTO_BLOWFISH) += blowfish_generic.o
....@@ -128,15 +150,18 @@
128150 obj-$(CONFIG_CRYPTO_CRC32) += crc32_generic.o
129151 obj-$(CONFIG_CRYPTO_CRCT10DIF) += crct10dif_common.o crct10dif_generic.o
130152 obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o authencesn.o
131
-obj-$(CONFIG_CRYPTO_LZO) += lzo.o
153
+obj-$(CONFIG_CRYPTO_LZO) += lzo.o lzo-rle.o
132154 obj-$(CONFIG_CRYPTO_LZ4) += lz4.o
133155 obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o
156
+obj-$(CONFIG_CRYPTO_XXHASH) += xxhash_generic.o
134157 obj-$(CONFIG_CRYPTO_842) += 842.o
135158 obj-$(CONFIG_CRYPTO_RNG2) += rng.o
136159 obj-$(CONFIG_CRYPTO_ANSI_CPRNG) += ansi_cprng.o
137160 obj-$(CONFIG_CRYPTO_DRBG) += drbg.o
138161 obj-$(CONFIG_CRYPTO_JITTERENTROPY) += jitterentropy_rng.o
139162 CFLAGS_jitterentropy.o = -O0
163
+KASAN_SANITIZE_jitterentropy.o = n
164
+UBSAN_SANITIZE_jitterentropy.o = n
140165 jitterentropy_rng-y := jitterentropy.o jitterentropy-kcapi.o
141166 obj-$(CONFIG_CRYPTO_TEST) += tcrypt.o
142167 obj-$(CONFIG_CRYPTO_GHASH) += ghash-generic.o
....@@ -147,12 +172,21 @@
147172 obj-$(CONFIG_CRYPTO_USER_API_AEAD) += algif_aead.o
148173 obj-$(CONFIG_CRYPTO_ZSTD) += zstd.o
149174 obj-$(CONFIG_CRYPTO_OFB) += ofb.o
175
+obj-$(CONFIG_CRYPTO_ECC) += ecc.o
176
+obj-$(CONFIG_CRYPTO_ESSIV) += essiv.o
177
+obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o
150178
151
-ecdh_generic-y := ecc.o
152179 ecdh_generic-y += ecdh.o
153180 ecdh_generic-y += ecdh_helper.o
154181 obj-$(CONFIG_CRYPTO_ECDH) += ecdh_generic.o
155
-obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o
182
+
183
+$(obj)/ecrdsa_params.asn1.o: $(obj)/ecrdsa_params.asn1.c $(obj)/ecrdsa_params.asn1.h
184
+$(obj)/ecrdsa_pub_key.asn1.o: $(obj)/ecrdsa_pub_key.asn1.c $(obj)/ecrdsa_pub_key.asn1.h
185
+$(obj)/ecrdsa.o: $(obj)/ecrdsa_params.asn1.h $(obj)/ecrdsa_pub_key.asn1.h
186
+ecrdsa_generic-y += ecrdsa.o
187
+ecrdsa_generic-y += ecrdsa_params.asn1.o
188
+ecrdsa_generic-y += ecrdsa_pub_key.asn1.o
189
+obj-$(CONFIG_CRYPTO_ECRDSA) += ecrdsa_generic.o
156190
157191 #
158192 # generic algorithms and the async_tx api
....@@ -163,3 +197,58 @@
163197 obj-$(CONFIG_CRYPTO_HASH_INFO) += hash_info.o
164198 crypto_simd-y := simd.o
165199 obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
200
+
201
+ifneq ($(CONFIG_CRYPTO_FIPS140_MOD),)
202
+
203
+FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO -include fips140-defs.h
204
+
205
+CFLAGS_jitterentropy-fips.o := -O0
206
+KASAN_SANITIZE_jitterentropy-fips.o = n
207
+UBSAN_SANITIZE_jitterentropy-fips.o = n
208
+
209
+#
210
+# Create a separate FIPS archive containing a duplicate of each builtin generic
211
+# module that is in scope for FIPS 140-2 certification
212
+#
213
+crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o cmac.o \
214
+ gf128mul.o aes_generic.o lib-crypto-aes.o \
215
+ jitterentropy.o jitterentropy-kcapi.o \
216
+ sha1_generic.o sha256_generic.o sha512_generic.o \
217
+ lib-memneq.o lib-sha1.o lib-crypto-sha256.o
218
+crypto-fips-objs := $(foreach o,$(crypto-fips-objs),$(o:.o=-fips.o))
219
+
220
+# get the arch to add its objects to $(crypto-fips-objs)
221
+include $(srctree)/arch/$(ARCH)/crypto/Kbuild.fips140
222
+
223
+extra-$(CONFIG_CRYPTO_FIPS140_MOD) += crypto-fips.a
224
+
225
+$(obj)/%-fips.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS)
226
+$(obj)/%-fips.o: $(src)/%.c FORCE
227
+ $(call if_changed_rule,cc_o_c)
228
+$(obj)/lib-%-fips.o: $(srctree)/lib/%.c FORCE
229
+ $(call if_changed_rule,cc_o_c)
230
+$(obj)/lib-crypto-%-fips.o: $(srctree)/lib/crypto/%.c FORCE
231
+ $(call if_changed_rule,cc_o_c)
232
+
233
+$(obj)/crypto-fips.a: $(addprefix $(obj)/,$(crypto-fips-objs)) FORCE
234
+ $(call if_changed,ar_and_symver)
235
+
236
+fips140-objs := \
237
+ fips140-alg-registration.o \
238
+ fips140-module.o \
239
+ fips140-refs.o \
240
+ fips140-selftests.o \
241
+ crypto-fips.a
242
+fips140-$(CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING) += \
243
+ fips140-eval-testing.o
244
+obj-m += fips140.o
245
+
246
+CFLAGS_fips140-alg-registration.o += $(FIPS140_CFLAGS)
247
+CFLAGS_fips140-module.o += $(FIPS140_CFLAGS)
248
+CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS)
249
+CFLAGS_fips140-eval-testing.o += $(FIPS140_CFLAGS)
250
+
251
+hostprogs-always-y := fips140_gen_hmac
252
+HOSTLDLIBS_fips140_gen_hmac := -lcrypto -lelf
253
+
254
+endif