use agentmail::{
DEFAULT_WEBHOOK_TOLERANCE, SignatureError, verify_webhook_signature, verify_webhook_timestamp,
};
fn main() {
let secret = format!("whsec_{}", "MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw");
let svix_id = "msg_p5jXN8AQM9LWM0D4loKWxJek";
let svix_timestamp = "1614265330";
let svix_signature = "v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE=";
let body = br#"{"test": 2432232314}"#;
match verify_webhook_signature(&secret, svix_id, svix_timestamp, svix_signature, body) {
Ok(()) => println!("signature: OK"),
Err(SignatureError::Mismatch) => {
eprintln!("signature mismatch: reject the delivery");
std::process::exit(1);
}
Err(e) => {
eprintln!("cannot verify: {e}");
std::process::exit(1);
}
}
match verify_webhook_timestamp(svix_timestamp, DEFAULT_WEBHOOK_TOLERANCE) {
Ok(()) => println!("timestamp: fresh"),
Err(_) => println!("timestamp: stale (expected for the fixed test vector)"),
}
println!("webhook: verified, ready to handle the event");
}