diff --git a/weed/s3api/s3api_object_handlers_put.go b/weed/s3api/s3api_object_handlers_put.go index 99394b4aa..b3738f1ec 100644 --- a/weed/s3api/s3api_object_handlers_put.go +++ b/weed/s3api/s3api_object_handlers_put.go @@ -402,9 +402,10 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader } // Add SSE metadata to all chunks if present - if customerKey != nil { - // SSE-C: Create per-chunk metadata (matches filer logic) - for _, chunk := range chunkResult.FileChunks { + for _, chunk := range chunkResult.FileChunks { + switch { + case customerKey != nil: + // SSE-C: Create per-chunk metadata (matches filer logic) chunk.SseType = filer_pb.SSEType_SSE_C if len(sseIV) > 0 { // PartOffset tracks position within the encrypted stream @@ -427,11 +428,9 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader chunk.SseMetadata = ssecMetadata } } - } - } else if sseKMSKey != nil { - // SSE-KMS: Create per-chunk metadata with chunk-specific offsets - // Each chunk needs its own metadata with ChunkOffset set for proper IV calculation during decryption - for _, chunk := range chunkResult.FileChunks { + case sseKMSKey != nil: + // SSE-KMS: Create per-chunk metadata with chunk-specific offsets + // Each chunk needs its own metadata with ChunkOffset set for proper IV calculation during decryption chunk.SseType = filer_pb.SSEType_SSE_KMS // Create a copy of the SSE-KMS key with chunk-specific offset @@ -450,11 +449,9 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader } else { glog.Errorf("Failed to serialize SSE-KMS metadata for chunk at offset %d: %v", chunk.Offset, serErr) } - } - } else if sseS3Key != nil { - // SSE-S3: Create per-chunk metadata with chunk-specific IVs - // Each chunk needs its own IV calculated from the base IV + chunk offset - for _, chunk := range chunkResult.FileChunks { + case sseS3Key != nil: + // SSE-S3: Create per-chunk metadata with chunk-specific IVs + // Each chunk needs its own IV calculated from the base IV + chunk offset chunk.SseType = filer_pb.SSEType_SSE_S3 // Calculate chunk-specific IV using base IV and chunk offset