19 lines
650 B
Rust
19 lines
650 B
Rust
#![no_main]
|
|
#![allow(deprecated)]
|
|
use libfuzzer_sys::fuzz_target;
|
|
use soliton::ratchet::RatchetState;
|
|
|
|
fuzz_target!(|data: &[u8]| {
|
|
// Deserialize adversarial state, then encrypt.
|
|
// Exercises: ChainExhausted guard,
|
|
// perform_kem_ratchet_send (keygen + encaps + kdf_root),
|
|
// kdf_msg_key, nonce construction, AAD building, AEAD encrypt,
|
|
// and the session-fatal zeroize path on AEAD failure.
|
|
let Ok(mut state) = RatchetState::from_bytes(data) else {
|
|
return;
|
|
};
|
|
|
|
// Fixed plaintext — fingerprints are stored in the deserialized state,
|
|
// not passed as parameters.
|
|
let _ = state.encrypt(b"fuzz");
|
|
});
|