Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Slavka63  
#1 Оставлено : 30 января 2017 г. 11:38:48(UTC)
Slavka63

Статус: Участник

Группы: Участники
Зарегистрирован: 12.02.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: самара

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
При выставлении SignatureType = 0

вот таким способом

Код:

$xPath="//*[local-name()='Security'  and namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd']";
$oSignedXML =new CPSignedXML();
$oSignedXML->set_Content ($content);
$oSignedXML->set_SignatureType (0);
$sSignedMessage = $oSignedXML->Sign($signer,$xPath);
 echo $sSignedMessage;


Подпись создается но игнорируется Xpath - согласно инструкции
http://cpdn.cryptopro.ru...85c34a6e881c1c04434.html
Цитата:
XPath
[in, optional] XPath-запрос для поиска элементов <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">, в которых следует создать подпись. Если данный параметр не задан, то подпись будет создана во всех элементах <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">, в которых отсутствует или не заполнен вложенный элемент <SignatureValue>. Данный параметр используется только при создании подписи по шаблону. Для остальных типов подписи параметр XPath будет проигнорирован.

выставляю set_SignatureType (0); в значение 1 - подписывается,
выставлю set_SignatureType (0); в значение 2 - появляется ошибка

Цитата:
Uncaught exception 'Exception' with message 'The parameter is incorrect. (0x80070057)'


мне необходимо встроить подпись в определенное место заданное в $xPath

что я делаю не правильно или это какойто программный сбой
thanks 1 пользователь поблагодарил Slavka63 за этот пост.
Ksenia оставлено 07.09.2018(UTC)
Offline Slavka63  
#2 Оставлено : 30 января 2017 г. 12:10:56(UTC)
Slavka63

Статус: Участник

Группы: Участники
Зарегистрирован: 12.02.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: самара

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
забыл прикрепить xml -ку если надо

Код:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rt="http://portal.fccland.ru/rt/" xmlns:rev="http://smev.gosuslugi.ru/rev111111" xmlns:typ="http://portal.fccland.ru/types/">
   <soapenv:Header>
      <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" SOAP-ENV:actor="http://smev.gosuslugi.ru/actors/smev"> 
          <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"></Signature>
      </wsse:Security>
     </soapenv:Header>
      <soapenv:Body>
      <rt:createRequestRequest>
       
      </rt:createRequestRequest>
   </soapenv:Body>
</soapenv:Envelope>


PS возможно я не тот xPath указываю и надо указывать вот такой
$xPath = "//*[local-name()='Signature' and namespace-uri()='http://www.w3.org/2000/09/xmldsig#']";

но для начала модуль должен начать подписывать сообщение чтобы понять какой xPath правильный
Offline Slavka63  
#3 Оставлено : 20 февраля 2017 г. 15:28:12(UTC)
Slavka63

Статус: Участник

Группы: Участники
Зарегистрирован: 12.02.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: самара

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Прошло 20 дней - хоть расшифруйте ошибку - определить ведь так невозможно - на какой параметр он ругается .. их не мало
Offline cross  
#4 Оставлено : 20 февраля 2017 г. 17:28:35(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 172 раз в 151 постах
У вас в каком именно методе возникает это исключени?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Ksenia оставлено 07.09.2018(UTC)
Offline Slavka63  
#5 Оставлено : 22 февраля 2017 г. 10:08:39(UTC)
Slavka63

Статус: Участник

Группы: Участники
Зарегистрирован: 12.02.2016(UTC)
Сообщений: 19
Российская Федерация
Откуда: самара

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
вот в этом
$oSignedXML->Sign($signer,$xPath);
Offline Ksenia  
#6 Оставлено : 7 сентября 2018 г. 1:29:37(UTC)
Ksenia

Статус: Новичок

