using Microsoft.Xades;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
namespace Hcs.GostXades.Abstractions
{
public interface ICryptoProvider
{
///
/// URI метода подписи
///
string SignatureMethod { get; }
///
/// URI метода хеширования
///
string DigestMethod { get; }
///
/// Получение реализации асимметричного алгоритма
///
/// Сертификат, исользуемый для подписания
/// Пароль от контейнера закрытого ключа
///
AsymmetricAlgorithm GetAsymmetricAlgorithm(X509Certificate2 certificate, string privateKeyPassword);
///
/// Получение Reference-элемента для XML-документа
///
/// Идентификатор подписываемого узла XML-документа
/// Идентификатор подписи
///
Reference GetReference(string signedElementId, string signatureId);
///
/// Получение форматтера, с помощью которого будет производиться подпись
///
/// Сертификат, с помощью которого будет производиться подпись
///
AsymmetricSignatureFormatter GetSignatureFormatter(X509Certificate2 certificate);
///
/// Получение реализации алгоритма хеширования по URI
///
/// URI метода хеширования
///
HashAlgorithm GetHashAlgorithm(string algorithm);
///
/// Получение объекта XadesObject
///
/// Информация о XAdES-подписи
/// Идентификатор подписи
///
XadesObject GetXadesObject(XadesInfo xadesInfo, string signatureId);
}
}