mirror of
https://git.asonix.dog/asonix/http-signature-normalization.git
synced 2024-05-20 04:28:06 +00:00
31 lines
769 B
Rust
31 lines
769 B
Rust
use super::{DigestPart, DigestVerify};
|
|
use sha2::Digest;
|
|
|
|
fn verify<D>(verifier: &mut D, parts: &[DigestPart], payload: &[u8], name: &str) -> bool
|
|
where
|
|
D: Digest,
|
|
{
|
|
let part = if let Some(part) = parts.iter().find(|p| p.algorithm == name) {
|
|
part
|
|
} else {
|
|
return false;
|
|
};
|
|
|
|
verifier.input(payload);
|
|
let computed = base64::encode(&verifier.result_reset());
|
|
|
|
computed == part.digest
|
|
}
|
|
|
|
impl DigestVerify for sha2::Sha256 {
|
|
fn verify(&mut self, digests: &[DigestPart], payload: &[u8]) -> bool {
|
|
verify(self, digests, payload, "sha-256")
|
|
}
|
|
}
|
|
|
|
impl DigestVerify for sha2::Sha512 {
|
|
fn verify(&mut self, digests: &[DigestPart], payload: &[u8]) -> bool {
|
|
verify(self, digests, payload, "sha-512")
|
|
}
|
|
}
|