Add migrated to .NET 8.0 variant of Hcs.Client

This commit is contained in:
2025-09-26 19:48:32 +09:00
parent da127df8f6
commit 6cd2fb82e9
503 changed files with 223796 additions and 0 deletions

View File

@ -0,0 +1,72 @@
using GostXades.Abstractions;
using GostXades.Helpers;
using System;
namespace GostXades
{
public class GostXadesBesService : IXadesService
{
CryptoProviderTypeEnum cryptoProviderType;
public GostXadesBesService(CryptoProviderTypeEnum cryptoProviderType)
{
this.cryptoProviderType = cryptoProviderType;
}
public void ValidateSignature(string xmlData, string elementId)
{
if (string.IsNullOrEmpty(xmlData))
{
throw new ArgumentNullException(nameof(xmlData));
}
if (string.IsNullOrWhiteSpace(elementId))
{
throw new ArgumentNullException(nameof(elementId));
}
var document = XmlDocumentHelper.Create(xmlData);
var signedXml = new XadesBesSignedXml(document, elementId)
{
CertificateMatcher = new CertificateMatcher(new GostCryptoProvider(this.cryptoProviderType))
};
signedXml.Validate();
}
public string Sign(string xmlData, string elementId, string certificateThumbprint, string certificatePassword)
{
if (string.IsNullOrEmpty(xmlData))
{
throw new ArgumentNullException(nameof(xmlData));
}
if (string.IsNullOrEmpty(elementId))
{
throw new ArgumentNullException(nameof(elementId));
}
if (string.IsNullOrEmpty(certificateThumbprint))
{
throw new ArgumentNullException(nameof(certificateThumbprint));
}
var originalDoc = XmlDocumentHelper.Create(xmlData);
var certificate = CertificateHelper.GetCertificateByThumbprint(certificateThumbprint);
var provider = new GostCryptoProvider(this.cryptoProviderType);
var xadesSignedXml = new XadesBesSignedXml(originalDoc)
{
SignedElementId = elementId,
CryptoProvider = provider
};
var element = xadesSignedXml.FindElement(elementId, originalDoc);
if (element == null)
{
throw new InvalidOperationException($"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> c Id {elementId}");
}
xadesSignedXml.ComputeSignature(certificate, certificatePassword);
xadesSignedXml.InjectSignatureTo(originalDoc);
return originalDoc.OuterXml;
}
}
}