static private GenerateInstructions ( |
||
materials | /// The encryption materials to be used to encrypt and decrypt data. /// | |
Résultat |
/// <summary> /// Updates the request where the metadata contains encryption information /// and the input stream contains the encrypted object contents. /// </summary> /// <param name="putObjectRequest"> /// The request whose contents are to be encrypted. /// </param> private void GenerateEncryptedObjectRequestUsingMetadata(PutObjectRequest putObjectRequest) { // Create instruction EncryptionInstructions instructions = EncryptionUtils.GenerateInstructions(this.encryptionMaterials); EncryptionUtils.AddUnencryptedContentLengthToMetadata(putObjectRequest); // Encrypt the object data with the instruction putObjectRequest.InputStream = EncryptionUtils.EncryptRequestUsingInstruction(putObjectRequest.InputStream, instructions); // Update the metadata EncryptionUtils.UpdateMetadataWithEncryptionInstructions(putObjectRequest, instructions); }
/// <summary> /// Updates the request where the instruction file contains encryption information /// and the input stream contains the encrypted object contents. /// </summary> /// <param name="putObjectRequest"></param> private void GenerateEncryptedObjectRequestUsingInstructionFile(PutObjectRequest putObjectRequest) { // Create instruction EncryptionInstructions instructions = EncryptionUtils.GenerateInstructions(this.encryptionMaterials); EncryptionUtils.AddUnencryptedContentLengthToMetadata(putObjectRequest); // Encrypt the object data with the instruction putObjectRequest.InputStream = EncryptionUtils.EncryptRequestUsingInstruction(putObjectRequest.InputStream, instructions); // Create request for uploading instruction file PutObjectRequest instructionFileRequest = EncryptionUtils.CreateInstructionFileRequest(putObjectRequest, instructions); S3ClientForInstructionFile.PutObject(instructionFileRequest); }
/// <summary> /// Performs encryption for PutObject and MultiPartUpload, /// also adding encryption information to object metadata or /// instruction file /// </summary> /// <param name="request">AmazonWebServiceRequest on which encryption is performed </param> protected override void ProcessPreRequestHandlers(AmazonWebServiceRequest request) { base.ProcessPreRequestHandlers(request); var putObjectRequest = request as PutObjectRequest; if (putObjectRequest != null) { if (this.amazonS3CryptoConfig.StorageMode == CryptoStorageMode.InstructionFile) { GenerateEncryptedObjectRequestUsingInstructionFile(putObjectRequest); } else { GenerateEncryptedObjectRequestUsingMetadata(putObjectRequest); } } var initiateMultiPartRequest = request as InitiateMultipartUploadRequest; if (initiateMultiPartRequest != null) { EncryptionInstructions instructions = EncryptionUtils.GenerateInstructions(this.encryptionMaterials); if (this.amazonS3CryptoConfig.StorageMode == CryptoStorageMode.ObjectMetadata) { EncryptionUtils.UpdateMetadataWithEncryptionInstructions(initiateMultiPartRequest, instructions); } initiateMultiPartRequest.EnvelopeKey = instructions.EnvelopeKey; initiateMultiPartRequest.IV = instructions.InitializationVector; } var uploadPartRequest = request as UploadPartRequest; if (uploadPartRequest != null) { GenerateEncryptedUploadPartRequest(uploadPartRequest); } }