in src/main/java/software/amazon/encryption/s3/internal/MultipartUploadObjectPipeline.java [62:86]
public CreateMultipartUploadResponse createMultipartUpload(CreateMultipartUploadRequest request) {
EncryptionMaterialsRequest.Builder requestBuilder = EncryptionMaterialsRequest.builder()
.s3Request(request);
EncryptionMaterials materials = _cryptoMaterialsManager.getEncryptionMaterials(requestBuilder.build());
MultipartEncryptedContent encryptedContent = _contentEncryptionStrategy.initMultipartEncryption(materials);
Map<String, String> metadata = new HashMap<>(request.metadata());
metadata = _contentMetadataEncodingStrategy.encodeMetadata(materials, encryptedContent.getIv(), metadata);
request = request.toBuilder()
.overrideConfiguration(API_NAME_INTERCEPTOR)
.metadata(metadata).build();
CreateMultipartUploadResponse response = _s3AsyncClient.createMultipartUpload(request).join();
MultipartUploadMaterials mpuMaterials = MultipartUploadMaterials.builder()
.fromEncryptionMaterials(materials)
.cipher(encryptedContent.getCipher())
.build();
_multipartUploadMaterials.put(response.uploadId(), mpuMaterials);
return response;
}