From c1db1042ad8e06f0789550d46fd539946e8126e0 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 29 Sep 2020 16:46:49 +0200 Subject: [PATCH] Also sign the digest header --- lemmy_apub/src/extensions/signatures.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lemmy_apub/src/extensions/signatures.rs b/lemmy_apub/src/extensions/signatures.rs index 3ab42c8d1..dd5250685 100644 --- a/lemmy_apub/src/extensions/signatures.rs +++ b/lemmy_apub/src/extensions/signatures.rs @@ -27,13 +27,19 @@ lazy_static! { /// Signs request headers with the given keypair. pub async fn sign( client: &Client, - headers: BTreeMap, + mut headers: BTreeMap, url: &Url, activity: String, actor_id: &Url, private_key: String, ) -> Result { let signing_key_id = format!("{}#main-key", actor_id); + let digest = format!( + "{}={}", + Sha256::NAME, + Sha256::new().compute(activity.as_bytes()) + ); + headers.insert("Digest".into(), digest); let mut path_and_query = url.path().to_string(); if let Some(query) = url.query() { @@ -49,11 +55,6 @@ pub async fn sign( Ok(base64::encode(signer.sign_to_vec()?)) as Result<_, LemmyError> })? .signature_header(); - let digest = format!( - "{}={}", - Sha256::NAME, - Sha256::new().compute(activity.as_bytes()) - ); let mut header_map = HeaderMap::new(); for h in headers { @@ -66,7 +67,6 @@ pub async fn sign( .post(&url.to_string()) .headers(header_map) .header("Signature", signature_header_value) - .header("Digest", digest) .body(activity); Ok(signed_request.build()?)