docs: clarify layered SSE-C key authentication

Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
Feng Ruohang
2026-08-29 18:21:13 +08:00
parent c4fd97d0bf
commit 8448512a1f
2 changed files with 6 additions and 7 deletions
+3 -3
View File
@@ -356,9 +356,9 @@ func rotateKey(ctx context.Context, oldKey []byte, newKeyID string, newKey []byt
}
// checkSSECCopySourceKey authenticates the SSE-C copy source key against the
// sealed object key held in metadata. GetObjectNInfo builds no decryptor for a
// zero byte object, so a copy whose data path never decrypts anything has to
// verify the source key explicitly. Mirrors the errors rotateKey reports.
// sealed object key held in metadata. This keeps the diverted rotation safe on
// its own and remains defense in depth when the read path also authenticates
// zero-byte objects. Mirrors the errors rotateKey reports.
func checkSSECCopySourceKey(h http.Header, metadata map[string]string, bucket, object string, newKey []byte) error {
oldKey, err := ParseSSECopyCustomerRequest(h, metadata)
if err != nil {
+3 -4
View File
@@ -508,10 +508,9 @@ func testAPICopyObjectSSECKeyRotationNullVersionWithCompression(obj ObjectLayer,
}
}
// TestAPICopyObjectSSECKeyRotationNullVersionWrongKey pins the source key
// authentication of the re-encrypting fallback. A zero byte source has no data
// to decrypt, so the copy would otherwise reach the destination write without
// ever proving the caller holds the current key.
// TestAPICopyObjectSSECKeyRotationNullVersionWrongKey pins source-key
// authentication in both the standalone rotation fix and the later zero-byte
// read hardening.
func TestAPICopyObjectSSECKeyRotationNullVersionWrongKey(t *testing.T) {
defer DetectTestLeak(t)()
ExecObjectLayerAPITest(ExecObjectLayerAPITestArgs{