Skip to content

Commit c38a07f

Browse files
committed
Fuzz EncodingKey and DecodingKey
1 parent ddd2389 commit c38a07f

9 files changed

Lines changed: 124 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,25 @@ jobs:
8484

8585
- name: Run tests no features
8686
run: wasm-pack test --node --no-default-features --features rust_crypto,getrandom/js
87+
88+
fuzz:
89+
name: Run fuzzer
90+
runs-on: ubuntu-latest
91+
strategy:
92+
matrix:
93+
include:
94+
- fuzz_target: decoding_key_ec
95+
- fuzz_target: decoding_key_ed
96+
- fuzz_target: decoding_key_rsa
97+
- fuzz_target: encoding_key_ec
98+
- fuzz_target: encoding_key_ed
99+
- fuzz_target: encoding_key_rsa
100+
steps:
101+
- uses: actions/checkout@v6
102+
- name: Install Rust
103+
uses: dtolnay/rust-toolchain@master
104+
with:
105+
toolchain: nightly
106+
- name: Install cargo-fuzz
107+
run: cargo install cargo-fuzz
108+
- run: cargo fuzz run ${{ matrix.fuzz_target }} -- --max_total_time=300

fuzz/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
target
2+
corpus
3+
artifacts
4+
coverage

fuzz/Cargo.toml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
[package]
2+
name = "jsonwebtoken-fuzz"
3+
version = "0.0.0"
4+
publish = false
5+
edition = "2024"
6+
7+
[package.metadata]
8+
cargo-fuzz = true
9+
10+
[dependencies]
11+
libfuzzer-sys = "0.4"
12+
13+
[dependencies.jsonwebtoken]
14+
path = ".."
15+
16+
[[bin]]
17+
name = "encoding_key_ec"
18+
path = "fuzz_targets/encoding_key_ec.rs"
19+
test = false
20+
doc = false
21+
bench = false
22+
23+
[[bin]]
24+
name = "encoding_key_ed"
25+
path = "fuzz_targets/encoding_key_ed.rs"
26+
test = false
27+
doc = false
28+
bench = false
29+
30+
[[bin]]
31+
name = "encoding_key_rsa"
32+
path = "fuzz_targets/encoding_key_rsa.rs"
33+
test = false
34+
doc = false
35+
bench = false
36+
37+
[[bin]]
38+
name = "decoding_key_ec"
39+
path = "fuzz_targets/decoding_key_ec.rs"
40+
test = false
41+
doc = false
42+
bench = false
43+
44+
[[bin]]
45+
name = "decoding_key_ed"
46+
path = "fuzz_targets/decoding_key_ed.rs"
47+
test = false
48+
doc = false
49+
bench = false
50+
51+
[[bin]]
52+
name = "decoding_key_rsa"
53+
path = "fuzz_targets/decoding_key_rsa.rs"
54+
test = false
55+
doc = false
56+
bench = false
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::DecodingKey::from_ec_pem(data);
7+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::DecodingKey::from_ed_pem(data);
7+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::DecodingKey::from_rsa_pem(data);
7+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::EncodingKey::from_ec_pem(data);
7+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::EncodingKey::from_ed_pem(data);
7+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let _ = jsonwebtoken::EncodingKey::from_rsa_pem(data);
7+
});

0 commit comments

Comments
 (0)