ClientSideEncryptionOptionsExtensions
namespace Azure.Storage.Cryptography
{
    internal static class ClientSideEncryptionOptionsExtensions
    {
        public static ClientSideEncryptionOptions Clone(this ClientSideEncryptionOptions options)
        {
            ClientSideEncryptionOptions val = new ClientSideEncryptionOptions(options.get_EncryptionVersion());
            CopyOptions(options, val);
            return val;
        }
        internal static void CopyOptions(ClientSideEncryptionOptions source, ClientSideEncryptionOptions destination)
        {
            destination.set_KeyEncryptionKey(source.get_KeyEncryptionKey());
            destination.set_KeyResolver(source.get_KeyResolver());
            destination.set_KeyWrapAlgorithm(source.get_KeyWrapAlgorithm());
        }
        public static IClientSideEncryptor GetClientSideEncryptor(this ClientSideEncryptionOptions options)
        {
            ClientSideEncryptionVersion encryptionVersion = options.get_EncryptionVersion();
            if ((int)encryptionVersion == 1)
                return new ClientSideEncryptorV1_0(options);
            if ((int)encryptionVersion != 2)
                throw Errors.ClientSideEncryption.ClientSideEncryptionVersionNotSupported(null);
            return new ClientSideEncryptorV2_0(options);
        }
    }
}