buzzrelay/src/digest.rs

21 lines
639 B
Rust
Raw Permalink Normal View History

2023-05-14 20:44:26 +00:00
use http_digest_headers::{DigestHeader, DigestMethod};
pub fn generate_header(body: &[u8]) -> Result<String, ()> {
let mut digest_header = DigestHeader::new()
.with_method(DigestMethod::SHA256, body)
2024-03-27 20:39:40 +00:00
.map(|h| format!("{h}"))
2023-05-14 20:44:26 +00:00
.map_err(|_| ())?;
// mastodon expects uppercase algo name
if digest_header.starts_with("sha-") {
digest_header.replace_range(..4, "SHA-");
}
// mastodon uses base64::alphabet::STANDARD, not base64::alphabet::URL_SAFE
digest_header.replace_range(
7..,
&digest_header[7..].replace('-', "+").replace('_', "/")
);
Ok(digest_header)
}