Подписание XML и дальнейшая проверка
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Подписание XML и дальнейшая проверка

Re: Подписание XML и дальнейшая проверка 3 года назад #2465

  • Andrey
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
Мурат, попробуйте сделать как я описал. У вас всё совпадает?

Re: Подписание XML и дальнейшая проверка 3 года назад #2466

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Почему бы Вам просто не сравнить значения полей с формы со значениями в подписанном xml?

Но если хотите. можете выслать свой пример.
Модератор

Re: Подписание XML и дальнейшая проверка 3 года назад #2467

  • Andrey
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
Так примера-то почти и нет. Все сделано при помощи SDK (пока).
1. Открываю \SDK_2.0-02.08.2016\NCALayer\sample\index.html
2. Выбираю ключ \SDK_2.0-02.08.2016\Keys and Certs\Текущий НУЦ\первый руководитель ДЕЙСТВУЮЩИЙ\GOSTKNCA_c025b4e0f8b1c26de1e381d7771f5f8d407ba76b.p12
3. Копирую (убрав все лишние символы) xml
<?xml version='1.0' encoding='utf-8'?><root><last_name>admin</last_name><first_name>admin2</first_name></root>
и вставляю в "XML для подписи(signXML)", получаю подписанную xml, где меня интересует:
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/>
<ds:DigestValue>ZYffHE1u7regSQJ14cOLuu88Iro6GQNzK8j6ubmVyLg=</ds:DigestValue>

Затем канонизирую при помщи стороннего сервиса (ссылка уже была ниже) и убираю скрытые символы
<root><last_name>admin</last_name><first_name>admin2</first_name></root>

и пытаюсь получить хеш этой строки на форме в разделе "Получить Хэш данных по указанному алгоритму(getHash):" Указываю Гост и вставляю свой канонизированный xml и получаю следующий хеш:
6587df1c4d6eeeb7a0490275e1c38bbaef3c22ba3a1903732bc8fab9b995c8b8

что в base64 дает:
NjU4N2RmMWM0ZDZlZWViN2EwNDkwMjc1ZTFjMzhiYmFlZjNjMjJiYTNhMTkwMzczMmJjOGZhYjliOTk1YzhiOA==


И он не равен DigestValue. На каком этапе у меня ошибка?

PS Если с хешем не выйдет придется сравнивать с данными из xml, но лучше б вышло)

Re: Подписание XML и дальнейшая проверка 3 года назад #2468

  • Andrey
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
Мурат, пробовали ли Вы сделать тоже самое?

Re: Подписание XML и дальнейшая проверка 3 года назад #2469

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Да. Хэш совпадает.
xml должен выглядеть следующим образом:
<?xml version='1.0' encoding='utf-8'?><root><last_name>admin</last_name><first_name>admin2</first_name></root>

