internal static PutObjectRequest CreateInstructionFileRequestV2()

in src/EncryptionUtilsV2.cs [283:316]


        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 jsonData = new JsonData
            {
                [XAmzTagLen] = DefaultTagBitsLength.ToString(),
                [XAmzKeyV2] = base64EncodedEnvelopeKey,
                [XAmzCekAlg] = instructions.CekAlgorithm,
                [XAmzWrapAlg] = instructions.WrapAlgorithm,
                [XAmzIV] = base64EncodedIv,
                [XAmzMatDesc] = JsonMapper.ToJson(instructions.MaterialsDescription)
            };

            var contentBody = jsonData.ToJson();

            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;
        }