Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2019(UTC) Сообщений: 8 Откуда: Владивосток Сказал(а) «Спасибо»: 1 раз
|
Добрый день, формирую XML из JS: Код:var dataToSign = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<Envelope xmlns=\"urn:envelope\">\n" +
" <Data>\n" +
" <buyer>Текст</buyer>\n" +
" </Data>\n" +
"</Envelope>";
Подписываю: Код:yield oSignedXML.propset_Content(dataToSign);
yield oSignedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);
yield oSignedXML.propset_SignatureMethod(signMethod);
yield oSignedXML.propset_DigestMethod(digestMethod);
yield oSignedXML.Sign(oSigner);
На выходе, прекрасный валидный xmldsig. Проверку валидности осуществляю тут: https://www.justsign.me/verifyqca/Verify/Предполагаю что у меня в тексте могут быть спец символы, например узел Data может быть таким: Код:<Data>
<buyer>Те"&кст</buyer>
</Data>
При подписании XML содержащей такой узел плагином, получаю: Цитата:Не удалось выполнить разбор запрошенных данных XML. (0x800705B9) Хорошо, преобразовываю узел в: Код:<Data>
<buyer>Те"&кст</buyer>
</Data>
Плагин успешно подписывает, но в итоговом XMLdsig данные уже такие: Код:<Data>
<buyer>Те"&кст</buyer>
</Data>
И в сервисе проверки https://www.justsign.me/verifyqca/Verify/ ошибка при проверке подписи: Цитата:Произошла ошибка при проверке документа. Ошибка при разборе EntityName., строка 4, позиция 17. Как правильно экранировать спец. символы, чтобы они подписывались плагином и потом итоговый xmldsig проходил проверку через сервис? Отредактировано пользователем 15 августа 2019 г. 16:33:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Судя по ошибке - парсер пытается найти мнемонику после &, так как & сам по себе не валидный символ для текстового узла в xml, после него должно идни одно из трех: предопределенная мнемоника, код символа, референс на текстовый раздел. В данном случае ничего такого нет, идет символ кириллицы, что дает ошибку. Предположу, что & надо экранировать дважды, то есть Почему плагин меняет мнемоники на символы - другой вопрос. После замены в плагине по идее получится валидный текстовый узел который уже должен нормально проходить проверку. Ну.. по крайней мере не давать ошибку разбора XML, из-за замены в плагине подпись все равно может быть неверной. Отредактировано пользователем 15 августа 2019 г. 10:31:57(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2019(UTC) Сообщений: 8 Откуда: Владивосток Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans который уже должен нормально проходить проверку. Спасибо за участие. Действительно интересное поведение, но если так делать, то подпись получается невалидная. Иду на тестовый стенд: https://www.cryptopro.ru...ades_xmldsig_sample.htmlДанные для подписи: Код:<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="urn:envelope">
<Data>Те&amp;ст</Data>
</Envelope>
Выбираю реальный действующий сертификат. Проверяю на чекере, получаю: Цитата:Результат проверки Подпись не действительна
Дополнительная информация XML подпись не верна. Это баг в билде плагина? Где вобще описаны рекомендации по подготовке данных для вставки в XML для плагина? С спец. символами испокон веков все сталкиваются, что мы делаем не так? Отредактировано пользователем 15 августа 2019 г. 11:04:36(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2019(UTC) Сообщений: 8 Откуда: Владивосток Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans Ну.. по крайней мере не давать ошибку разбора XML, из-за замены в плагине подпись все равно может быть неверной. Есть какое-то решение данной проблемы? Уперся всего лишь в формализацию XML перед подписью, все остальные вопросы по работе с плагином, в том числе благодаря вашим советам закрыл.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close