internal static void UpdateMetadataWithEncryptionInstructions(AmazonWebServiceRequest request, EncryptionInstructions instructions)
{
byte[] keyBytesToStoreInMetadata = instructions.EncryptedEnvelopeKey;
string base64EncodedEnvelopeKey = Convert.ToBase64String(keyBytesToStoreInMetadata);
byte[] IVToStoreInMetadata = instructions.InitializationVector;
string base64EncodedIV = Convert.ToBase64String(IVToStoreInMetadata);
var putObjectRequest = request as PutObjectRequest;
if (putObjectRequest != null)
{
MetadataCollection metadata = putObjectRequest.Metadata;
metadata.Add(keyInMetadata, base64EncodedEnvelopeKey);
metadata.Add(initVectorInMetadata, base64EncodedIV);
Dictionary<string, string> materialsDescription = instructions.MaterialsDescription;
if (materialsDescription.Count == 0)
metadata.Add(encryptionMaterialsDescription, "{}");
putObjectRequest.Metadata = metadata;
}
var initiateMultipartrequest = request as InitiateMultipartUploadRequest;
if (initiateMultipartrequest != null)
{
MetadataCollection metadata = initiateMultipartrequest.Metadata;
metadata.Add(keyInMetadata, base64EncodedEnvelopeKey);
metadata.Add(initVectorInMetadata, base64EncodedIV);
Dictionary<string, string> materialsDescription = instructions.MaterialsDescription;
if (materialsDescription.Count == 0)
metadata.Add(encryptionMaterialsDescription, "{}");
initiateMultipartrequest.Metadata = metadata;
}
}