Add project

Basic formatting applied. Unnecessary comments have been removed. Suspicious code is covered by TODO.
This commit is contained in:
2025-08-12 11:21:10 +09:00
parent bbcbe841a7
commit 33ab055b43
546 changed files with 176950 additions and 0 deletions

View 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;
}
}
}