Ситуация понемногу начинает проясняться. Но появился ряд вопросов относительно реализации процесса подписания XML:
1. Что конкретно подписывается в xml документе: содержимое <ds:SignedInfo> или хэш <ds:SignedInfo>?
2. Как должна выглядеть строка которую хэшируем/подписывем:
а) <ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="
www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="
www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="
www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="
www.w3.org/TR/2001/REC-xml-c14n-20010315...hComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="
www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>Lux33eWUj46OF+itELOaO6ZVleyBBeE7XKtvjBntAHI=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
или
б) <ds:CanonicalizationMethod Algorithm="
www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="
www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="
www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="
www.w3.org/TR/2001/REC-xml-c14n-20010315...hComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="
www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>Lux33eWUj46OF+itELOaO6ZVleyBBeE7XKtvjBntAHI=</ds:DigestValue>
</ds:Reference>
3. Верно ли я понимаю последовательность действий:
а) Хэшируем строку xml.
б) Подписываем хэш.
в) Упаковываем результат в base64?
Заранее благодарю.