Also sign the digest header

This commit is contained in:
Felix Ableitner 2020-09-29 16:46:49 +02:00
parent 0aa0ea19fb
commit c1db1042ad

View file

@ -27,13 +27,19 @@ lazy_static! {
/// Signs request headers with the given keypair. /// Signs request headers with the given keypair.
pub async fn sign( pub async fn sign(
client: &Client, client: &Client,
headers: BTreeMap<String, String>, mut headers: BTreeMap<String, String>,
url: &Url, url: &Url,
activity: String, activity: String,
actor_id: &Url, actor_id: &Url,
private_key: String, private_key: String,
) -> Result<Request, LemmyError> { ) -> Result<Request, LemmyError> {
let signing_key_id = format!("{}#main-key", actor_id); 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(); let mut path_and_query = url.path().to_string();
if let Some(query) = url.query() { if let Some(query) = url.query() {
@ -49,11 +55,6 @@ pub async fn sign(
Ok(base64::encode(signer.sign_to_vec()?)) as Result<_, LemmyError> Ok(base64::encode(signer.sign_to_vec()?)) as Result<_, LemmyError>
})? })?
.signature_header(); .signature_header();
let digest = format!(
"{}={}",
Sha256::NAME,
Sha256::new().compute(activity.as_bytes())
);
let mut header_map = HeaderMap::new(); let mut header_map = HeaderMap::new();
for h in headers { for h in headers {
@ -66,7 +67,6 @@ pub async fn sign(
.post(&url.to_string()) .post(&url.to_string())
.headers(header_map) .headers(header_map)
.header("Signature", signature_header_value) .header("Signature", signature_header_value)
.header("Digest", digest)
.body(activity); .body(activity);
Ok(signed_request.build()?) Ok(signed_request.build()?)