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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline lunix2  
#1 Оставлено : 15 августа 2019 г. 9:02:49(UTC)
lunix2

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

Группы: Участники
Зарегистрирован: 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>Те&quot;&amp;кст</buyer>
</Data>


Плагин успешно подписывает, но в итоговом XMLdsig данные уже такие:
Код:
<Data>
     <buyer>Те"&кст</buyer>
</Data>


И в сервисе проверки https://www.justsign.me/verifyqca/Verify/ ошибка при проверке подписи:
Цитата:
Произошла ошибка при проверке документа. Ошибка при разборе EntityName., строка 4, позиция 17.


Как правильно экранировать спец. символы, чтобы они подписывались плагином и потом итоговый xmldsig проходил проверку через сервис?

Отредактировано пользователем 15 августа 2019 г. 16:33:06(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 15 августа 2019 г. 10:18:33(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Судя по ошибке - парсер пытается найти мнемонику после &, так как & сам по себе не валидный символ для текстового узла в xml, после него должно идни одно из трех: предопределенная мнемоника, код символа, референс на текстовый раздел. В данном случае ничего такого нет, идет символ кириллицы, что дает ошибку. Предположу, что & надо экранировать дважды, то есть
Код:
Те&quot;&amp;amp;кст
Почему плагин меняет мнемоники на символы - другой вопрос. После замены в плагине по идее получится валидный текстовый узел
Код:
Те"&amp;кст
который уже должен нормально проходить проверку.

Ну.. по крайней мере не давать ошибку разбора XML, из-за замены в плагине подпись все равно может быть неверной.

Отредактировано пользователем 15 августа 2019 г. 10:31:57(UTC)  | Причина: Не указана

Offline lunix2  
#3 Оставлено : 15 августа 2019 г. 11:02:18(UTC)
lunix2

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

Группы: Участники
Зарегистрирован: 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;amp;ст</Data>
</Envelope>


Выбираю реальный действующий сертификат. Проверяю на чекере, получаю:
Цитата:
Результат проверки
Подпись не действительна

Дополнительная информация
XML подпись не верна.


Это баг в билде плагина? Где вобще описаны рекомендации по подготовке данных для вставки в XML для плагина? С спец. символами испокон веков все сталкиваются, что мы делаем не так?

Отредактировано пользователем 15 августа 2019 г. 11:04:36(UTC)  | Причина: Не указана

Offline lunix2  
#4 Оставлено : 15 августа 2019 г. 17:44:07(UTC)
lunix2

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Ну.. по крайней мере не давать ошибку разбора XML, из-за замены в плагине подпись все равно может быть неверной.


Есть какое-то решение данной проблемы? Уперся всего лишь в формализацию XML перед подписью, все остальные вопросы по работе с плагином, в том числе благодаря вашим советам закрыл.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.