in src/Internal/SetupDecryptionHandlerV1.cs [145:166]
protected override void UpdateMultipartUploadEncryptionContext(UploadPartRequest uploadPartRequest)
{
string uploadID = uploadPartRequest.UploadId;
UploadPartEncryptionContext encryptedUploadedContext = null;
if (!this.EncryptionClient.CurrentMultiPartUploadKeys.TryGetValue(uploadID, out encryptedUploadedContext))
throw new AmazonS3Exception("Encryption context for multipart upload not found");
if (!uploadPartRequest.IsLastPart)
{
object stream = null;
if (!((Amazon.Runtime.Internal.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;
}
}
}