Loading crates/s3s/src/ops/mod.rs +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ use crate::http::{Request, Response}; use crate::path::{ParseS3PathError, S3Path}; use crate::s3_trait::S3; use crate::sig_v4; use crate::sig_v4::PresignedUrl; use crate::sig_v4::PresignedUrlV4; use crate::sig_v4::{AmzContentSha256, AmzDate}; use crate::sig_v4::{AuthorizationV4, CredentialV4}; use crate::stream::aggregate_unlimited; Loading Loading @@ -361,7 +361,7 @@ impl SignatureContext<'_> { async fn check_presigned_url(&mut self) -> S3Result<()> { let qs = self.qs.unwrap(); // assume: qs has "X-Amz-Signature" let presigned_url = PresignedUrl::parse(qs).map_err(|err| invalid_request!(err, "missing presigned fields"))?; let presigned_url = PresignedUrlV4::parse(qs).map_err(|err| invalid_request!(err, "missing presigned fields"))?; // ASK: how to use it? let _content_sha256: Option<AmzContentSha256<'_>> = extract_amz_content_sha256(&self.headers)?; Loading crates/s3s/src/sig_v4/methods.rs +2 −2 Original line number Diff line number Diff line Loading @@ -394,7 +394,7 @@ mod tests { use crate::http::OrderedHeaders; use crate::http::OrderedQs; use crate::sig_v4::PresignedUrl; use crate::sig_v4::PresignedUrlV4; #[test] fn example_get_object() { Loading Loading @@ -759,7 +759,7 @@ mod tests { let qs = OrderedQs::from_vec_unchecked(query_strings.iter().map(|&(n, v)| (n.to_owned(), v.to_owned())).collect()); let info = PresignedUrl::parse(&qs).unwrap(); let info = PresignedUrlV4::parse(&qs).unwrap(); let canonical_request = create_presigned_canonical_request(&method, uri.path(), query_strings, &headers); Loading crates/s3s/src/sig_v4/mod.rs +5 −2 Original line number Diff line number Diff line Loading @@ -5,8 +5,8 @@ //! See <https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html> //! mod presigned_url; pub use self::presigned_url::*; mod presigned_url_v4; pub use self::presigned_url_v4::*; mod authorization_v4; pub use self::authorization_v4::*; Loading @@ -17,5 +17,8 @@ pub use self::amz_content_sha256::*; mod amz_date; pub use self::amz_date::*; mod post_signature; pub use self::post_signature::*; mod methods; pub use self::methods::*; crates/s3s/src/sig_v4/post_signature.rs 0 → 100644 +26 −0 Original line number Diff line number Diff line use crate::http::Multipart; pub struct PostSignatureInfo<'a> { pub policy: &'a str, pub x_amz_algorithm: &'a str, pub x_amz_credential: &'a str, pub x_amz_date: &'a str, pub x_amz_signature: &'a str, } impl<'a> PostSignatureInfo<'a> { pub fn extract(m: &'a Multipart) -> Option<Self> { let policy = m.find_field_value("policy")?; let x_amz_algorithm = m.find_field_value("x-amz-algorithm")?; let x_amz_credential = m.find_field_value("x-amz-credential")?; let x_amz_date = m.find_field_value("x-amz-date")?; let x_amz_signature = m.find_field_value("x-amz-signature")?; Some(Self { policy, x_amz_algorithm, x_amz_credential, x_amz_date, x_amz_signature, }) } } crates/s3s/src/sig_v4/presigned_url.rs→crates/s3s/src/sig_v4/presigned_url_v4.rs +3 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ use smallvec::SmallVec; /// Presigned url information #[derive(Debug)] pub struct PresignedUrl<'a> { pub struct PresignedUrlV4<'a> { /// algorithm pub algorithm: &'a str, /// credential Loading @@ -25,7 +25,7 @@ pub struct PresignedUrl<'a> { pub signature: &'a str, } /// [`PresignedUrl`] /// [`PresignedUrlV4`] #[derive(Debug, thiserror::Error)] #[error("ParsePresignedUrlError")] pub struct ParsePresignedUrlError { Loading Loading @@ -63,7 +63,7 @@ impl<'a> PresignedQs<'a> { } } impl<'a> PresignedUrl<'a> { impl<'a> PresignedUrlV4<'a> { /// Parses `PresignedUrl` from query /// /// # Errors Loading Loading
crates/s3s/src/ops/mod.rs +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ use crate::http::{Request, Response}; use crate::path::{ParseS3PathError, S3Path}; use crate::s3_trait::S3; use crate::sig_v4; use crate::sig_v4::PresignedUrl; use crate::sig_v4::PresignedUrlV4; use crate::sig_v4::{AmzContentSha256, AmzDate}; use crate::sig_v4::{AuthorizationV4, CredentialV4}; use crate::stream::aggregate_unlimited; Loading Loading @@ -361,7 +361,7 @@ impl SignatureContext<'_> { async fn check_presigned_url(&mut self) -> S3Result<()> { let qs = self.qs.unwrap(); // assume: qs has "X-Amz-Signature" let presigned_url = PresignedUrl::parse(qs).map_err(|err| invalid_request!(err, "missing presigned fields"))?; let presigned_url = PresignedUrlV4::parse(qs).map_err(|err| invalid_request!(err, "missing presigned fields"))?; // ASK: how to use it? let _content_sha256: Option<AmzContentSha256<'_>> = extract_amz_content_sha256(&self.headers)?; Loading
crates/s3s/src/sig_v4/methods.rs +2 −2 Original line number Diff line number Diff line Loading @@ -394,7 +394,7 @@ mod tests { use crate::http::OrderedHeaders; use crate::http::OrderedQs; use crate::sig_v4::PresignedUrl; use crate::sig_v4::PresignedUrlV4; #[test] fn example_get_object() { Loading Loading @@ -759,7 +759,7 @@ mod tests { let qs = OrderedQs::from_vec_unchecked(query_strings.iter().map(|&(n, v)| (n.to_owned(), v.to_owned())).collect()); let info = PresignedUrl::parse(&qs).unwrap(); let info = PresignedUrlV4::parse(&qs).unwrap(); let canonical_request = create_presigned_canonical_request(&method, uri.path(), query_strings, &headers); Loading
crates/s3s/src/sig_v4/mod.rs +5 −2 Original line number Diff line number Diff line Loading @@ -5,8 +5,8 @@ //! See <https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html> //! mod presigned_url; pub use self::presigned_url::*; mod presigned_url_v4; pub use self::presigned_url_v4::*; mod authorization_v4; pub use self::authorization_v4::*; Loading @@ -17,5 +17,8 @@ pub use self::amz_content_sha256::*; mod amz_date; pub use self::amz_date::*; mod post_signature; pub use self::post_signature::*; mod methods; pub use self::methods::*;
crates/s3s/src/sig_v4/post_signature.rs 0 → 100644 +26 −0 Original line number Diff line number Diff line use crate::http::Multipart; pub struct PostSignatureInfo<'a> { pub policy: &'a str, pub x_amz_algorithm: &'a str, pub x_amz_credential: &'a str, pub x_amz_date: &'a str, pub x_amz_signature: &'a str, } impl<'a> PostSignatureInfo<'a> { pub fn extract(m: &'a Multipart) -> Option<Self> { let policy = m.find_field_value("policy")?; let x_amz_algorithm = m.find_field_value("x-amz-algorithm")?; let x_amz_credential = m.find_field_value("x-amz-credential")?; let x_amz_date = m.find_field_value("x-amz-date")?; let x_amz_signature = m.find_field_value("x-amz-signature")?; Some(Self { policy, x_amz_algorithm, x_amz_credential, x_amz_date, x_amz_signature, }) } }
crates/s3s/src/sig_v4/presigned_url.rs→crates/s3s/src/sig_v4/presigned_url_v4.rs +3 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ use smallvec::SmallVec; /// Presigned url information #[derive(Debug)] pub struct PresignedUrl<'a> { pub struct PresignedUrlV4<'a> { /// algorithm pub algorithm: &'a str, /// credential Loading @@ -25,7 +25,7 @@ pub struct PresignedUrl<'a> { pub signature: &'a str, } /// [`PresignedUrl`] /// [`PresignedUrlV4`] #[derive(Debug, thiserror::Error)] #[error("ParsePresignedUrlError")] pub struct ParsePresignedUrlError { Loading Loading @@ -63,7 +63,7 @@ impl<'a> PresignedQs<'a> { } } impl<'a> PresignedUrl<'a> { impl<'a> PresignedUrlV4<'a> { /// Parses `PresignedUrl` from query /// /// # Errors Loading