Skip to content

Commit 6844445

Browse files
committed
Adapt optimized code
1 parent 5ec7e9d commit 6844445

File tree

2 files changed

+71
-92
lines changed

2 files changed

+71
-92
lines changed

tests/sphincsplus/optimization/Makefile

Lines changed: 59 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,78 +2,79 @@ TARGET := riscv64-unknown-linux-gnu-
22
CC := $(TARGET)gcc
33
LD := $(TARGET)gcc
44

5+
PARAMS = sphincs-shake-256f
6+
THASH = robust
7+
58
CFLAGS := -fPIC -O3 -fno-builtin-printf -fno-builtin-memcmp -nostdinc -nostartfiles -fvisibility=hidden -fdata-sections -ffunction-sections -nostdlib -Wno-nonnull-compare -DCKB_VM -DCKB_DECLARATION_ONLY
69
LDFLAGS := -fdata-sections -ffunction-sections
710

8-
CFLAGS := $(CFLAGS) -Wall -Werror -Wno-nonnull -Wno-unused-function
11+
# Using a new version of gcc will have a warning of ckb-c-stdlib
12+
CFLAGS := $(CFLAGS) -w
13+
# CFLAGS := $(CFLAGS) -Wall -Werror -Wno-nonnull -Wno-unused-function
914
LDFLAGS := $(LDFLAGS) -Wl,-static -Wl,--gc-sections
1015

11-
CFLAGS := $(CFLAGS) -I ../../../c -I ../../../c/ref -I ../ -I ../../../deps/ckb-c-stdlib/libc -I ../../../deps/ckb-c-stdlib
12-
13-
CFLAGS := $(CFLAGS) -g -DCKB_C_STDLIB_PRINTF
16+
CFLAGS := $(CFLAGS) -I ../../../c -I ../../../deps/ckb-c-stdlib/libc -I ../../../deps/ckb-c-stdlib -I ../../../deps/ckb-c-stdlib/molecule -I ../
17+
CFLAGS := $(CFLAGS) -I ../../../deps/sphincsplus/ref -DPARAMS=$(PARAMS) -DTEST_DATA=$(PARAMS)-$(THASH)
1418

15-
SOURCES_DIR = ../../../c/ref/
19+
SPHINCS_PLUS_DIR = ../../../deps/sphincsplus/ref/
1620

1721
SOURCES = \
18-
$(SOURCES_DIR)/params.c \
19-
$(SOURCES_DIR)/address.c \
20-
$(SOURCES_DIR)/merkle.c \
21-
$(SOURCES_DIR)/wots.c \
22-
$(SOURCES_DIR)/wotsx1.c \
23-
$(SOURCES_DIR)/utils.c \
24-
$(SOURCES_DIR)/utilsx1.c \
25-
$(SOURCES_DIR)/fors.c \
26-
$(SOURCES_DIR)/sign.c \
27-
$(SOURCES_DIR)/randombytes.c \
28-
$(SOURCES_DIR)/../ckb-sphincsplus.c
22+
$(SPHINCS_PLUS_DIR)address.c \
23+
$(SPHINCS_PLUS_DIR)merkle.c \
24+
$(SPHINCS_PLUS_DIR)wots.c \
25+
$(SPHINCS_PLUS_DIR)wotsx1.c \
26+
$(SPHINCS_PLUS_DIR)utils.c \
27+
$(SPHINCS_PLUS_DIR)utilsx1.c \
28+
$(SPHINCS_PLUS_DIR)fors.c \
29+
$(SPHINCS_PLUS_DIR)sign.c \
30+
../../../c/ckb-sphincsplus.c
2931

