#[must_use]
pub fn sign(secret: &str, timestamp: u64, body: &[u8]) -> String {
crate::verify::signature(secret.as_bytes(), ×tamp.to_string(), body)
}
#[must_use]
pub fn signed_headers(secret: &str, timestamp: u64, body: &[u8]) -> [(&'static str, String); 2] {
[
(crate::verify::TIMESTAMP_HEADER, timestamp.to_string()),
(
crate::verify::SIGNATURE_HEADER,
sign(secret, timestamp, body),
),
]
}
#[cfg(test)]
mod tests {
use super::*;
use crate::verify::Verifier;
#[test]
fn signed_headers_verify() {
let [(_, ts), (_, sig)] = signed_headers("k", 10, b"body");
let v = Verifier::new("k", &[], 300);
assert_eq!(v.verify(Some(&ts), Some(&sig), b"body", 10), Ok(()));
}
}