From 670dd5129d27da9664f65d44b72d0663b8ec4787 Mon Sep 17 00:00:00 2001 From: asonix Date: Mon, 28 Nov 2022 18:34:13 -0600 Subject: [PATCH] Move directories, fix http, clippy --- Cargo.toml | 10 ++-- .../Cargo.toml | 0 .../examples/server.rs | 0 .../src/lib.rs | 10 ++-- .../src/sha2_digest.rs | 0 .../Cargo.toml | 0 .../LICENSE | 0 .../README.md | 0 .../examples/client.rs | 0 .../examples/server.rs | 0 .../src/create.rs | 0 .../src/digest/middleware.rs | 0 .../src/digest/mod.rs | 0 .../src/digest/sha2.rs | 0 .../src/digest/sha3.rs | 0 .../src/digest/sign.rs | 0 .../src/lib.rs | 0 .../src/middleware.rs | 0 .../src/sign.rs | 0 .../Cargo.toml | 2 +- .../src/create.rs | 0 .../src/lib.rs | 50 +++++++++++++++---- .../Cargo.toml | 0 .../LICENSE | 0 .../README.md | 0 .../examples/client.rs | 0 .../src/digest/mod.rs | 0 .../src/digest/sha2.rs | 0 .../src/digest/sha3.rs | 0 .../src/lib.rs | 0 .../Cargo.toml | 0 .../src/digest/mod.rs | 0 .../src/digest/sha_2.rs | 0 .../src/lib.rs | 0 34 files changed, 50 insertions(+), 22 deletions(-) rename {http-signature-normalization-actix-extractor => actix-extractor}/Cargo.toml (100%) rename {http-signature-normalization-actix-extractor => actix-extractor}/examples/server.rs (100%) rename {http-signature-normalization-actix-extractor => actix-extractor}/src/lib.rs (96%) rename {http-signature-normalization-actix-extractor => actix-extractor}/src/sha2_digest.rs (100%) rename {http-signature-normalization-actix => actix}/Cargo.toml (100%) rename {http-signature-normalization-actix => actix}/LICENSE (100%) rename {http-signature-normalization-actix => actix}/README.md (100%) rename {http-signature-normalization-actix => actix}/examples/client.rs (100%) rename {http-signature-normalization-actix => actix}/examples/server.rs (100%) rename {http-signature-normalization-actix => actix}/src/create.rs (100%) rename {http-signature-normalization-actix => actix}/src/digest/middleware.rs (100%) rename {http-signature-normalization-actix => actix}/src/digest/mod.rs (100%) rename {http-signature-normalization-actix => actix}/src/digest/sha2.rs (100%) rename {http-signature-normalization-actix => actix}/src/digest/sha3.rs (100%) rename {http-signature-normalization-actix => actix}/src/digest/sign.rs (100%) rename {http-signature-normalization-actix => actix}/src/lib.rs (100%) rename {http-signature-normalization-actix => actix}/src/middleware.rs (100%) rename {http-signature-normalization-actix => actix}/src/sign.rs (100%) rename {http-signature-normalization-http => http}/Cargo.toml (96%) rename {http-signature-normalization-http => http}/src/create.rs (100%) rename {http-signature-normalization-http => http}/src/lib.rs (73%) rename {http-signature-normalization-reqwest => reqwest}/Cargo.toml (100%) rename {http-signature-normalization-reqwest => reqwest}/LICENSE (100%) rename {http-signature-normalization-reqwest => reqwest}/README.md (100%) rename {http-signature-normalization-reqwest => reqwest}/examples/client.rs (100%) rename {http-signature-normalization-reqwest => reqwest}/src/digest/mod.rs (100%) rename {http-signature-normalization-reqwest => reqwest}/src/digest/sha2.rs (100%) rename {http-signature-normalization-reqwest => reqwest}/src/digest/sha3.rs (100%) rename {http-signature-normalization-reqwest => reqwest}/src/lib.rs (100%) rename {http-signature-normalization-warp => warp}/Cargo.toml (100%) rename {http-signature-normalization-warp => warp}/src/digest/mod.rs (100%) rename {http-signature-normalization-warp => warp}/src/digest/sha_2.rs (100%) rename {http-signature-normalization-warp => warp}/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index fb00d70..90cd49f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,11 +13,11 @@ edition = "2021" [workspace] members = [ - "http-signature-normalization-actix", - "http-signature-normalization-actix-extractor", - "http-signature-normalization-http", - "http-signature-normalization-reqwest", - # "http-signature-normalization-warp", + "actix", + "actix-extractor", + "http", + "reqwest", + # "warp", ] [dependencies] diff --git a/http-signature-normalization-actix-extractor/Cargo.toml b/actix-extractor/Cargo.toml similarity index 100% rename from http-signature-normalization-actix-extractor/Cargo.toml rename to actix-extractor/Cargo.toml diff --git a/http-signature-normalization-actix-extractor/examples/server.rs b/actix-extractor/examples/server.rs similarity index 100% rename from http-signature-normalization-actix-extractor/examples/server.rs rename to actix-extractor/examples/server.rs diff --git a/http-signature-normalization-actix-extractor/src/lib.rs b/actix-extractor/src/lib.rs similarity index 96% rename from http-signature-normalization-actix-extractor/src/lib.rs rename to actix-extractor/src/lib.rs index 1832cd5..e2ef602 100644 --- a/http-signature-normalization-actix-extractor/src/lib.rs +++ b/actix-extractor/src/lib.rs @@ -178,9 +178,7 @@ where .map_err(Into::into)?; let digest_parts = if D::REQUIRED { - req.headers() - .get("digest") - .and_then(|digest| parse_digest(digest)) + req.headers().get("digest").and_then(parse_digest) } else { None }; @@ -214,10 +212,8 @@ where return Err(Error::Signature.into()); } - if D::REQUIRED { - if !digest_verifier.verify(digest_parts.as_deref().unwrap_or(&[])) { - return Err(Error::Digest.into()); - } + if D::REQUIRED && !digest_verifier.verify(digest_parts.as_deref().unwrap_or(&[])) { + return Err(Error::Digest.into()); } let signature = Signature { diff --git a/http-signature-normalization-actix-extractor/src/sha2_digest.rs b/actix-extractor/src/sha2_digest.rs similarity index 100% rename from http-signature-normalization-actix-extractor/src/sha2_digest.rs rename to actix-extractor/src/sha2_digest.rs diff --git a/http-signature-normalization-actix/Cargo.toml b/actix/Cargo.toml similarity index 100% rename from http-signature-normalization-actix/Cargo.toml rename to actix/Cargo.toml diff --git a/http-signature-normalization-actix/LICENSE b/actix/LICENSE similarity index 100% rename from http-signature-normalization-actix/LICENSE rename to actix/LICENSE diff --git a/http-signature-normalization-actix/README.md b/actix/README.md similarity index 100% rename from http-signature-normalization-actix/README.md rename to actix/README.md diff --git a/http-signature-normalization-actix/examples/client.rs b/actix/examples/client.rs similarity index 100% rename from http-signature-normalization-actix/examples/client.rs rename to actix/examples/client.rs diff --git a/http-signature-normalization-actix/examples/server.rs b/actix/examples/server.rs similarity index 100% rename from http-signature-normalization-actix/examples/server.rs rename to actix/examples/server.rs diff --git a/http-signature-normalization-actix/src/create.rs b/actix/src/create.rs similarity index 100% rename from http-signature-normalization-actix/src/create.rs rename to actix/src/create.rs diff --git a/http-signature-normalization-actix/src/digest/middleware.rs b/actix/src/digest/middleware.rs similarity index 100% rename from http-signature-normalization-actix/src/digest/middleware.rs rename to actix/src/digest/middleware.rs diff --git a/http-signature-normalization-actix/src/digest/mod.rs b/actix/src/digest/mod.rs similarity index 100% rename from http-signature-normalization-actix/src/digest/mod.rs rename to actix/src/digest/mod.rs diff --git a/http-signature-normalization-actix/src/digest/sha2.rs b/actix/src/digest/sha2.rs similarity index 100% rename from http-signature-normalization-actix/src/digest/sha2.rs rename to actix/src/digest/sha2.rs diff --git a/http-signature-normalization-actix/src/digest/sha3.rs b/actix/src/digest/sha3.rs similarity index 100% rename from http-signature-normalization-actix/src/digest/sha3.rs rename to actix/src/digest/sha3.rs diff --git a/http-signature-normalization-actix/src/digest/sign.rs b/actix/src/digest/sign.rs similarity index 100% rename from http-signature-normalization-actix/src/digest/sign.rs rename to actix/src/digest/sign.rs diff --git a/http-signature-normalization-actix/src/lib.rs b/actix/src/lib.rs similarity index 100% rename from http-signature-normalization-actix/src/lib.rs rename to actix/src/lib.rs diff --git a/http-signature-normalization-actix/src/middleware.rs b/actix/src/middleware.rs similarity index 100% rename from http-signature-normalization-actix/src/middleware.rs rename to actix/src/middleware.rs diff --git a/http-signature-normalization-actix/src/sign.rs b/actix/src/sign.rs similarity index 100% rename from http-signature-normalization-actix/src/sign.rs rename to actix/src/sign.rs diff --git a/http-signature-normalization-http/Cargo.toml b/http/Cargo.toml similarity index 96% rename from http-signature-normalization-http/Cargo.toml rename to http/Cargo.toml index 0de81fe..01cecb1 100644 --- a/http-signature-normalization-http/Cargo.toml +++ b/http/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "http-signature-normalization-http" description = "An HTTP Signatures library that leaves the signing to you" -version = "0.4.0" +version = "0.5.0" authors = ["asonix "] license-file = "../LICENSE" readme = "../README.md" diff --git a/http-signature-normalization-http/src/create.rs b/http/src/create.rs similarity index 100% rename from http-signature-normalization-http/src/create.rs rename to http/src/create.rs diff --git a/http-signature-normalization-http/src/lib.rs b/http/src/lib.rs similarity index 73% rename from http-signature-normalization-http/src/lib.rs rename to http/src/lib.rs index eaea6ae..61ca203 100644 --- a/http-signature-normalization-http/src/lib.rs +++ b/http/src/lib.rs @@ -57,6 +57,15 @@ pub enum PrepareVerifyError { Header(ToStrError), } +#[derive(Debug)] +/// Errors produced when preparing to sign an Http Signature +pub enum PrepareSignError { + /// There was an error in the underlying library + Required(http_signature_normalization::RequiredError), + /// There was an error producing a String from the HeaderValue + Header(ToStrError), +} + impl Config { /// Begin the process of signing a request /// @@ -66,7 +75,7 @@ impl Config { method: &Method, path_and_query: Option<&PathAndQuery>, headers: HeaderMap, - ) -> Result { + ) -> Result { let headers = headers .iter() .map(|(k, v)| v.to_str().map(|v| (k.to_string(), v.to_string()))) @@ -74,11 +83,11 @@ impl Config { let path_and_query = path_and_query .map(|p| p.to_string()) - .unwrap_or(String::from("/")); + .unwrap_or_else(|| String::from("/")); let unsigned = self .config - .begin_sign(&method.to_string(), &path_and_query, headers); + .begin_sign(method.as_ref(), &path_and_query, headers)?; Ok(Unsigned { unsigned }) } @@ -99,11 +108,11 @@ impl Config { let path_and_query = path_and_query .map(|p| p.to_string()) - .unwrap_or(String::from("/")); + .unwrap_or_else(|| String::from("/")); let unverified = self .config - .begin_verify(&method.to_string(), &path_and_query, headers)?; + .begin_verify(method.as_ref(), &path_and_query, headers)?; Ok(unverified) } @@ -118,14 +127,16 @@ impl fmt::Display for PrepareVerifyError { } } -impl Error for PrepareVerifyError { - fn description(&self) -> &str { +impl fmt::Display for PrepareSignError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { - PrepareVerifyError::Sig(ref e) => e.description(), - PrepareVerifyError::Header(ref e) => e.description(), + PrepareSignError::Required(ref e) => write!(f, "Required error, {}", e), + PrepareSignError::Header(ref e) => write!(f, "Header error, {}", e), } } +} +impl Error for PrepareVerifyError { fn source(&self) -> Option<&(dyn Error + 'static)> { match *self { PrepareVerifyError::Sig(ref e) => Some(e), @@ -134,6 +145,15 @@ impl Error for PrepareVerifyError { } } +impl Error for PrepareSignError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + match *self { + PrepareSignError::Required(ref e) => Some(e), + PrepareSignError::Header(ref e) => Some(e), + } + } +} + impl From for PrepareVerifyError { fn from(e: http_signature_normalization::PrepareVerifyError) -> Self { PrepareVerifyError::Sig(e) @@ -145,3 +165,15 @@ impl From for PrepareVerifyError { PrepareVerifyError::Header(e) } } + +impl From for PrepareSignError { + fn from(e: http_signature_normalization::RequiredError) -> Self { + PrepareSignError::Required(e) + } +} + +impl From for PrepareSignError { + fn from(e: ToStrError) -> Self { + PrepareSignError::Header(e) + } +} diff --git a/http-signature-normalization-reqwest/Cargo.toml b/reqwest/Cargo.toml similarity index 100% rename from http-signature-normalization-reqwest/Cargo.toml rename to reqwest/Cargo.toml diff --git a/http-signature-normalization-reqwest/LICENSE b/reqwest/LICENSE similarity index 100% rename from http-signature-normalization-reqwest/LICENSE rename to reqwest/LICENSE diff --git a/http-signature-normalization-reqwest/README.md b/reqwest/README.md similarity index 100% rename from http-signature-normalization-reqwest/README.md rename to reqwest/README.md diff --git a/http-signature-normalization-reqwest/examples/client.rs b/reqwest/examples/client.rs similarity index 100% rename from http-signature-normalization-reqwest/examples/client.rs rename to reqwest/examples/client.rs diff --git a/http-signature-normalization-reqwest/src/digest/mod.rs b/reqwest/src/digest/mod.rs similarity index 100% rename from http-signature-normalization-reqwest/src/digest/mod.rs rename to reqwest/src/digest/mod.rs diff --git a/http-signature-normalization-reqwest/src/digest/sha2.rs b/reqwest/src/digest/sha2.rs similarity index 100% rename from http-signature-normalization-reqwest/src/digest/sha2.rs rename to reqwest/src/digest/sha2.rs diff --git a/http-signature-normalization-reqwest/src/digest/sha3.rs b/reqwest/src/digest/sha3.rs similarity index 100% rename from http-signature-normalization-reqwest/src/digest/sha3.rs rename to reqwest/src/digest/sha3.rs diff --git a/http-signature-normalization-reqwest/src/lib.rs b/reqwest/src/lib.rs similarity index 100% rename from http-signature-normalization-reqwest/src/lib.rs rename to reqwest/src/lib.rs diff --git a/http-signature-normalization-warp/Cargo.toml b/warp/Cargo.toml similarity index 100% rename from http-signature-normalization-warp/Cargo.toml rename to warp/Cargo.toml diff --git a/http-signature-normalization-warp/src/digest/mod.rs b/warp/src/digest/mod.rs similarity index 100% rename from http-signature-normalization-warp/src/digest/mod.rs rename to warp/src/digest/mod.rs diff --git a/http-signature-normalization-warp/src/digest/sha_2.rs b/warp/src/digest/sha_2.rs similarity index 100% rename from http-signature-normalization-warp/src/digest/sha_2.rs rename to warp/src/digest/sha_2.rs diff --git a/http-signature-normalization-warp/src/lib.rs b/warp/src/lib.rs similarity index 100% rename from http-signature-normalization-warp/src/lib.rs rename to warp/src/lib.rs