using GostCryptography.Base; using System.Security.Cryptography.Xml; using System.Xml; namespace GostCryptography.Xml { /// /// Параметры открытого ключа цифровой подписи ГОСТ Р 34.10 элемента /// public abstract class GostKeyValue : KeyInfoClause { /// /// URI пространства имен для XML-подписи ГОСТ Р 34.10 /// public const string XmlDsigNamespaceUrl = "urn:ietf:params:xml:ns:cpxmlsec"; /// /// Создает экземпляр класса с заданным публичным ключом /// protected GostKeyValue(GostAsymmetricAlgorithm publicKey) { PublicKey = publicKey; } /// /// Открытый ключ /// public GostAsymmetricAlgorithm PublicKey { get; set; } /// public override void LoadXml(XmlElement element) { if (element == null) { throw ExceptionUtility.ArgumentNull(nameof(element)); } PublicKey.FromXmlString(element.OuterXml); } /// public override XmlElement GetXml() { var document = new XmlDocument { PreserveWhitespace = true }; var element = document.CreateElement("KeyValue", SignedXml.XmlDsigNamespaceUrl); element.InnerXml = PublicKey.ToXmlString(false); return element; } } }