Add project
Basic formatting applied. Unnecessary comments have been removed. Suspicious code is covered by TODO.
This commit is contained in:
18
Hcs.Client/GostXades/Abstractions/ICertificateMatcher.cs
Normal file
18
Hcs.Client/GostXades/Abstractions/ICertificateMatcher.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using Microsoft.Xades;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace Hcs.GostXades.Abstractions
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XML <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public interface ICertificateMatcher
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="signedXml"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xml <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <returns></returns>
|
||||
X509Certificate2 GetSignatureCertificate(XadesSignedXml signedXml);
|
||||
}
|
||||
}
|
||||
58
Hcs.Client/GostXades/Abstractions/ICryptoProvider.cs
Normal file
58
Hcs.Client/GostXades/Abstractions/ICryptoProvider.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using Microsoft.Xades;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Security.Cryptography.Xml;
|
||||
|
||||
namespace Hcs.GostXades.Abstractions
|
||||
{
|
||||
public interface ICryptoProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// URI метода подписи
|
||||
/// </summary>
|
||||
string SignatureMethod { get; }
|
||||
|
||||
/// <summary>
|
||||
/// URI метода хеширования
|
||||
/// </summary>
|
||||
string DigestMethod { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получение реализации асимметричного алгоритма
|
||||
/// </summary>
|
||||
/// <param name="certificate">Сертификат, исользуемый для подписания</param>
|
||||
/// <param name="privateKeyPassword">Пароль от контейнера закрытого ключа</param>
|
||||
/// <returns></returns>
|
||||
AsymmetricAlgorithm GetAsymmetricAlgorithm(X509Certificate2 certificate, string privateKeyPassword);
|
||||
|
||||
/// <summary>
|
||||
/// Получение Reference-элемента для XML-документа
|
||||
/// </summary>
|
||||
/// <param name="signedElementId">Идентификатор подписываемого узла XML-документа</param>
|
||||
/// <param name="signatureId">Идентификатор подписи</param>
|
||||
/// <returns></returns>
|
||||
Reference GetReference(string signedElementId, string signatureId);
|
||||
|
||||
/// <summary>
|
||||
/// Получение форматтера, с помощью которого будет производиться подпись
|
||||
/// </summary>
|
||||
/// <param name="certificate">Сертификат, с помощью которого будет производиться подпись</param>
|
||||
/// <returns></returns>
|
||||
AsymmetricSignatureFormatter GetSignatureFormatter(X509Certificate2 certificate);
|
||||
|
||||
/// <summary>
|
||||
/// Получение реализации алгоритма хеширования по URI
|
||||
/// </summary>
|
||||
/// <param name="algorithm">URI метода хеширования</param>
|
||||
/// <returns></returns>
|
||||
HashAlgorithm GetHashAlgorithm(string algorithm);
|
||||
|
||||
/// <summary>
|
||||
/// Получение объекта XadesObject
|
||||
/// </summary>
|
||||
/// <param name="xadesInfo">Информация о XAdES-подписи</param>
|
||||
/// <param name="signatureId">Идентификатор подписи</param>
|
||||
/// <returns></returns>
|
||||
XadesObject GetXadesObject(XadesInfo xadesInfo, string signatureId);
|
||||
}
|
||||
}
|
||||
16
Hcs.Client/GostXades/Abstractions/IIssuerComparer.cs
Normal file
16
Hcs.Client/GostXades/Abstractions/IIssuerComparer.cs
Normal file
@ -0,0 +1,16 @@
|
||||
namespace Hcs.GostXades.Abstractions
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public interface IIssuerComparer
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (X509IssuerName)
|
||||
/// </summary>
|
||||
/// <param name="first"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="second"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <returns>true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, false <20><><EFBFBD><EFBFBD><EFBFBD></returns>
|
||||
bool AreSameIssuer(string first, string second);
|
||||
}
|
||||
}
|
||||
23
Hcs.Client/GostXades/Abstractions/IXadesService.cs
Normal file
23
Hcs.Client/GostXades/Abstractions/IXadesService.cs
Normal file
@ -0,0 +1,23 @@
|
||||
namespace Hcs.GostXades.Abstractions
|
||||
{
|
||||
public interface IXadesService
|
||||
{
|
||||
/// <summary>
|
||||
/// Валидация XAdES подписи.
|
||||
/// Бросает исключение, если подпись не верна.
|
||||
/// </summary>
|
||||
/// <param name="xmlData"></param>
|
||||
/// <param name="elementId"></param>
|
||||
void ValidateSignature(string xmlData, string elementId);
|
||||
|
||||
/// <summary>
|
||||
/// Подпись XML-документа с помощью XAdES подписи
|
||||
/// </summary>
|
||||
/// <param name="xmlData">XML-документ, который необходимо подписать</param>
|
||||
/// <param name="elementId">Значение атрибута Id узла XML-документа, который необходимо подписать</param>
|
||||
/// <param name="certificateThumbprint">Отпечаток сертификата, который необходимо использовать для подписи</param>
|
||||
/// <param name="certificatePassword">Пароль от контейнера закрытого ключа используемого сертификата</param>
|
||||
/// <returns>Подписанный XML-документ</returns>
|
||||
string Sign(string xmlData, string elementId, string certificateThumbprint, string certificatePassword);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user