Skip to content

Commit e629623

Browse files
committed
Add precise fuzzing workflow, where 2 impls are compared for results in fuzzing
1 parent 969c7bc commit e629623

File tree

18 files changed

+759
-15
lines changed

18 files changed

+759
-15
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ build/
33
/tests/failed_txs
44
/test-vector*
55

6+
/corpus*
7+
/hfuzz_target
8+
/hfuzz_workspace
69
/fuzzing/fuzzing_syscalls_all_in_one.h
710
/fuzzing/dumps
811
/fuzzing/corpus*

Cargo.lock

Lines changed: 98 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ members = [
1010
"crates/script-merge-tool",
1111
"tests/multisig-tests",
1212
"tests/nist-test-vector-tests",
13+
"tests/precise-fuzzing",
14+
"tests/precise-fuzzing/fuzz",
1315
"tests/sphincsplus_rust",
1416
"tests/validation-tests",
1517
"tools/ckb-sphincs-tools",

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ run:
7070
test:
7171
bash tests/sphincsplus/all_run.sh
7272
bash tests/sphincsplus_rust/all_run.sh
73+
bash tests/precise-fuzzing/ci.sh
7374
# Generating sphincs signatures takes a long time in certain configurations,
7475
# we will run the tests in release mode to speed things up
7576
cargo test $(CARGO_ARGS) --release -p validation-tests
@@ -102,6 +103,7 @@ cargo:
102103

103104
clean:
104105
rm -rf build contracts/*/build
106+
rm -rf hfuzz_target hfuzz_workspace corpus*
105107
cargo clean
106108

107109
TEMPLATE_TYPE := --git

tests/precise-fuzzing/Cargo.toml

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
[package]
2+
name = "precise-fuzzing"
3+
version = "0.1.0"
4+
edition = "2024"
5+
autobins = false
6+
7+
[[bin]]
8+
name = "corpus-generator"
9+
10+
[[bin]]
11+
name = "hfuzz-target"
12+
13+
[[bin]]
14+
name = "afl-target"
15+
16+
[features]
17+
default = ["sha2_128s"]
18+
19+
sha2_128f = [
20+
"ckb_sphincs_utils/sha2",
21+
"ckb_sphincs_utils/hash_128",
22+
"ckb_sphincs_utils/hash_options_f",
23+
"ckb_sphincs_utils/thashes_simple"
24+
]
25+
sha2_128s = [
26+
"ckb_sphincs_utils/sha2",
27+
"ckb_sphincs_utils/hash_128",
28+
"ckb_sphincs_utils/hash_options_s",
29+
"ckb_sphincs_utils/thashes_simple"
30+
]
31+
sha2_192f = [
32+
"ckb_sphincs_utils/sha2",
33+
"ckb_sphincs_utils/hash_192",
34+
"ckb_sphincs_utils/hash_options_f",
35+
"ckb_sphincs_utils/thashes_simple"
36+
]
37+
sha2_192s = [
38+
"ckb_sphincs_utils/sha2",
39+
"ckb_sphincs_utils/hash_192",
40+
"ckb_sphincs_utils/hash_options_s",
41+
"ckb_sphincs_utils/thashes_simple"
42+
]
43+
sha2_256f = [
44+
"ckb_sphincs_utils/sha2",
45+
"ckb_sphincs_utils/hash_256",
46+
"ckb_sphincs_utils/hash_options_f",
47+
"ckb_sphincs_utils/thashes_simple"
48+
]
49+
sha2_256s = [
50+
"ckb_sphincs_utils/sha2",
51+
"ckb_sphincs_utils/hash_256",
52+
"ckb_sphincs_utils/hash_options_s",
53+
"ckb_sphincs_utils/thashes_simple"
54+
]
55+
shake_128f = [
56+
"ckb_sphincs_utils/shake",
57+
"ckb_sphincs_utils/hash_128",
58+
"ckb_sphincs_utils/hash_options_f",
59+
"ckb_sphincs_utils/thashes_simple"
60+
]
61+
shake_128s = [
62+
"ckb_sphincs_utils/shake",
63+
"ckb_sphincs_utils/hash_128",
64+
"ckb_sphincs_utils/hash_options_s",
65+
"ckb_sphincs_utils/thashes_simple"
66+
]
67+
shake_192f = [
68+
"ckb_sphincs_utils/shake",
69+
"ckb_sphincs_utils/hash_192",
70+
"ckb_sphincs_utils/hash_options_f",
71+
"ckb_sphincs_utils/thashes_simple"
72+
]
73+
shake_192s = [
74+
"ckb_sphincs_utils/shake",
75+
"ckb_sphincs_utils/hash_192",
76+
"ckb_sphincs_utils/hash_options_s",
77+
"ckb_sphincs_utils/thashes_simple"
78+
]
79+
shake_256f = [
80+
"ckb_sphincs_utils/shake",
81+
"ckb_sphincs_utils/hash_256",
82+
"ckb_sphincs_utils/hash_options_f",
83+
"ckb_sphincs_utils/thashes_simple"
84+
]
85+
shake_256s = [
86+
"ckb_sphincs_utils/shake",
87+
"ckb_sphincs_utils/hash_256",
88+
"ckb_sphincs_utils/hash_options_s",
89+
"ckb_sphincs_utils/thashes_simple"
90+
]
91+
92+
[dependencies.ckb_sphincs_utils]
93+
path = "../../tools/ckb-sphincs-utils"
94+
default-features = false
95+
features = ["serialize_key"]
96+
97+
[dependencies.ckb-fips205-utils]
98+
path = "../../crates/ckb-fips205-utils"
99+
default-features = false
100+
features = ["message"]
101+
102+
[dependencies]
103+
fips205 = "0.4.1"
104+
clap = { version = "4.5.28", features = ["cargo", "derive"] }
105+
rand = "0.8.5"
106+
honggfuzz = "0.5"
107+
afl = "0.15.18"

0 commit comments

Comments
 (0)