Статус: Участник
Группы: Участники
Зарегистрирован: 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 что я делаю не правильно или это какойто программный сбой
|
 1 пользователь поблагодарил Slavka63 за этот пост.
|
Ksenia оставлено 07.09.2018(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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 правильный
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19  Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Прошло 20 дней - хоть расшифруйте ошибку - определить ведь так невозможно - на какой параметр он ругается .. их не мало
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
У вас в каком именно методе возникает это исключени? |
|
 1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
Ksenia оставлено 07.09.2018(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.02.2016(UTC) Сообщений: 19  Откуда: самара Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
вот в этом $oSignedXML->Sign($signer,$xPath);
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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? Посоветуйте, пожалуйста, в каком направлении смотреть?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Можете привести полный пример кода как вы подписываете и пример шаблона на котором у вас получается такая ошибка. Попробуем воспроисзвети у себя. |
|
 1 пользователь поблагодарил Анатолий Беляев за этот пост.
|
Ksenia оставлено 10.09.2018(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.09.2018(UTC) Сообщений: 4  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Автор: cross  Можете привести полный пример кода как вы подписываете и пример шаблона на котором у вас получается такая ошибка. Попробуем воспроисзвети у себя. Анатолий, буду очень признательна за подсказку! Код выглядит приблизительно так. Отредактировано пользователем 12 сентября 2018 г. 16:30:14(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Плагин не умеет делать <ds:Transforms><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/> такой трансформ. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.09.2018(UTC) Сообщений: 4  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Автор: cross  Плагин не умеет делать <ds:Transforms><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/> такой трансформ. Речь только о плагине SignedXML? Можно ли подписать документ вручную через Phpcades, вставив значения хэша, сертификата и вручную сгенерировать подпись через transform или это возможно только на Java?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close