in src/main/java/software/amazon/encryption/s3/materials/KmsKeyring.java [88:109]
public EncryptionMaterials modifyMaterials(EncryptionMaterials materials) {
S3Request s3Request = materials.s3Request();
Map<String, String> encryptionContext = new HashMap<>(materials.encryptionContext());
if (s3Request.overrideConfiguration().isPresent()) {
AwsRequestOverrideConfiguration overrideConfig = s3Request.overrideConfiguration().get();
Optional<Map<String, String>> optEncryptionContext = overrideConfig
.executionAttributes()
.getOptionalAttribute(S3EncryptionClient.ENCRYPTION_CONTEXT);
optEncryptionContext.ifPresent(encryptionContext::putAll);
}
if (encryptionContext.containsKey(ENCRYPTION_CONTEXT_ALGORITHM_KEY)) {
throw new S3EncryptionClientException(ENCRYPTION_CONTEXT_ALGORITHM_KEY + " is a reserved key for the S3 encryption client");
}
encryptionContext.put(ENCRYPTION_CONTEXT_ALGORITHM_KEY, materials.algorithmSuite().cipherName());
return materials.toBuilder()
.encryptionContext(encryptionContext)
.build();
}