2222
2323public 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