* weed/s3api: prune calculatePartOffset() * weed/s3api: prune clearCachedListMetadata() * weed/s3api: prune S3ApiServer.isObjectRetentionActive() * weed/s3api: prune S3ApiServer.ensureDirectoryAllEmpty() * weed/s3api: prune s3ApiServer.getEncryptionTypeString() * weed/s3api: prune newStreamError() * weed/s3api: prune S3ApiServer.rotateSSECKey() weed/s3api: prune S3ApiServer.rotateSSEKMSKey() weed/s3api: prune S3ApiServer.rotateSSEKMSMetadataOnly() weed/s3api: prune S3ApiServer.rotateSSECChunks() weed/s3api: prune S3ApiServer.rotateSSEKMSChunks() weed/s3api: prune S3ApiServer.rotateSSECChunk() weed/s3api: prune S3ApiServer.rotateSSEKMSChunk() * weed/s3api: prune addCounterToIV() * weed/s3api: prune minInt() * weed/s3api: prune isMethodActionMismatch() * weed/s3api: prune hasSpecificQueryParameters() * weed/s3api: prune handlePutToFilerError() weed/s3api: prune handlePutToFilerInternalError() weed/s3api: prune logErrorAndReturn() weed/s3api: prune logInternalError weed/s3api: prune handleSSEError() weed/s3api: prune handleSSEInternalError() * weed/s3api: prune encryptionConfigToProto() * weed/s3api: prune S3ApiServer.touch()
31 lines
942 B
Go
31 lines
942 B
Go
package s3api
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
|
"github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
|
|
)
|
|
|
|
// IsSameObjectCopy determines if this is a same-object copy operation
|
|
func IsSameObjectCopy(r *http.Request, srcBucket, srcObject, dstBucket, dstObject string) bool {
|
|
return srcBucket == dstBucket && srcObject == dstObject
|
|
}
|
|
|
|
// NeedsKeyRotation determines if the copy operation requires key rotation
|
|
func NeedsKeyRotation(entry *filer_pb.Entry, r *http.Request) bool {
|
|
// Check for SSE-C key rotation
|
|
if IsSSECEncrypted(entry.Extended) && IsSSECRequest(r) {
|
|
return true // Assume different keys for safety
|
|
}
|
|
|
|
// Check for SSE-KMS key rotation
|
|
if IsSSEKMSEncrypted(entry.Extended) && IsSSEKMSRequest(r) {
|
|
srcKeyID, _ := GetSourceSSEKMSInfo(entry.Extended)
|
|
dstKeyID := r.Header.Get(s3_constants.AmzServerSideEncryptionAwsKmsKeyId)
|
|
return srcKeyID != dstKeyID
|
|
}
|
|
|
|
return false
|
|
}
|