private async Task <string> Decrypt(IEnumerable <byte> encryptedData, SymmetricAlgorithm symmetricAlgorithm)
 {
     return(await DisposableHelper
            .UseAsync(async (decryptor) => await Decrypt(decryptor, encryptedData),
                      () => symmetricAlgorithm.CreateDecryptor()).ConfigureAwait(false));
 }
 private async Task <IEnumerable <byte> > Encrypt(string value, SymmetricAlgorithm symmetricAlgorithm)
 {
     return(await DisposableHelper.UseAsync(async (encryptor) => await Encrypt(encryptor, value),
                                            () => symmetricAlgorithm.CreateEncryptor()).ConfigureAwait(false));
 }
 private async Task <T> CreateSymmetricAlgorithm <T>(ICryptographicCredentials cryptographicCredentials, Func <SymmetricAlgorithm, Task <T> > action)
 {
     return(await DisposableHelper.UseAsync(async (symmetricAlgorithm) => await action(symmetricAlgorithm),
                                            () => CreateSymmetricAlgorithm(cryptographicCredentials)).ConfigureAwait(false));;
 }