in src/EncryptionUtils.cs [501:535]
internal static void UpdateMetadataWithEncryptionInstructions(AmazonWebServiceRequest request, EncryptionInstructions instructions, bool useV2Metadata)
{
byte[] keyBytesToStoreInMetadata = instructions.EncryptedEnvelopeKey;
string base64EncodedEnvelopeKey = Convert.ToBase64String(keyBytesToStoreInMetadata);
byte[] IVToStoreInMetadata = instructions.InitializationVector;
string base64EncodedIV = Convert.ToBase64String(IVToStoreInMetadata);
MetadataCollection metadata = null;
var putObjectRequest = request as PutObjectRequest;
if (putObjectRequest != null)
metadata = putObjectRequest.Metadata;
var initiateMultipartrequest = request as InitiateMultipartUploadRequest;
if (initiateMultipartrequest != null)
metadata = initiateMultipartrequest.Metadata;
if (metadata != null)
{
if (useV2Metadata)
{
metadata.Add(XAmzKeyV2, base64EncodedEnvelopeKey);
metadata.Add(XAmzWrapAlg, instructions.WrapAlgorithm);
metadata.Add(XAmzCekAlg, instructions.CekAlgorithm);
}
else
{
metadata.Add(XAmzKey, base64EncodedEnvelopeKey);
}
metadata.Add(XAmzIV, base64EncodedIV);
metadata.Add(XAmzMatDesc, JsonUtils.ToJson(instructions.MaterialsDescription));
}
}