Changelog
4.0.0 (2025-12-17)
⚠ BREAKING CHANGES
-
The S3 Encryption Client now requires key committing algorithm suites by default.
See migration guide from 3.x to 4.x: link -
builder()method has been removed; usebuilderV4()instead -
builderV4()now defaults tocommitmentPolicy(REQUIRE_ENCRYPT_REQUIRE_DECRYPT) andencryptionAlgorithm(ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY) -
Updated expectations for custom implementations of the
CryptographicMaterialsManagerinterface.- Custom implementations of the interface's
getEncryptionMaterialsmethod MUST set theAlgorithmSuitefield on the returnedEncryptionMaterials.- The provided
DefaultCryptoMaterialsManager'sgetEncryptionMaterialsmethod sets this field from theAlgorithmSuiteprovided in theEncryptionMaterialsRequest. - If the custom implementation wraps the provided
DefaultCryptoMaterialsManager.getEncryptionMaterialsmethod, it's likely that no code updates are required. The provided logic has been updated with this change.
- The provided
- Custom implementations of the interface's
decryptMaterialsmethod MUST set theKeyCommitmentfield on the returnedDecryptionMaterials.- The provided
DefaultCryptoMaterialsManager'sdecryptMaterialsmethod sets this field from theKeyCommitmentprovided in theDecryptMaterialsRequest. - If the custom implementation wraps the provided
DefaultCryptoMaterialsManager.decryptMaterialsmethod, it's likely that no code updates are required. The provided logic has been updated with this change.
- The provided
- Custom implementations of the interface's
-
Updated expectations for custom implementations of the
Keyringinterface.- Custom implementations of the interface's
onDecryptmethod MUST preserve theKeyCommitmentfield on the returnedDecryptionMaterials.- The provided
S3Keyring'sonDecryptmethod (base class for all keyrings includingKmsKeyring) preserves this field through the builder pattern when returning updated materials. - If the custom implementation wraps the provided
S3Keyring.onDecryptmethod or uses the builder pattern to return materials, it's likely that no code updates are required. The provided logic has been updated with this change.
- The provided
- Custom implementations of the interface's