Skip to content

Commit 3c3f648

Browse files
committed
Add check for legacy content encryption.
1 parent 233ebbd commit 3c3f648

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/main/java/software/amazon/encryption/s3/S3EncryptionClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@ public class S3EncryptionClient implements S3Client {
3030

3131
private final S3Client _wrappedClient;
3232
private final CryptographicMaterialsManager _cryptoMaterialsManager;
33+
private final boolean _enableLegacyModes;
3334

3435
private S3EncryptionClient(Builder builder) {
3536
_wrappedClient = builder._wrappedClient;
3637
_cryptoMaterialsManager = builder._cryptoMaterialsManager;
37-
// TODO: store _enableLegacyModes and pass onto pipeline
38+
_enableLegacyModes = builder._enableLegacyModes;
3839
}
3940

4041
public static Builder builder() {
@@ -66,6 +67,7 @@ public <T> T getObject(GetObjectRequest getObjectRequest,
6667
GetEncryptedObjectPipeline pipeline = GetEncryptedObjectPipeline.builder()
6768
.s3Client(_wrappedClient)
6869
.cryptoMaterialsManager(_cryptoMaterialsManager)
70+
.enableLegacyModes(_enableLegacyModes)
6971
.build();
7072

7173
return pipeline.getObject(getObjectRequest, responseTransformer);

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,16 @@
2222

2323
public class GetEncryptedObjectPipeline {
2424

25-
final private S3Client _s3Client;
26-
final private CryptographicMaterialsManager _cryptoMaterialsManager;
25+
private final S3Client _s3Client;
26+
private final CryptographicMaterialsManager _cryptoMaterialsManager;
27+
private final boolean _enableLegacyModes;
2728

2829
public static Builder builder() { return new Builder(); }
2930

3031
private GetEncryptedObjectPipeline(Builder builder) {
3132
this._s3Client = builder._s3Client;
3233
this._cryptoMaterialsManager = builder._cryptoMaterialsManager;
34+
this._enableLegacyModes = builder._enableLegacyModes;
3335
}
3436

3537
public <T> T getObject(GetObjectRequest getObjectRequest,
@@ -47,6 +49,10 @@ public <T> T getObject(GetObjectRequest getObjectRequest,
4749
ContentMetadata contentMetadata = ContentMetadataStrategy.decode(_s3Client, getObjectRequest, getObjectResponse);
4850

4951
AlgorithmSuite algorithmSuite = contentMetadata.algorithmSuite();
52+
if (!_enableLegacyModes && algorithmSuite.isLegacy()) {
53+
throw new S3EncryptionClientException("Enable legacy modes to use legacy content encryption: " + algorithmSuite.cipherName());
54+
}
55+
5056
List<EncryptedDataKey> encryptedDataKeys = Collections.singletonList(contentMetadata.encryptedDataKey());
5157

5258
DecryptMaterialsRequest materialsRequest = DecryptMaterialsRequest.builder()
@@ -80,6 +86,7 @@ public <T> T getObject(GetObjectRequest getObjectRequest,
8086
public static class Builder {
8187
private S3Client _s3Client;
8288
private CryptographicMaterialsManager _cryptoMaterialsManager;
89+
private boolean _enableLegacyModes;
8390

8491
private Builder() {}
8592

@@ -93,6 +100,11 @@ public Builder cryptoMaterialsManager(CryptographicMaterialsManager cryptoMateri
93100
return this;
94101
}
95102

103+
public Builder enableLegacyModes(boolean enableLegacyModes) {
104+
this._enableLegacyModes = enableLegacyModes;
105+
return this;
106+
}
107+
96108
public GetEncryptedObjectPipeline build() {
97109
return new GetEncryptedObjectPipeline(this);
98110
}

0 commit comments

Comments
 (0)