aboutsummaryrefslogtreecommitdiff
path: root/src/api/s3/api_server.rs
diff options
context:
space:
mode:
authorAlex Auvolat <lx@deuxfleurs.fr>2025-02-16 18:25:35 +0100
committerAlex Auvolat <lx@deuxfleurs.fr>2025-02-16 18:25:35 +0100
commit44a896f9b50680a1fdaeb6aaad18a6bf07e9f3c3 (patch)
tree78adb23edbfefcc378eb19ecbf4eb38564d28ed6 /src/api/s3/api_server.rs
parentcee7560fc1c3e885dc80dfee233211f54ac9db7d (diff)
downloadgarage-44a896f9b50680a1fdaeb6aaad18a6bf07e9f3c3.tar.gz
garage-44a896f9b50680a1fdaeb6aaad18a6bf07e9f3c3.zip
api: add logic to parse x-amz-content-sha256
Diffstat (limited to 'src/api/s3/api_server.rs')
-rw-r--r--src/api/s3/api_server.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/api/s3/api_server.rs b/src/api/s3/api_server.rs
index 14fd03c3..0fdaab70 100644
--- a/src/api/s3/api_server.rs
+++ b/src/api/s3/api_server.rs
@@ -15,7 +15,7 @@ use garage_model::key_table::Key;
use garage_api_common::cors::*;
use garage_api_common::generic_server::*;
use garage_api_common::helpers::*;
-use garage_api_common::signature::verify_request;
+use garage_api_common::signature::{verify_request, ContentSha256Header};
use crate::bucket::*;
use crate::copy::*;
@@ -121,7 +121,14 @@ impl ApiHandler for S3ApiServer {
return Ok(options_res.map(|_empty_body: EmptyBody| empty_body()));
}
- let (req, api_key, content_sha256) = verify_request(&garage, req, "s3").await?;
+ let verified_request = verify_request(&garage, req, "s3").await?;
+ let req = verified_request.request;
+ let api_key = verified_request.access_key;
+ let content_sha256 = match verified_request.content_sha256_header {
+ ContentSha256Header::Sha256Hash(h) => Some(h),
+ // TODO take into account streaming/trailer checksums, etc.
+ _ => None,
+ };
let bucket_name = match bucket_name {
None => {