Группы: Участники
Зарегистрирован: 07.09.2018(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Коллеги, добрый день! Извиняюсь за некропост, столкнулась с той же проблемой, а решения нигде не нашла. Подпись запроса в СМЭВ реализована через Phpcades, в классе CPSignedXML при вызове метода Sign тип подписи SignatureType со значением XML_SIGNATURE_TYPE_TEMPLATE дает ошибку:

Код:
The parameter is incorrect. (0x80070057)


В результате не получается подписать XML по шаблону. Аналогичные примеры в Руководстве разработчика на Java и Javascript используют этот параметр, например:

Код:
oSignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE;


Еще в примерах вижу возможность подписать отдельные узлы через класс Reference:

Код:
Reference reference = new Reference();
reference.Uri = "#node";
signedXml.AddReference(reference);


Есть что-то похожее в Phpcades? Посоветуйте, пожалуйста, в каком направлении смотреть? Anxious
Offline cross  
#7 Оставлено : 7 сентября 2018 г. 11:34:35(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 172 раз в 151 постах
Можете привести полный пример кода как вы подписываете и пример шаблона на котором у вас получается такая ошибка. Попробуем воспроисзвети у себя.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Ksenia оставлено 10.09.2018(UTC)
Offline Ksenia  
#8 Оставлено : 10 сентября 2018 г. 19:08:34(UTC)
Ksenia

Статус: Новичок

Группы: Участники
Зарегистрирован: 07.09.2018(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Автор: cross Перейти к цитате
Можете привести полный пример кода как вы подписываете и пример шаблона на котором у вас получается такая ошибка. Попробуем воспроисзвети у себя.


Анатолий, буду очень признательна за подсказку!

Код выглядит приблизительно так.

Отредактировано пользователем 12 сентября 2018 г. 16:30:14(UTC)  | Причина: Не указана

Offline cross  
#9 Оставлено : 11 сентября 2018 г. 15:05:13(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 172 раз в 151 постах
Плагин не умеет делать <ds:Transforms><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/> такой трансформ.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Ksenia  
#10 Оставлено : 11 сентября 2018 г. 18:16:48(UTC)
Ksenia

Статус: Новичок

Группы: Участники
Зарегистрирован: 07.09.2018(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Автор: cross Перейти к цитате
Плагин не умеет делать <ds:Transforms><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/> такой трансформ.


Речь только о плагине SignedXML? Можно ли подписать документ вручную через Phpcades, вставив значения хэша, сертификата и вручную сгенерировать подпись через transform или это возможно только на Java?
Offline Ksenia  
#11 Оставлено : 11 сентября 2018 г. 18:21:39(UTC)
Ksenia

Статус: Новичок

Группы: Участники
Зарегистрирован: 07.09.2018(UTC)
Сообщений: 4
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 3 раз
Автор: cross Перейти к цитате
Плагин не умеет делать <ds:Transforms><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/> такой трансформ.


Речь только о плагине SignedXML? Можно ли подписать документ вручную через Phpcades, вставив значения хэша, сертификата и вручную сгенерировать подпись через transform или это возможно только на Java?

Отредактировано пользователем 11 сентября 2018 г. 18:22:43(UTC)  | Причина: Не указана

Offline two_oceans  
#12 Оставлено : 12 сентября 2018 г. 0:46:35(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,289
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 85 раз
Поблагодарили: 298 раз в 281 постах
Если не ошибаюсь, это трансформ СМЭВ 3 (исключающая каноническая C14N форма, затем замена локальных имен пространств на "ns" плюс цифра и изменение порядка объявления пространств) и похоже трансформ уже заранее был применен в исходном тексте для подписания (верно ли применен точно не скажу). Возможно ли в данном случае каким-то параметром указать проигнорировать неизвестные трансформы в Reference и посчитать хэш без применения указанных трансформов?

Отредактировано пользователем 12 сентября 2018 г. 0:51:22(UTC)  | Причина: Не указана

Offline cross  
#13 Оставлено : 12 сентября 2018 г. 14:23:36(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 172 раз в 151 постах
Проигнорировать не получится. Все трансформы указанные в xml должны быть применены. В данный момент ни плагин, ни phpcades (т.к. пользуются одним кодом) не могут сделать подпись с таким трансформом.
С этим трансформом можно сделать подпись или средствами Java и JCP, или средствами .NET.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.