mirror of https://github.com/minio/minio.git
set SSE headers in put-part response (#12008)
This commit fixes a bug in the put-part implementation. The SSE headers should be set as specified by AWS - See: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html Now, the MinIO server should set SSE-C headers, like `x-amz-server-side-encryption-customer-algorithm`. Fixes #11991
This commit is contained in:
parent
46964eb764
commit
404d2ebe3f
|
@ -2371,8 +2371,20 @@ func (api objectAPIHandlers) PutObjectPartHandler(w http.ResponseWriter, r *http
|
||||||
}
|
}
|
||||||
|
|
||||||
etag := partInfo.ETag
|
etag := partInfo.ETag
|
||||||
if isEncrypted {
|
switch kind, encrypted := crypto.IsEncrypted(mi.UserDefined); {
|
||||||
etag = tryDecryptETag(objectEncryptionKey[:], partInfo.ETag, crypto.SSEC.IsRequested(r.Header))
|
case encrypted:
|
||||||
|
switch kind {
|
||||||
|
case crypto.S3:
|
||||||
|
w.Header().Set(xhttp.AmzServerSideEncryption, xhttp.AmzEncryptionAES)
|
||||||
|
etag = tryDecryptETag(objectEncryptionKey[:], etag, false)
|
||||||
|
case crypto.SSEC:
|
||||||
|
w.Header().Set(xhttp.AmzServerSideEncryptionCustomerAlgorithm, r.Header.Get(xhttp.AmzServerSideEncryptionCustomerAlgorithm))
|
||||||
|
w.Header().Set(xhttp.AmzServerSideEncryptionCustomerKeyMD5, r.Header.Get(xhttp.AmzServerSideEncryptionCustomerKeyMD5))
|
||||||
|
|
||||||
|
if len(etag) >= 32 && strings.Count(etag, "-") != 1 {
|
||||||
|
etag = etag[len(etag)-32:]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We must not use the http.Header().Set method here because some (broken)
|
// We must not use the http.Header().Set method here because some (broken)
|
||||||
|
|
Loading…
Reference in New Issue