3032
HEADERS = \
31-
$(SOURCES_DIR)params.h \
32-
$(SOURCES_DIR)address.h \
33-
$(SOURCES_DIR)merkle.h \
34-
$(SOURCES_DIR)wots.h \
35-
$(SOURCES_DIR)wotsx1.h \
36-
$(SOURCES_DIR)utils.h \
37-
$(SOURCES_DIR)utilsx1.h \
38-
$(SOURCES_DIR)fors.h \
39-
$(SOURCES_DIR)api.h \
40-
$(SOURCES_DIR)hash.h \
41-
$(SOURCES_DIR)thash.h \
42-
$(SOURCES_DIR)randombytes.h \
43-
$(SOURCES_DIR)/../ckb-sphincsplus.h
44-
45-
# shake
46-
SOURCES += \
47-
$(SOURCES_DIR)fips202.c \
48-
$(SOURCES_DIR)hash_shake.c \
49-
$(SOURCES_DIR)thash_shake_robust.c \
50-
$(SOURCES_DIR)thash_shake_simple.c \
51-
$(SOURCES_DIR)fips202_asm_bin.S
52-
HEADERS += \
53-
$(SOURCES_DIR)fips202.h
54-
55-
SOURCES += \
56-
$(SOURCES_DIR)haraka.c \
57-
$(SOURCES_DIR)hash_haraka.c \
58-
$(SOURCES_DIR)thash_haraka_robust.c \
59-
$(SOURCES_DIR)thash_haraka_simple.c
60-
HEADERS += \
61-
$(SOURCES_DIR)haraka.h
62-
63-
SOURCES += \
64-
$(SOURCES_DIR)sha2.c \
65-
$(SOURCES_DIR)hash_sha2.c \
66-
$(SOURCES_DIR)thash_sha2_robust.c \
67-
$(SOURCES_DIR)thash_sha2_simple.c
68-
HEADERS += \
69-
$(SOURCES_DIR)sha2.h
33+
$(SPHINCS_PLUS_DIR)params.h \
34+
$(SPHINCS_PLUS_DIR)address.h \
35+
$(SPHINCS_PLUS_DIR)merkle.h \
36+
$(SPHINCS_PLUS_DIR)wots.h \
37+
$(SPHINCS_PLUS_DIR)wotsx1.h \
38+
$(SPHINCS_PLUS_DIR)utils.h \
39+
$(SPHINCS_PLUS_DIR)utilsx1.h \
40+
$(SPHINCS_PLUS_DIR)fors.h \
41+
$(SPHINCS_PLUS_DIR)api.h \
42+
$(SPHINCS_PLUS_DIR)hash.h \
43+
$(SPHINCS_PLUS_DIR)thash.h \
44+
$(SPHINCS_PLUS_DIR)randombytes.h \
45+
../../../c/ckb-sphincsplus.h
46+
47+
ifneq (,$(findstring shake,$(PARAMS)))
48+
SOURCES += \
49+
$(SPHINCS_PLUS_DIR)fips202.c \
50+
$(SPHINCS_PLUS_DIR)hash_shake.c \
51+
$(SPHINCS_PLUS_DIR)thash_shake_$(THASH).c
52+
HEADERS += $(SPHINCS_PLUS_DIR)fips202.h
53+
endif
54+
ifneq (,$(findstring haraka,$(PARAMS)))
55+
SOURCES += \
56+
$(SPHINCS_PLUS_DIR)haraka.c \
57+
$(SPHINCS_PLUS_DIR)hash_haraka.c \
58+
$(SPHINCS_PLUS_DIR)thash_haraka_$(THASH).c
59+
HEADERS += $(SPHINCS_PLUS_DIR)haraka.h
60+
endif
61+
ifneq (,$(findstring sha2,$(PARAMS)))
62+
SOURCES += \
63+
$(SPHINCS_PLUS_DIR)sha2.c \
64+
$(SPHINCS_PLUS_DIR)hash_sha2.c \
65+
$(SPHINCS_PLUS_DIR)thash_sha2_$(THASH).c
66+
HEADERS += $(SPHINCS_PLUS_DIR)sha2.h
67+
endif
68+
69+
# docker pull nervos/ckb-riscv-gnu-toolchain:gnu-jammy-20230214
70+
BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain@sha256:7601a814be2595ad471288fefc176356b31101837a514ddb0fc93b11c1cf5135
7071

