Проверка подписи на PHP
(0 чел.) 
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА: Проверка подписи на PHP

Проверка подписи на PHP 9 мес. назад #4647

  • elPumba
  • Новый участник
  • Постов: 10
  • Репутация: 2
Добрый день.

Подписывая xml документ через пример из SDK
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<note>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>

я получаю такой результат:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<note>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
<ds:Signature xmlns:ds=" www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
...
</ds:SignedInfo>
<ds:SignatureValue>
...
</ds:SignatureValue>
<ds:KeyInfo>
...
</ds:KeyInfo>
</ds:Signature>
</note>

После, проверка подписи и исходного документа дает отрицательный результат. Сервис проверяющий подпись, реализован на PHP с использованием класса openssl. Пробовал использовать стороннюю библиотеку (в частности phpseclib.sourceforge.net) - результат проверки отрицательный. Хотя если подписывать документ и проверять подпись средствами PHP, в обоих случаях (и openssl и phpseclib) результаты проверки положительные.

Отсюда возникло подозрение, что для проверки нужно брать не исходный документ, а документ с элементами подписи. Вот только возникает вопрос все ли поля там нужны.

Вы можете как-то прокомментировать, что именно подписывается в примере из SDK? Пробовал разбирать пример на Java, и как мне показалось, что перед подписанием в документ добавляются какие-то поля (хотя могу ошибаться, ибо в Java не силен).

Заранее благодарю за ответ.

Re: Проверка подписи на PHP 9 мес. назад #4648

  • danil.miskiv
  • Осваиваюсь на форуме
  • Постов: 24
  • Репутация: 1
Здравствуйте!
1) Вы должны использовать нашу библиотеку OPENSSL.
2) Распишите подробнее как Вы выполняете проверку

Re: Проверка подписи на PHP 9 мес. назад #4649

  • elPumba
  • Новый участник
  • Постов: 10
  • Репутация: 2
danil.miskiv написал:
Здравствуйте!
1) Вы должны использовать нашу библиотеку OPENSSL.
2) Распишите подробнее как Вы выполняете проверку


1. Если у Вас есть библиотека openssl для PHP, то где её можно взять? В SDK примеров для PHP я не видел.
2. Если говорить об openssl, то проверка осуществляется при помощи метода openssl_verify($data, $signature, $public, 'RSA-SHA256'), где:
$data - проверяемая xml строка
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<note>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>
$signature - подпись из секции <ds:SignatureValue>...</ds:SignatureValue>
$public - публичный ключ извлеченный из сертификата методом openssl_pkey_get_public()
RSA-SHA256 - указатель алгоритма подписи
Изменено: 9 мес. назад от elPumba.

Re: Проверка подписи на PHP 9 мес. назад #4650

  • danil.miskiv
  • Осваиваюсь на форуме
  • Постов: 24
  • Репутация: 1
elPumba написал:

1. Если у Вас есть библиотека openssl для PHP, то где её можно взять? В SDK примеров для PHP я не видел.

Вы можете использовать нашу библиотеку KalkanCryptCOM. Только для этого нужна COM-обертка для PHP. Я могу отправить на Вашу почту пример использования COM-обертки.

Re: Проверка подписи на PHP 9 мес. назад #4651

  • elPumba
  • Новый участник
  • Постов: 10
  • Репутация: 2
danil.miskiv написал:

Вы можете использовать нашу библиотеку KalkanCryptCOM. Только для этого нужна COM-обертка для PHP. Я могу отправить на Вашу почту пример использования COM-обертки.


Буду премного благодарен. Но задам встречный вопрос: будет ли данная обертка работать на Linux сервере или для её работы необходима Windows?

Более того хотелось бы найти решение проверки подписи нативными средствами PHP. Думаю это было интересно и другим разработчикам пишущим под web. Если удастся найти решение, могу предложить его Вам для включения в SDK в качестве примера. Потому вернусь к вопросу с которого начал: какова структура подписываемого документа? Если, конечно, эта информация подлежит разглашению.

Re: Проверка подписи на PHP 9 мес. назад #4652

  • danil.miskiv
  • Осваиваюсь на форуме
  • Постов: 24
  • Репутация: 1
elPumba написал:

Буду премного благодарен. Но задам встречный вопрос: будет ли данная обертка работать на Linux сервере или для её работы необходима Windows?

Данная обертка работает только на Windows. (Напишите на адрес Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. и Я Вам вышлю обертку)
elPumba написал:

Если удастся найти решение, могу предложить его Вам для включения в SDK в качестве примера.

Предложите. будет интересно рассмотреть.
elPumba написал:

Потому вернусь к вопросу с которого начал: какова структура подписываемого документа?

Структура подписанного XML соответствует спецификации XML-dsig.
Изменено: 9 мес. назад от danil.miskiv.
Спасибо сказали: elPumba
  • Страница:
  • 1
  • 2
  • 3
  • 4
FaLang translation system by Faboba