Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > цифровая подпись, xmlsec


Автор: tamin 11.1.2010, 17:50
Здравствуйте.
Использую xmlsec-1.4.3 от apache. При проверке подписи возникает ошибка, если между тэгами элемента SignedInfo появляются лишние пробелы или пустые строки, ошибка также будет, если убрать символы между тэгами(например, перевод строки). 
Т.е.
Код

<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>UwqP+Mp3VeKAfYTdWNi/ImfPEfb8oFsiNfNFRU0Vlt0=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>

правильно, а так
Код

<ds:SignedInfo>

<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>UwqP+Mp3VeKAfYTdWNi/ImfPEfb8oFsiNfNFRU0Vlt0=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>

или так
Код

<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>UwqP+Mp3VeKAfYTdWNi/ImfPEfb8oFsiNfNFRU0Vlt0=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>

уже неправильно.
Как привести подпись к проверяемому виду? В документации не написано, должны быть символы между тэгами или нет. Или есть какой-нибудь настраиваемый параметр, который определяет проверку SignedInfo?
Если кто-нибудь сталкивался с этой проблемой, поделитесь решением, пожалуйста.
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)