internal static PutObjectRequest CreateInstructionFileRequestV2()

in src/EncryptionUtilsV2.cs [275:308]


        internal static PutObjectRequest CreateInstructionFileRequestV2(AmazonWebServiceRequest request, EncryptionInstructions instructions)
        {
            var keyBytesToStoreInInstructionFile = instructions.EncryptedEnvelopeKey;
            var base64EncodedEnvelopeKey = Convert.ToBase64String(keyBytesToStoreInInstructionFile);

            var ivToStoreInInstructionFile = instructions.InitializationVector;
            var base64EncodedIv = Convert.ToBase64String(ivToStoreInInstructionFile);

            var keyValuePairs = new Dictionary<string, string>()
            {
                {XAmzTagLen,  DefaultTagBitsLength.ToString()},
                {XAmzKeyV2,  base64EncodedEnvelopeKey},
                {XAmzCekAlg,  instructions.CekAlgorithm},
                {XAmzWrapAlg,  instructions.WrapAlgorithm},
                {XAmzIV,  base64EncodedIv},
                {XAmzMatDesc,  JsonUtils.ToJson(instructions.MaterialsDescription)},
            };

            var contentBody = JsonUtils.ToJson(keyValuePairs);

            var putObjectRequest = request as PutObjectRequest;
            if (putObjectRequest != null)
            {
                return GetInstructionFileRequest(putObjectRequest.BucketName, putObjectRequest.Key, EncryptionInstructionFileV2Suffix, contentBody);
            }

            var completeMultiPartRequest = request as CompleteMultipartUploadRequest;
            if (completeMultiPartRequest != null)
            {
                return GetInstructionFileRequest(completeMultiPartRequest.BucketName, completeMultiPartRequest.Key, EncryptionInstructionFileV2Suffix, contentBody);
            }

            return null;
        }