Add migrated to .NET 8.0 variant of Hcs.Client
This commit is contained in:
50
Hcs.ClientNet/GostCryptography/Xml/GostKeyValue.cs
Normal file
50
Hcs.ClientNet/GostCryptography/Xml/GostKeyValue.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using GostCryptography.Base;
|
||||
using System.Security.Cryptography.Xml;
|
||||
using System.Xml;
|
||||
|
||||
namespace GostCryptography.Xml
|
||||
{
|
||||
/// <summary>
|
||||
/// Параметры открытого ключа цифровой подписи ГОСТ Р 34.10 элемента <see cref="KeyInfo"/>
|
||||
/// </summary>
|
||||
public abstract class GostKeyValue : KeyInfoClause
|
||||
{
|
||||
/// <summary>
|
||||
/// URI пространства имен для XML-подписи ГОСТ Р 34.10
|
||||
/// </summary>
|
||||
public const string XmlDsigNamespaceUrl = "urn:ietf:params:xml:ns:cpxmlsec";
|
||||
|
||||
/// <summary>
|
||||
/// Создает экземпляр класса с заданным публичным ключом
|
||||
/// </summary>
|
||||
protected GostKeyValue(GostAsymmetricAlgorithm publicKey)
|
||||
{
|
||||
PublicKey = publicKey;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Открытый ключ
|
||||
/// </summary>
|
||||
public GostAsymmetricAlgorithm PublicKey { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void LoadXml(XmlElement element)
|
||||
{
|
||||
if (element == null)
|
||||
{
|
||||
throw ExceptionUtility.ArgumentNull(nameof(element));
|
||||
}
|
||||
|
||||
PublicKey.FromXmlString(element.OuterXml);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override XmlElement GetXml()
|
||||
{
|
||||
var document = new XmlDocument { PreserveWhitespace = true };
|
||||
var element = document.CreateElement("KeyValue", SignedXml.XmlDsigNamespaceUrl);
|
||||
element.InnerXml = PublicKey.ToXmlString(false);
|
||||
return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user