Как проверить подпись в XML-файле?C#

Место общения программистов C#
Anonymous
Как проверить подпись в XML-файле?

Сообщение Anonymous »

Я пытаюсь проверить подпись XML-файла. XML-файл представляет собой файл электронного счета, соответствующий стандартам UBL. Подпись в файле является лишь образцом. Это недействительно. Я просто хочу узнать отправную точку для проверки подписи.
Ссылка на файл счета
Я использовал следующий код и получил следующую ошибку.

Не удалось создать описание подписи для предоставленного алгоритма подписи.

private void Validate(string XmlFilePath)
{
//Create [Doc]
#region

var Doc = new XmlDocument();
Doc.PreserveWhitespace = true;
Doc.Load(XmlFilePath);

#endregion

//Create [Namespaces]
#region

var Namespaces = new XmlNamespaceManager(Doc.NameTable);

//IDictionary localNamespaces = null;
var Navigator = Doc.CreateNavigator();
while (Navigator.MoveToFollowing(XPathNodeType.Element))
{
var LocalNamespaces = Navigator.GetNamespacesInScope(XmlNamespaceScope.Local);
foreach (var localNamespace in LocalNamespaces)
{
var Prefix = localNamespace.Key;
if (string.IsNullOrEmpty(Prefix))
{
Prefix = "tst";
}

Namespaces.AddNamespace(Prefix, localNamespace.Value);
}
}

#endregion

//Get [Certificate_Base64]
var Certificate_Base64 = Doc.DocumentElement.SelectSingleNode("ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/ds:Signature/ds:KeyInfo/ds:X509Data/ds:X509Certificate", Namespaces).InnerText;

//Create [Certificate]
var Certificate = new X509Certificate2(Convert.FromBase64String(Certificate_Base64));

var SignedDoc = new SignedXml(Doc);
var Result = SignedDoc.CheckSignature(Certificate, true);
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-xml-file

Вернуться в «C#»