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();
}
}