BlobClientSideEncryptor
class BlobClientSideEncryptor
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Cryptography;
using Azure.Storage.Cryptography.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage.Blobs
{
internal class BlobClientSideEncryptor
{
private readonly IClientSideEncryptor _encryptor;
public BlobClientSideEncryptor(IClientSideEncryptor encryptor)
{
_encryptor = encryptor;
}
[AsyncStateMachine(typeof(<ClientSideEncryptInternal>d__2))]
public Task<(Stream NonSeekableCiphertext, IDictionary<string, string> Metadata)> ClientSideEncryptInternal(Stream content, IDictionary<string, string> metadata, bool async, CancellationToken cancellationToken)
{
<ClientSideEncryptInternal>d__2 stateMachine = default(<ClientSideEncryptInternal>d__2);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<(Stream, IDictionary<string, string>)>.Create();
stateMachine.<>4__this = this;
stateMachine.content = content;
stateMachine.metadata = metadata;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<ClientSideEncryptionOpenWriteInternal>d__3))]
public Task<Stream> ClientSideEncryptionOpenWriteInternal(BlockBlobClient blobClient, bool overwrite, BlockBlobOpenWriteOptions options, bool async, CancellationToken cancellationToken)
{
<ClientSideEncryptionOpenWriteInternal>d__3 stateMachine = default(<ClientSideEncryptionOpenWriteInternal>d__3);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Stream>.Create();
stateMachine.<>4__this = this;
stateMachine.blobClient = blobClient;
stateMachine.overwrite = overwrite;
stateMachine.options = options;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
private static IDictionary<string, string> TransformMetadata(IDictionary<string, string> metadata, EncryptionData encryptionData)
{
Dictionary<string, string> obj = (metadata == null) ? new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) : new Dictionary<string, string>(metadata, StringComparer.OrdinalIgnoreCase);
((IDictionary<string, string>)obj)["encryptiondata"] = EncryptionDataSerializer.Serialize(encryptionData);
return obj;
}
}
}