Skip to content

Commit 7e3c89a

Browse files
Amazon S3 Encryption Client 4.0.0 Release -- 2025-12-17
## [4.0.0](v3.6.0...v4.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](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/java-v4-migration.html) * `builder()` method has been removed; use `builderV4()` instead * `builderV4()` now defaults to `commitmentPolicy` (REQUIRE_ENCRYPT_REQUIRE_DECRYPT) and `encryptionAlgorithm` (ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY) * Updated expectations for custom implementations of the `CryptographicMaterialsManager` interface. * Custom implementations of the interface's `getEncryptionMaterials` method MUST set the `AlgorithmSuite` field on the returned `EncryptionMaterials`. * The provided `DefaultCryptoMaterialsManager`'s `getEncryptionMaterials` method sets this field from the `AlgorithmSuite` provided in the `EncryptionMaterialsRequest`. * If the custom implementation wraps the provided `DefaultCryptoMaterialsManager.getEncryptionMaterials` method, it's likely that no code updates are required. The provided logic has been updated with this change. * Custom implementations of the interface's `decryptMaterials` method MUST set the `KeyCommitment` field on the returned `DecryptionMaterials`. * The provided `DefaultCryptoMaterialsManager`'s `decryptMaterials` method sets this field from the `KeyCommitment` provided in the `DecryptMaterialsRequest`. * If the custom implementation wraps the provided `DefaultCryptoMaterialsManager.decryptMaterials` method, it's likely that no code updates are required. The provided logic has been updated with this change. * Updated expectations for custom implementations of the `Keyring` interface. * Custom implementations of the interface's `onDecrypt` method MUST preserve the `KeyCommitment` field on the returned `DecryptionMaterials`. * The provided `S3Keyring`'s `onDecrypt` method (base class for all keyrings including `KmsKeyring`) preserves this field through the builder pattern when returning updated materials. * If the custom implementation wraps the provided `S3Keyring.onDecrypt` method 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. ### Features * Updates to the S3 Encryption Client ([#491](#491)) ([9d4523e](9d4523e)) ### Maintenance * update releaserc ([#492](#492)) ([d423d8d](d423d8d))
1 parent d423d8d commit 7e3c89a

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Changelog
22

3+
## [4.0.0](https://github.com/aws/aws-s3-encryption-client-java/compare/v3.6.0...v4.0.0) (2025-12-17)
4+
5+
### ⚠ BREAKING CHANGES
6+
7+
* The S3 Encryption Client now requires key committing algorithm suites by default.
8+
See migration guide from 3.x to 4.x: [link](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/java-v4-migration.html)
9+
10+
* `builder()` method has been removed; use `builderV4()` instead
11+
* `builderV4()` now defaults to `commitmentPolicy` (REQUIRE_ENCRYPT_REQUIRE_DECRYPT) and `encryptionAlgorithm` (ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY)
12+
13+
* Updated expectations for custom implementations of the `CryptographicMaterialsManager` interface.
14+
* Custom implementations of the interface's `getEncryptionMaterials` method MUST set the `AlgorithmSuite` field on the returned `EncryptionMaterials`.
15+
* The provided `DefaultCryptoMaterialsManager`'s `getEncryptionMaterials` method sets this field from the `AlgorithmSuite` provided in the `EncryptionMaterialsRequest`.
16+
* If the custom implementation wraps the provided `DefaultCryptoMaterialsManager.getEncryptionMaterials` method, it's likely that no code updates are required. The provided logic has been updated with this change.
17+
* Custom implementations of the interface's `decryptMaterials` method MUST set the `KeyCommitment` field on the returned `DecryptionMaterials`.
18+
* The provided `DefaultCryptoMaterialsManager`'s `decryptMaterials` method sets this field from the `KeyCommitment` provided in the `DecryptMaterialsRequest`.
19+
* If the custom implementation wraps the provided `DefaultCryptoMaterialsManager.decryptMaterials` method, it's likely that no code updates are required. The provided logic has been updated with this change.
20+
21+
* Updated expectations for custom implementations of the `Keyring` interface.
22+
* Custom implementations of the interface's `onDecrypt` method MUST preserve the `KeyCommitment` field on the returned `DecryptionMaterials`.
23+
* The provided `S3Keyring`'s `onDecrypt` method (base class for all keyrings including `KmsKeyring`) preserves this field through the builder pattern when returning updated materials.
24+
* If the custom implementation wraps the provided `S3Keyring.onDecrypt` method 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.
25+
26+
### Features
27+
28+
* Updates to the S3 Encryption Client ([#491](https://github.com/aws/aws-s3-encryption-client-java/issues/491)) ([9d4523e](https://github.com/aws/aws-s3-encryption-client-java/commit/9d4523edbbc249781b3b3b3f8868fad39c5673d5))
29+
30+
### Maintenance
31+
32+
* update releaserc ([#492](https://github.com/aws/aws-s3-encryption-client-java/issues/492)) ([d423d8d](https://github.com/aws/aws-s3-encryption-client-java/commit/d423d8d0f500c6fcc7adb703a1626d6e7d4c2e3d))
33+
334
## [3.6.0](https://github.com/aws/amazon-s3-encryption-client-java/compare/v3.5.0...v3.6.0) (2025-12-16)
435

536
### Features

migration_examples/v3-to-v4/v4/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<maven.compiler.target>8</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1919
<aws.sdk.version>2.31.14</aws.sdk.version>
20-
<s3ec.version>3.6.0</s3ec.version>
20+
<s3ec.version>4.0.0</s3ec.version>
2121
</properties>
2222

2323
<dependencies>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>software.amazon.encryption.s3</groupId>
88
<artifactId>amazon-s3-encryption-client-java</artifactId>
9-
<version>3.6.0</version>
9+
<version>4.0.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Amazon S3 Encryption Client</name>

src/main/java/software/amazon/encryption/s3/internal/ApiNameVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class ApiNameVersion {
2222
builder -> builder.addApiName(API_NAME);
2323

2424
public static final String NAME = "AmazonS3Encrypt";
25-
public static final String API_VERSION_UNKNOWN = "3-unknown";
25+
public static final String API_VERSION_UNKNOWN = "4-unknown";
2626

2727
public static ApiName apiNameWithVersion() {
2828
return ApiName.builder()

src/test/java/software/amazon/encryption/s3/internal/ApiNameVersionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
public class ApiNameVersionTest {
1111

1212
private final static String EXPECTED_API_NAME = "AmazonS3Encrypt";
13-
private final static String EXPECTED_API_MAJOR_VERSION = "3";
13+
private final static String EXPECTED_API_MAJOR_VERSION = "4";
1414

1515
@Test
1616
public void testApiNameWithVersion() {

0 commit comments

Comments
 (0)