Т.к. в нашем примере для получения хэша используется элемент, в который можно записать данные только одной строкой.
Далее подписываем этот xml.
<?xml version="1.0" encoding="utf-8" standalone="no"?><root><last_name>admin</last_name><first_name>admin2</first_name><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/>
<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#gost34311"/>
<ds:DigestValue>ZYffHE1u7regSQJ14cOLuu88Iro6GQNzK8j6ubmVyLg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
1BvfBW65GWAOkfhNx8Zp8/ikmM1o0rS9IVRL2r8qtLruce3lEAS/SXAnoBqd2mAunN7GpBOVNGRL
tuu3V9gLxA==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIEpTCCBE+gAwIBAgIUY/McQbjxdpwo5Kj2jBT8YUpY6WswDQYJKoMOAwoBAQECBQAwgc8xCzAJ
BgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNVBAgMDNCQ0KHQotCQ0J3QkDFM
MEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb
0KvSmiDSmtCr0JfQnNCV0KLCuzFEMEIGA1UEAww70rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU
0KvQoNCj0KjQqyDQntCg0KLQkNCb0KvSmiAoR09TVCkwHhcNMTUxMjIyMDkyOTExWhcNMTYxMjIx
MDkyOTExWjCB4zEiMCAGA1UEAwwZ0KLQldCh0KLQotCe0JIg0KLQldCh0KLQojEXMBUGA1UEBAwO
0KLQldCh0KLQotCe0JIxGDAWBgNVBAUTD0lJTjEyMzQ1Njc4OTAxMjELMAkGA1UEBhMCS1oxFTAT
BgNVBAcMDNCQ0KHQotCQ0J3QkDEVMBMGA1UECAwM0JDQodCi0JDQndCQMRgwFgYDVQQKDA/QkNCe
ICLQotCV0KHQoiIxGDAWBgNVBAsMD0JJTjEyMzQ1Njc4OTAyMTEbMBkGA1UEKgwS0KLQldCh0KLQ
otCe0JLQmNCnMGwwJQYJKoMOAwoBAQEBMBgGCiqDDgMKAQEBAQEGCiqDDgMKAQMBAQADQwAEQCQX
4+zM54PQYxWt7GBWf0IBgiKOxfpkfzl0tU7MFGRkoa4eNsDf8LnNLLNspybLdxnui+oqXzfBt3WD
gewL0f6jggHbMIIB1zAOBgNVHQ8BAf8EBAMCBsAwKAYDVR0lBCEwHwYIKwYBBQUHAwQGCCqDDgMD
BAECBgkqgw4DAwQBAgIwDwYDVR0jBAgwBoAEVbW0rjAdBgNVHQ4EFgQU9jevbZQK/oontSieGZdY
b9poM8swXgYDVR0gBFcwVTBTBgcqgw4DAwIBMEgwIQYIKwYBBQUHAgEWFWh0dHA6Ly9wa2kuZ292
Lmt6L2NwczAjBggrBgEFBQcCAjAXDBVodHRwOi8vcGtpLmdvdi5rei9jcHMwUAYDVR0fBEkwRzBF
oEOgQYYeaHR0cDovL2NybC5wa2kuZ292Lmt6L2dvc3QuY3Jshh9odHRwOi8vY3JsMS5wa2kuZ292
Lmt6L2dvc3QuY3JsMFQGA1UdLgRNMEswSaBHoEWGIGh0dHA6Ly9jcmwucGtpLmdvdi5rei9kX2dv
c3QuY3JshiFodHRwOi8vY3JsMS5wa2kuZ292Lmt6L2RfZ29zdC5jcmwwYwYIKwYBBQUHAQEEVzBV
MC8GCCsGAQUFBzAChiNodHRwOi8vcGtpLmdvdi5rei9jZXJ0L3BraV9nb3N0LmNlcjAiBggrBgEF
BQcwAYYWaHR0cDovL29jc3AucGtpLmdvdi5rejANBgkqgw4DCgEBAQIFAANBAOHuWumujRXQyY7E
9Dgxz0yiZ00V2ennFBTpqQ0x4PjuHvjIPsiJxbay2G/5EdtUlJVV/NVETdSFPdVP6bFMqus=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></root>


Берем значение хэша:
ZYffHE1u7regSQJ14cOLuu88Iro6GQNzK8j6ubmVyLg=

С помощью сервиса tomeko.net/online_tools/base64.php?lang=en преобразуем в hex:
6587DF1C4D6EEEB7A0490275E1C38BBAEF3C22BA3A1903732BC8FAB9B995C8B8

С помощью сервиса www.soapclient.com/xmlcanon.html канонизируем исходный xml и получаем:
<root><last_name>admin</last_name><first_name>admin2</first_name></root>


Вставляем в элемент для вычисления хэша в нашем примере и получаем хэш:
6587df1c4d6eeeb7a0490275e1c38bbaef3c22ba3a1903732bc8fab9b995c8b8
Модератор
Изменено: 3 года назад от Murat Seisenov.

Re: Подписание XML и дальнейшая проверка 3 года назад #2470

  • Andrey
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
Теперь получилось, я в base переводил канонизированный результат, а нужно было уже подписанный переводить. Большое спасибо запомощь!
  • Страница:
  • 1
  • 2
  • 3
FaLang translation system by Faboba