internal static PutObjectRequest CreateInstructionFileRequest(AmazonWebServiceRequest request, EncryptionInstructions instructions)
{
byte[] keyBytesToStoreInInstructionFile = instructions.EncryptedEnvelopeKey;
string base64EncodedEnvelopeKey = Convert.ToBase64String(keyBytesToStoreInInstructionFile);
byte[] IVToStoreInInstructionFile = instructions.InitializationVector;
string base64EncodedIV = Convert.ToBase64String(IVToStoreInInstructionFile);
JsonData jsonData = new JsonData();
jsonData["EncryptedEnvelopeKey"] = base64EncodedEnvelopeKey;
jsonData["IV"] = base64EncodedIV;
string credentials = jsonData.ToJson();
var putObjectRequest = request as PutObjectRequest;
if (putObjectRequest != null)
{
PutObjectRequest requestforInstructionFile = new PutObjectRequest()
{
BucketName = putObjectRequest.BucketName,
Key = putObjectRequest.Key + instructionfileSuffix,
ContentBody = credentials
};
requestforInstructionFile.Metadata.Add(instructionFileInfo, "");
return requestforInstructionFile;
}
var completeMultiPartRequest = request as CompleteMultipartUploadRequest;
if (completeMultiPartRequest != null)
{
PutObjectRequest requestforInstructionFile = new PutObjectRequest()
{
BucketName = completeMultiPartRequest.BucketName,
Key = completeMultiPartRequest.Key + instructionfileSuffix,
ContentBody = credentials
};
requestforInstructionFile.Metadata.Add(instructionFileInfo, "");
return requestforInstructionFile;
}
else
return null;
}