Atom Лента - Форум КриптоПро - Тема:Ошибка при проверке подписи в XML - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:OshibkapriproverkepodpisivXML-10:1Copyright 2024 Форум КриптоПро2024-03-29T14:21:05Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruNeznaikahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1458&name=NeznaikaNeznaikahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1458&name=NeznaikaЧелпанов А.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=26&name=Челпанов А.Челпанов А.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=26&name=Челпанов А.Neznaikahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1458&name=NeznaikaYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid6368:1Ошибка при проверке подписи в XML<table class="content postContainer_Alt" width="100%"><tr><td>Действительно заработало.<br /><br />Большое спасибо за оперативность!<br /><br /></td></tr></table>2009-04-16T10:50:41+04:002009-04-16T10:50:41+04:00Neznaika<table class="content postContainer_Alt" width="100%"><tr><td>Действительно заработало.<br /><br />Большое спасибо за оперативность!<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid6364:1Ошибка при проверке подписи в XML<table class="content postContainer" width="100%"><tr><td>Исправили. Версия 1.0.3392.3.</td></tr></table>2009-04-15T23:13:03+04:002009-04-15T23:13:03+04:00Челпанов А.<table class="content postContainer" width="100%"><tr><td>Исправили. Версия 1.0.3392.3.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid6295:1Ошибка при проверке подписи в XML<table class="content postContainer_Alt" width="100%"><tr><td>Тест повторили - это ошибка в КриптоПро Sharpei, исправим.<br />P.S. Не понял зачем передавать одновременно и сертификат и открытый ключ? Почему не хватает передачи сертификата? </td></tr></table>2009-04-13T18:22:58+04:002009-04-13T18:22:58+04:00Челпанов А.<table class="content postContainer_Alt" width="100%"><tr><td>Тест повторили - это ошибка в КриптоПро Sharpei, исправим.<br />P.S. Не понял зачем передавать одновременно и сертификат и открытый ключ? Почему не хватает передачи сертификата? </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid6281:1Ошибка при проверке подписи в XML<table class="content postContainer" width="100%"><tr><td>Добрый день!<br /><br />Задача стоит так: нужно передавать подписанный XML с компьютера 1 на компьютер 2, включая в XML сертификат и публичный ключ, так, чтобы компьютер 2 после приема файла мог проверить подпись и сертификат, причем ключ и сертификат должены быть извлечены из полученного XML.<br />Подписывается все стандартным образом. Однако, если в коде присутствует строка:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
keyInfo.AddClause(new GostKeyValue((Gost3410)Key)); // <<<<<----- именно эта строка
// Добавляем KeyInfo в SignedXml.
signedXml.KeyInfo = keyInfo;
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
</code></pre>
</div></div><br />То затем при проверке подписи, в строке <br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
signedXml.LoadXml((XmlElement)nodeList[0]);
</code></pre>
</div></div><br /><br />Получаем Exception:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
System.Security.Cryptography.CryptographicException was caught
Message="Input string does not contain a valid encoding of the 'Gost3410' 'PublicKey' parameter."
Source="CryptoPro.Sharpei.Base"
StackTrace:
at CryptoPro.Sharpei.Gost3410.SearchForTextByLocalTag(String ltag, SecurityElement elem, Boolean canZero)
at CryptoPro.Sharpei.Gost3410.ParamsFromXmlString(String xmlString)
at CryptoPro.Sharpei.Gost3410.FromXmlString(String xmlString)
at CryptoPro.Sharpei.Xml.GostKeyValue.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.KeyInfo.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.Signature.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.SignedXml.LoadXml(XmlElement value)
</code></pre>
</div></div><br /><br />Аналогичный код для RCA:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
keyInfo.AddClause(new RSAKeyValue((RSA)Key));
</code></pre>
</div></div><br />при аналогичной проверке, ошибок не вызывает. <br /><br />Как же можно указать этот самый encoding parameter для свойства PublicKey?<br /></td></tr></table>2009-04-13T11:07:39+04:002009-04-13T11:07:39+04:00Neznaika<table class="content postContainer" width="100%"><tr><td>Добрый день!<br /><br />Задача стоит так: нужно передавать подписанный XML с компьютера 1 на компьютер 2, включая в XML сертификат и публичный ключ, так, чтобы компьютер 2 после приема файла мог проверить подпись и сертификат, причем ключ и сертификат должены быть извлечены из полученного XML.<br />Подписывается все стандартным образом. Однако, если в коде присутствует строка:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
keyInfo.AddClause(new GostKeyValue((Gost3410)Key)); // <<<<<----- именно эта строка
// Добавляем KeyInfo в SignedXml.
signedXml.KeyInfo = keyInfo;
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
</code></pre>
</div></div><br />То затем при проверке подписи, в строке <br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
signedXml.LoadXml((XmlElement)nodeList[0]);
</code></pre>
</div></div><br /><br />Получаем Exception:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
System.Security.Cryptography.CryptographicException was caught
Message="Input string does not contain a valid encoding of the 'Gost3410' 'PublicKey' parameter."
Source="CryptoPro.Sharpei.Base"
StackTrace:
at CryptoPro.Sharpei.Gost3410.SearchForTextByLocalTag(String ltag, SecurityElement elem, Boolean canZero)
at CryptoPro.Sharpei.Gost3410.ParamsFromXmlString(String xmlString)
at CryptoPro.Sharpei.Gost3410.FromXmlString(String xmlString)
at CryptoPro.Sharpei.Xml.GostKeyValue.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.KeyInfo.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.Signature.LoadXml(XmlElement value)
at System.Security.Cryptography.Xml.SignedXml.LoadXml(XmlElement value)
</code></pre>
</div></div><br /><br />Аналогичный код для RCA:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
keyInfo.AddClause(new RSAKeyValue((RSA)Key));
</code></pre>
</div></div><br />при аналогичной проверке, ошибок не вызывает. <br /><br />Как же можно указать этот самый encoding parameter для свойства PublicKey?<br /></td></tr></table>