Помогите пожалуйста разобраться почему у меня не удается проверить подпись содержащейся в файле TSLExt.1.0.xml скачанного с
http://e-trust.gosuslugi.ru/CAИмею следующие результаты:
1) Мне удалось подсчитать ГОСТ хэш данных файла TSLExt.1.0.xml и этот хэш совпал с содержащимся в этом файле
2) Мне не удается проверить подпись содержащуюся в этом файле
3) У меня есть опыт подписания xml и создания xmldsig файлов, которые успешно проверяется на
http://smev.gosuslugi.ru/portal/services-tools.jspтакже я успешно отсылаю SOAP запросы (в формате xmldsig) в сервисы СМЭВ и получаю ответы в формате xmldsig. Успешно проверяю содержащиеся в этих файлах подписи в линуксе используя следующие утилиты:
- программа для получения хэшей гост:
/opt/cprocsp/bin/amd64/cryptcp -hash <файл_с_каноникализированными_данными> -dir <директория_для_сохранения_файла_с_хэшом>
- программа для проверки подписи:
/opt/cprocsp/bin/amd64/csptestf -keyset -verify GOST -in <файл_с_каноникализированными_данными> -signature <файл_с_побайтно_ревертированной_подписью> -certificate <сертификат_для_проверки>
Пытаюсь проверить подпись (элемент /АккредитованныеУдостоверяющиеЦентры/Signature/) всех данных в файле TSLExt.1.0.xml следующим образом:
1) сохраняю в файле элемент /АккредитованныеУдостоверяющиеЦентры/Signature/SignedInfo и каноникализирую exc-c14n с помощью (xmlstarlet)
2) сохраняю сертификат /АккредитованныеУдостоверяющиеЦентры/Signature/KeyInfo/X509Data/X509Certificate в файл, раскодируя из base64
3) сохраняю подпись /АккредитованныеУдостоверяющиеЦентры/Signature/SignatureValue в файл, раскодируя из base64
4) пытаюсь проверить подпись с помощью утилиты /opt/cprocsp/bin/amd64/csptestf и получаю отрицательный результат
Предположительно возможные причины получения отрицательного результата при проверке подписи:
1) подпись содержащаяся в файле не верна (маловероятно)
2) неверная каноникализация данных SignedInfo
3) возможно что перед проверкой подпись SignatureValue надо как-то преобразовать (я не знаю в каком формате подпись и как это выяснить)
4) утилита /opt/cprocsp/bin/amd64/csptestf не поддерживает формат подписи или каких-то параметров не хватает
Изучал следующие документы:
http://www.gosuslugi.ru/...s/DS_Information_MKS.pdfhttp://www.etsi.org/deli...60/ts_102231v020101p.pdf