diff --git a/http-signature-normalization-warp/src/digest/mod.rs b/http-signature-normalization-warp/src/digest/mod.rs index 9ad7caa..edb4308 100644 --- a/http-signature-normalization-warp/src/digest/mod.rs +++ b/http-signature-normalization-warp/src/digest/mod.rs @@ -35,16 +35,13 @@ pub enum ParseDigestError { #[error("Could not parse request body")] pub struct ParseBodyError; -pub fn verify_digest_bytes( - verifier: impl Filter + Clone, -) -> impl Filter + Clone -where - D: DigestVerify + Send, -{ - verifier - .and(parse_digest_header()) +pub fn verify_digest_bytes( + verifier: impl DigestVerify + Clone + Send, +) -> impl Filter + Clone { + parse_digest_header() .and(body::bytes()) - .and_then(|mut verifier: D, parts: Vec, bytes: Bytes| { + .and_then(move |parts: Vec, bytes: Bytes| { + let mut verifier = verifier.clone(); async move { if verifier.verify(&parts, &bytes) { Ok(bytes) @@ -55,11 +52,10 @@ where }) } -pub fn verify_digest_json( - verifier: impl Filter + Clone, +pub fn verify_digest_json( + verifier: impl DigestVerify + Clone + Send ) -> impl Filter + Clone where - D: DigestVerify + Send, T: serde::de::DeserializeOwned, { verify_digest_bytes(verifier).and_then(|bytes: Bytes| { @@ -69,11 +65,10 @@ where }) } -pub fn verify_digest_form( - verifier: impl Filter + Clone, +pub fn verify_digest_form( + verifier: impl DigestVerify + Clone + Send, ) -> impl Filter + Clone where - D: DigestVerify + Send, T: serde::de::DeserializeOwned, { verify_digest_bytes(verifier).and_then(|bytes: Bytes| {