in src/Internal/SetupDecryptionHandlerV2.cs [123:150]
protected override void UpdateMultipartUploadEncryptionContext(UploadPartRequest uploadPartRequest)
{
string uploadID = uploadPartRequest.UploadId;
UploadPartEncryptionContext encryptedUploadedContext = null;
if (!EncryptionClient.CurrentMultiPartUploadKeys.TryGetValue(uploadID, out encryptedUploadedContext))
throw new AmazonS3Exception("Encryption context for multipart upload not found");
if (!uploadPartRequest.IsLastPart)
{
object stream = null;
if (!((IAmazonWebServiceRequest) uploadPartRequest).RequestState.TryGetValue(Constants.S3CryptoStreamRequestState, out stream))
throw new AmazonS3Exception("Cannot retrieve S3 crypto stream from request state, hence cannot get Initialization vector for next uploadPart ");
var encryptionStream = stream as AESEncryptionUploadPartStream;
if (encryptionStream != null)
{
encryptedUploadedContext.NextIV = encryptionStream.InitializationVector;
}
var aesGcmEncryptStream = stream as AesGcmEncryptStream;
if (aesGcmEncryptStream != null)
{
encryptedUploadedContext.CryptoStream = aesGcmEncryptStream;
}
}
}