using System.Security.Cryptography; namespace GostCryptography.Base { /// /// Базовый класс для всех асимметричных алгоритмов ГОСТ /// public abstract class GostAsymmetricAlgorithm : AsymmetricAlgorithm, IGostAlgorithm { /// /// Конструктор /// /// Тип криптографического провайдера /// Размер ключа в битах protected GostAsymmetricAlgorithm(ProviderType providerType, int keySize) { ProviderType = providerType; KeySizeValue = keySize; LegalKeySizesValue = new[] { new KeySizes(keySize, keySize, 0) }; } /// public ProviderType ProviderType { get; } /// public abstract string AlgorithmName { get; } /// /// Вычисляет цифровую подпись /// public abstract byte[] CreateSignature(byte[] hash); /// /// Проверяет цифровую подпись /// public abstract bool VerifySignature(byte[] hash, byte[] signature); /// /// Создает экземпляр /// public abstract GostHashAlgorithm CreateHashAlgorithm(); /// /// Создает экземпляр /// /// public abstract GostKeyExchangeFormatter CreateKeyExchangeFormatter(); /// /// Создает экземпляр /// public abstract GostKeyExchangeDeformatter CreateKeyExchangeDeformatter(); } }