Я пытаюсь проверить подпись 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