api: add logic to parse x-amz-content-sha256

This commit is contained in:
Alex Auvolat
2025-02-16 18:25:35 +01:00
parent cee7560fc1
commit 44a896f9b5
8 changed files with 138 additions and 72 deletions
+9 -2
View File
@@ -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 => {