fix: CompleteMultipartUpload encryption (#626)

This commit is contained in:
Nugine
2025-10-08 20:27:40 +08:00
committed by GitHub
parent 0e680eae31
commit 626c7ed34a
3 changed files with 11 additions and 32 deletions
Generated
+5 -14
View File
@@ -4422,9 +4422,9 @@ checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0"
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.7.5" version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]] [[package]]
name = "memmap2" name = "memmap2"
@@ -4667,15 +4667,6 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "nugine-rust-utils"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04dcd9cfa92246a9c7ca0671e00733c4e9d77ee1fa0ae08c9a181b7c8802aea2"
dependencies = [
"simdutf8",
]
[[package]] [[package]]
name = "num" name = "num"
version = "0.4.3" version = "0.4.3"
@@ -7056,9 +7047,9 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]] [[package]]
name = "s3s" name = "s3s"
version = "0.12.0-rc.1" version = "0.12.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0c7ae94d88d3d0d4ab0cb3f8e106199832b2943609680b5d75b0d7f686f6be3" checksum = "6fbf35b8b229398629d8df8a0cb908a70a24da69f65911fe0461fba3f4e9dda5"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"async-trait", "async-trait",
@@ -7066,6 +7057,7 @@ dependencies = [
"base64-simd", "base64-simd",
"bytes", "bytes",
"bytestring", "bytestring",
"cfg-if",
"chrono", "chrono",
"const-str", "const-str",
"crc32c", "crc32c",
@@ -7084,7 +7076,6 @@ dependencies = [
"memchr", "memchr",
"mime", "mime",
"nom 7.1.3", "nom 7.1.3",
"nugine-rust-utils",
"numeric_cast", "numeric_cast",
"pin-project-lite", "pin-project-lite",
"quick-xml 0.37.5", "quick-xml 0.37.5",
+1 -1
View File
@@ -210,7 +210,7 @@ rustfs-rsc = "2025.506.1"
rustls = { version = "0.23.32", features = ["ring", "logging", "std", "tls12"], default-features = false } rustls = { version = "0.23.32", features = ["ring", "logging", "std", "tls12"], default-features = false }
rustls-pki-types = "1.12.0" rustls-pki-types = "1.12.0"
rustls-pemfile = "2.2.0" rustls-pemfile = "2.2.0"
s3s = { version = "0.12.0-rc.1", features = ["minio"] } s3s = { version = "0.12.0-rc.2", features = ["minio"] }
schemars = "1.0.4" schemars = "1.0.4"
serde = { version = "1.0.228", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
serde_json = { version = "1.0.145", features = ["raw_value"] } serde_json = { version = "1.0.145", features = ["raw_value"] }
@@ -388,23 +388,11 @@ async fn test_bucket_default_encryption_multipart_upload() -> Result<(), Box<dyn
complete_multipart_response.ssekms_key_id() complete_multipart_response.ssekms_key_id()
); );
// Verify: complete_multipart_upload response should contain encryption information assert_eq!(
// KNOWN BUG: s3s library bug where CompleteMultipartUploadOutput encryption fields serialize as None complete_multipart_response.server_side_encryption(),
// even when properly set. Our server implementation is correct (see server logs above). Some(&ServerSideEncryption::AwsKms),
// TODO: Remove this workaround when s3s library is fixed "complete_multipart_upload response should contain SSE-KMS encryption information"
warn!("KNOWN BUG: s3s library - complete_multipart_upload response encryption fields return None even when set"); );
if complete_multipart_response.server_side_encryption().is_some() {
// If s3s library is fixed, verify the encryption info
assert_eq!(
complete_multipart_response.server_side_encryption(),
Some(&ServerSideEncryption::AwsKms),
"complete_multipart_upload response should contain SSE-KMS encryption information"
);
} else {
// Expected behavior due to s3s library bug - log and continue
warn!("Skipping assertion due to known s3s library bug - server logs confirm correct encryption handling");
}
// Step 4: Download file and verify encryption status // Step 4: Download file and verify encryption status
info!("Downloading file and verifying encryption status"); info!("Downloading file and verifying encryption status");