Я занимаюсь разработкой этого консольного приложения в течение примерно 2-3 месяцев.
Чего я пытаюсь добиться с помощью консольного приложения, это сгенерировать файлы данных и подписать файлы в " подпись. xml "файл. Он работает, используя несколько пользовательских методов для подписи (без использования ключа Regedit).
Однако, когда количество ссылок превышает 99, он отказывается подписывать и выдает ошибку «Malformed SignedInfo / Reference ..» , Хотя раньше это сработало, и эта ошибка никогда не появлялась.
Я пробовал поискать и искать решения, но безрезультатно подписать более двадцати ссылок. Обратите внимание, что в файле сигнатуры нет синтаксической ошибки или опечатки, она генерируется точно так же, как это было, когда он находится под 100 ссылками на файл.
Также нет плохих ха * Сгенерировано 1018 * файлов, так что я действительно понятия не имею, что пошло не так. Не обнаружено исключений при получении ha sh и путей к файлам сгенерированных файлов, которые должны быть подписаны.
Я надеюсь, что сообщество сможет помочь: (
Фрагмент код:
private static byte[] GetC14NDigest(XmlDocument xmlDocument, HashAlgorithm hash)
{
try
{
byte[] digestedSignedInfo;
XmlDocument containingDocument = xmlDocument;
XmlElement context = xmlDocument.DocumentElement;
XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");
SignedXml signedXml = new SignedXml();
signedXml.LoadXml((XmlElement)nodeList[0]);
string baseUri = (containingDocument == null ? null : containingDocument.BaseURI);
XmlResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), baseUri);
XmlDocument doc = PreProcessElementInput(signedXml.SignedInfo.GetXml(), revolver, baseUri);
Transform c14nMethodTransform = signedXml.SignedInfo.CanonicalizationMethodObject;
digestedSignedInfo = c14nMethodTransform.GetDigestedOutput(hash);
return digestedSignedInfo;
}
catch(Exception ex)
{
Log.LogText(ex.Message);
Log.LogText(ex.StackTrace);
return null;
}
}