Some checks failed
CI / lint (push) Successful in 1m37s
CI / test-python (push) Successful in 1m49s
CI / test-zig (push) Successful in 1m39s
CI / test-wasm (push) Successful in 1m54s
CI / test (push) Successful in 14m44s
CI / miri (push) Successful in 14m18s
CI / build (push) Successful in 1m9s
CI / fuzz-regression (push) Successful in 9m9s
CI / publish (push) Failing after 1m10s
CI / publish-python (push) Failing after 1m46s
CI / publish-wasm (push) Has been cancelled
Signed-off-by: Kamal Tufekcic <kamal@lo.sh>
20 lines
748 B
Rust
20 lines
748 B
Rust
#![no_main]
|
|
use libfuzzer_sys::fuzz_target;
|
|
use soliton::auth::auth_verify;
|
|
|
|
fuzz_target!(|data: &[u8]| {
|
|
// Feed adversarial 32-byte pairs to auth_verify. Confirms it never
|
|
// panics for any bit pattern and always returns a deterministic bool.
|
|
if data.len() < 64 {
|
|
return;
|
|
}
|
|
|
|
let expected: &[u8; 32] = data[..32].try_into().unwrap();
|
|
let proof: &[u8; 32] = data[32..64].try_into().unwrap();
|
|
let result = auth_verify(expected, proof);
|
|
|
|
// Correctness: auth_verify is constant-time equality. Verify it
|
|
// returns the correct answer — catches regressions where verify
|
|
// always returns true or always returns false.
|
|
assert_eq!(result, expected == proof, "auth_verify returned wrong result");
|
|
});
|