plusplusjiajia opened a new pull request, #3082:
URL: https://github.com/apache/iceberg-rust/pull/3082

    ## Which issue does this PR close?
   
     Split out of [#2660](https://github.com/apache/iceberg-rust/pull/2660) so 
the signing can be reviewed on its own.
   
     ## What changes are included in this PR?
   
     `SigV4Signer` signs a `reqwest::Request` for AWS SigV4, built on the 
official `aws-sigv4` crate (already in the workspace lock via `aws-config`). It 
handles the parts Iceberg needs on top of the crate's defaults:
   
     - `PayloadHashMode::IcebergRest` puts a base64 checksum in 
`x-amz-content-sha256` while the canonical request hashes the body in hex, 
matching Java's `SignerChecksumParams`; `StandardAws` uses hex in both.
     - `Aws4Signer` defaults: path normalization and double URL-encoding.
     - `expect`, `connection` and `x-forwarded-for` are excluded from signing, 
as Java's `AbstractAws4Signer` does — a proxy may rewrite them.
     - A `+` in the query is rewritten to `%20` before signing, since verifiers 
disagree on whether it means a literal plus or a space and reqwest writes 
spaces as `+`.
   
     The auth manager that uses this, and its catalog wiring, follow in #2660.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to