fix: try using again the new lib?

This commit is contained in:
əlemi 2024-04-13 03:09:47 +02:00
parent 3a48e91655
commit 855434ee12
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -46,13 +46,13 @@ impl Fetcher {
.header("Date", date.clone()); .header("Date", date.clone());
let mut signature_cfg = Config::new().mastodon_compat(); let mut signature_cfg = Config::new().mastodon_compat();
let mut to_sign_raw = format!("(request-target): post {path}\nhost: {host}\ndate: {date}"); // let mut to_sign_raw = format!("(request-target): post {path}\nhost: {host}\ndate: {date}");
let mut headers_to_inspect = "(request-target) host date"; // let mut headers_to_inspect = "(request-target) host date";
if let Some(payload) = payload { if let Some(payload) = payload {
let digest = format!("sha-256={}", base64::prelude::BASE64_STANDARD.encode(openssl::sha::sha256(payload.as_bytes()))); let digest = format!("sha-256={}", base64::prelude::BASE64_STANDARD.encode(openssl::sha::sha256(payload.as_bytes())));
to_sign_raw = format!("(request-target): post {path}\nhost: {host}\ndate: {date}\ndigest: {digest}"); // to_sign_raw = format!("(request-target): post {path}\nhost: {host}\ndate: {date}\ndigest: {digest}");
headers_to_inspect = "(request-target) host date digest"; // headers_to_inspect = "(request-target) host date digest";
headers.insert("Digest".to_string(), digest.clone()); headers.insert("Digest".to_string(), digest.clone());
signature_cfg = signature_cfg.require_header("digest"); signature_cfg = signature_cfg.require_header("digest");
client = client client = client
@ -60,11 +60,11 @@ impl Fetcher {
.body(payload.to_string()); .body(payload.to_string());
} }
let signature_header_lib = signature_cfg let signature_header = signature_cfg
.begin_sign("POST", &path, headers) .begin_sign("POST", &path, headers)
.unwrap() .unwrap()
.sign(format!("{from}#main-key"), |to_sign| { .sign(format!("{from}#main-key"), |to_sign| {
tracing::info!("signature string:\nlib>> {to_sign}\nraw>> {to_sign_raw}"); // tracing::info!("signature string:\nlib>> {to_sign}\nraw>> {to_sign_raw}");
let mut signer = Signer::new(MessageDigest::sha256(), key)?; let mut signer = Signer::new(MessageDigest::sha256(), key)?;
signer.update(to_sign.as_bytes())?; signer.update(to_sign.as_bytes())?;
let signature = base64::prelude::BASE64_URL_SAFE.encode(signer.sign_to_vec()?); let signature = base64::prelude::BASE64_URL_SAFE.encode(signer.sign_to_vec()?);
@ -74,14 +74,14 @@ impl Fetcher {
.signature_header() .signature_header()
.replace("hs2019", "rsa-sha256"); // TODO what the fuck??? why isn't this customizable??? .replace("hs2019", "rsa-sha256"); // TODO what the fuck??? why isn't this customizable???
let signature_header = { // let signature_header = {
let mut signer = Signer::new(MessageDigest::sha256(), key).unwrap(); // let mut signer = Signer::new(MessageDigest::sha256(), key).unwrap();
signer.update(to_sign_raw.as_bytes()).unwrap(); // signer.update(to_sign_raw.as_bytes()).unwrap();
let signature = base64::prelude::BASE64_STANDARD.encode(signer.sign_to_vec().unwrap()); // let signature = base64::prelude::BASE64_STANDARD.encode(signer.sign_to_vec().unwrap());
format!("keyId=\"{from}#main-key\",algorithm=\"rsa-sha256\",headers=\"{headers_to_inspect}\",signature=\"{signature}\"") // format!("keyId=\"{from}#main-key\",algorithm=\"rsa-sha256\",headers=\"{headers_to_inspect}\",signature=\"{signature}\"")
}; // };
tracing::info!("signature headers:\nlib>> {signature_header_lib}\nraw>> {signature_header}"); // tracing::info!("signature headers:\nlib>> {signature_header_lib}\nraw>> {signature_header}");
client client
.header("Signature", signature_header) .header("Signature", signature_header)