@@ -46,17 +46,22 @@ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_44) \
4646 dilithium44/dilithium_poly.o \
4747 dilithium44/dilithium_rounding.o \
4848 dilithium44/dilithium_selftest.o \
49- dilithium44/dilithium_signature_api_c.o \
5049 dilithium44/dilithium_signature_c.o \
5150 dilithium44/dilithium_signature_helper.o
5251CFLAGS_dilithium44/dilithium_ntt.o := -DLC_DILITHIUM_TYPE_44
5352CFLAGS_dilithium44/dilithium_poly.o := -DLC_DILITHIUM_TYPE_44
5453CFLAGS_dilithium44/dilithium_rounding.o := -DLC_DILITHIUM_TYPE_44
5554CFLAGS_dilithium44/dilithium_selftest.o := -DLC_DILITHIUM_TYPE_44
56- CFLAGS_dilithium44/dilithium_signature_api_c.o := -DLC_DILITHIUM_TYPE_44
5755CFLAGS_dilithium44/dilithium_signature_c.o := -DLC_DILITHIUM_TYPE_44
5856CFLAGS_dilithium44/dilithium_signature_helper.o := -DLC_DILITHIUM_TYPE_44
5957
58+ # RISCV64 has its own Dilithium 44 API
59+ ifeq ($(and $(CONFIG_RISCV),$(CONFIG_64BIT)),)
60+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_44) \
61+ += dilithium44/dilithium_signature_api_c.o
62+ CFLAGS_dilithium44/dilithium_signature_api_c.o := -DLC_DILITHIUM_TYPE_44
63+ endif
64+
6065# Dilithium-87-ED25519 implementation
6166leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_ED25519) \
6267 += leancrypto_kernel_dilithium_ed25519.o
@@ -189,6 +194,77 @@ AFLAGS_dilithium65/armv8/dilithium_poly_armv8.o := -DLC_DILITHIUM_TYPE_65
189194CFLAGS_dilithium65/armv8/dilithium_signature_api_armv8.o:= -DLC_DILITHIUM_TYPE_65
190195CFLAGS_dilithium65/armv8/dilithium_signature_armv8.o := -DLC_DILITHIUM_TYPE_65
191196
197+ else ifneq ($(and $(CONFIG_RISCV),$(CONFIG_64BIT)),)
198+ ################################################################################
199+ # RISCV64 assembler and RVV implementations
200+ ################################################################################
201+ # Dilithium Common
202+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM) \
203+ += ../ml-dsa/src/riscv64/dilithium_consts_rvv.o \
204+ ../ml-dsa/src/riscv64/dilithium_zetas_riscv64.o
205+
206+ # Dilithium 87 RISCV64 ASM
207+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_87) \
208+ += ../ml-dsa/src/riscv64/dilithium_signature_api_riscv64.o\
209+ ../ml-dsa/src/riscv64/dilithium_signature_riscv64.o \
210+ ../ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.o
211+ AFLAGS../ml-dsa/src/riscv64/ntt_8l_dualissue_plant_rv64im.o := -march=rv64gc \
212+ -mcmodel=medany
213+
214+ # Dilithium 65 RISCV64 ASM
215+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_65) \
216+ += dilithium65/riscv64/dilithium_signature_api_riscv64.o\
217+ dilithium65/riscv64/dilithium_signature_riscv64.o \
218+ dilithium65/riscv64/ntt_8l_dualissue_plant_rv64im.o
219+ CFLAGS_dilithium65/riscv64/dilithium_signature_api_riscv64.o := -DLC_DILITHIUM_TYPE_65
220+ CFLAGS_dilithium65/riscv64/dilithium_signature_riscv64.o := -DLC_DILITHIUM_TYPE_65
221+ AFLAGS_dilithium65/riscv64/ntt_8l_dualissue_plant_rv64im.o := -march=rv64gc \
222+ -mcmodel=medany \
223+ -DLC_DILITHIUM_TYPE_65
224+
225+ # Dilithium 44 RISCV64 ASM
226+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_44) \
227+ += dilithium44/riscv64/dilithium_signature_api_riscv64.o\
228+ dilithium44/riscv64/dilithium_signature_riscv64.o \
229+ dilithium44/riscv64/ntt_8l_dualissue_plant_rv64im.o
230+ CFLAGS_dilithium44/riscv64/dilithium_signature_api_riscv64.o := -DLC_DILITHIUM_TYPE_44
231+ CFLAGS_dilithium44/riscv64/dilithium_signature_riscv64.o := -DLC_DILITHIUM_TYPE_44
232+ AFLAGS_dilithium44/riscv64/ntt_8l_dualissue_plant_rv64im.o := -march=rv64gc \
233+ -mcmodel=medany \
234+ -DLC_DILITHIUM_TYPE_44
235+
236+ # Dilithium 87 RISCV64 RVV
237+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_87) \
238+ += dilithium87/riscv64_rvv/dilithium_signature_riscv64_rvv.o\
239+ dilithium87/riscv64_rvv/ntt_rvv.o
240+ CFLAGS_dilithium87/riscv64_rvv/dilithium_signature_riscv64_rvv.o := \
241+ -march=rv64imadcv -mcmodel=medany \
242+ -DLC_DILITHIUM_RISCV64_RVV
243+ AFLAGS_dilithium87/riscv64_rvv/ntt_rvv.o := -march=rv64imadcv -mcmodel=medany \
244+ -DLC_DILITHIUM_RISCV64_RVV
245+
246+ # Dilithium 65 RISCV64 RVV
247+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_65) \
248+ += dilithium65/riscv64_rvv/dilithium_signature_riscv64_rvv.o\
249+ dilithium65/riscv64_rvv/ntt_rvv.o
250+ CFLAGS_dilithium65/riscv64_rvv/dilithium_signature_riscv64_rvv.o := \
251+ -march=rv64imadcv -mcmodel=medany -DLC_DILITHIUM_TYPE_65\
252+ -DLC_DILITHIUM_RISCV64_RVV
253+ AFLAGS_dilithium65/riscv64_rvv/ntt_rvv.o := -march=rv64imadcv -mcmodel=medany \
254+ -DLC_DILITHIUM_TYPE_65 \
255+ -DLC_DILITHIUM_RISCV64_RVV
256+
257+ # Dilithium 44 RISCV64 RVV
258+ leancrypto-$(CONFIG_LEANCRYPTO_DILITHIUM_44) \
259+ += dilithium44/riscv64_rvv/dilithium_signature_riscv64_rvv.o\
260+ dilithium44/riscv64_rvv/ntt_rvv.o
261+ CFLAGS_dilithium44/riscv64_rvv/dilithium_signature_riscv64_rvv.o := \
262+ -march=rv64imadcv -mcmodel=medany -DLC_DILITHIUM_TYPE_44\
263+ -DLC_DILITHIUM_RISCV64_RVV
264+ AFLAGS_dilithium44/riscv64_rvv/ntt_rvv.o := -march=rv64imadcv -mcmodel=medany \
265+ -DLC_DILITHIUM_TYPE_44 \
266+ -DLC_DILITHIUM_RISCV64_RVV
267+
192268
193269################################################################################
194270# Interfaces for any non-accelerated implementation
0 commit comments