7172
all: build/verify
7273

73-
build_asm: $(SOURCES_DIR)fips202_asm.S
74-
cd ../../../ && make build/convert_asm
74+
all-via-docker:
75+
docker run --rm -v `pwd`:/code ${BUILDER_DOCKER} bash -c "cd /code && make"
7576

76-
build/verify: optimization-sphincsplus.c $(SOURCES) $(HEADERS) build_asm
77+
build/verify: optimization-sphincsplus.c $(SOURCES) $(HEADERS)
7778
$(CC) $(CFLAGS) -o $@ $(SOURCES) $<
7879

7980
run: build/verify

tests/sphincsplus/optimization/optimization-sphincsplus.c

Lines changed: 12 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,22 @@
66
#include <stdio.h>
77

88
#include "ckb-sphincsplus.h"
9-
#include "ckb_vm_dbg.h"
109
#include "test_data.h"
1110

12-
#define RUN_SPHINCS_PLUS(NAME, SIZE, OPTION, THASH) \
13-
err = sphincs_plus_init_context( \
14-
CRYPTO_TYPE_##NAME##_##SIZE##OPTION##_##THASH, &cctx); \
15-
if (err != 0) { \
16-
return 1; \
17-
} \
18-
err = sphincs_plus_verify( \
19-
&cctx, G_##NAME##_##SIZE##OPTION##_##THASH##_SIGN, \
20-
sizeof(G_##NAME##_##SIZE##OPTION##_##THASH##_SIGN), \
21-
G_##NAME##_##SIZE##OPTION##_##THASH##_MSG, \
22-
sizeof(G_##NAME##_##SIZE##OPTION##_##THASH##_MSG), \
23-
G_##NAME##_##SIZE##OPTION##_##THASH##_PUB_KEY, \
24-
sizeof(G_##NAME##_##SIZE##OPTION##_##THASH##_PUB_KEY)); \
25-
if (err != 0) { \
26-
return 2; \
27-
}
28-
29-
int main() {
30-
crypto_context cctx = {0};
31-
int err = 0;
32-
// RUN_SPHINCS_PLUS(SHAKE, 128, S, ROBUST);
33-
// RUN_SPHINCS_PLUS(SHAKE, 192, S, ROBUST);
34-
// RUN_SPHINCS_PLUS(SHAKE, 256, S, ROBUST);
11+
#undef ASSERT
12+
// #define ASSERT(s)
13+
#define ASSERT(s) (void)0
3514

36-
// RUN_SPHINCS_PLUS(SHAKE, 128, F, ROBUST);
37-
// RUN_SPHINCS_PLUS(SHAKE, 192, F, ROBUST);
38-
RUN_SPHINCS_PLUS(SHAKE, 256, F, ROBUST);
15+
void randombytes(unsigned char *x, unsigned long long xlen) { ASSERT(0); }
3916

40-
// RUN_SPHINCS_PLUS(SHAKE, 128, S, SIMPLE);
41-
// RUN_SPHINCS_PLUS(SHAKE, 192, S, SIMPLE);
42-
// RUN_SPHINCS_PLUS(SHAKE, 256, S, SIMPLE);
43-
44-
// RUN_SPHINCS_PLUS(SHAKE, 128, F, SIMPLE);
45-
// RUN_SPHINCS_PLUS(SHAKE, 192, F, SIMPLE);
46-
// RUN_SPHINCS_PLUS(SHAKE, 256, F, SIMPLE);
17+
int main() {
18+
int err =
19+
sphincs_plus_verify(G_TEST_DATA_SIGN, sizeof(G_TEST_DATA_SIGN),
20+
G_TEST_DATA_MSG, sizeof(G_TEST_DATA_MSG),
21+
G_TEST_DATA_PUB_KEY, sizeof(G_TEST_DATA_PUB_KEY));
22+
if (err != 0) {
23+
return 2;
24+
}
4725

4826
printf("Done");
4927
return 0;

0 commit comments

Comments
 (0)