Статус: Новичок
Группы: Участники
Зарегистрирован: 04.10.2016(UTC) Сообщений: 2
|
Добрый день,
КриптоПро ЭЦП Browser plug-in пример на сайте, подпись XML
Подскажите, пожалуйста. Подпись XML получается, если в ней все теги на английском языке. У нас используется XML где теги на русском языке. Выдается ошибка: Не удалось создать подпись из-за ошибки: Windows was unable to parse the requested XML data. (0x800705B9)
А Именно не срабатывает: Signature = yield oSignedXML.Sign(oSigner); КАК МОЖНО ПОДПИСАТЬ ТАКОЙ XML:
<?xml version="1.0" encoding="windows-1251"?> <Файл> Hello, World! </Файл>
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.10.2016(UTC) Сообщений: 2
|
Получается пописать если использовать UTF-8, но нужно именно windows-1251
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Добрый день! Удалось ли решить проблему и как?
|
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 397 раз в 367 постах
|
Добрый день. Недавно была подобная тема про неправильное кодирование Кириллицы в подписанном документе.
Вкратце - укажите действительную кодировку в <?xml ?> потом закодируйте в BASE64 и укажите что данные подаются в BASE64.
Тем не менее, если у Вас кириллица идет так xmlns:__="кирилица", то скорее всего плагином подписать не получится, так как в этом месте кириллица не подходит под зарубежные стандарты, а отечественных про это не сочинили.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.01.2022(UTC) Сообщений: 15  Откуда: Vologda Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте! Спасибо за отклик. То есть получается мне вместо использования CAdESCOM.SignedXML в случае если xml имеет вид, подобный: <?xml version="1.0" encoding="windows-1251"?> <Файл Верс="5.01"/>
Нужно использовать cadesplugin.CreateObject("CAdESCOM.CPEnvelopedData");
Верно?
|
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 397 раз в 367 постах
|
Как я понимаю, нет. Кодировка кириллицы в файле уже указана, используете все тот же SignedXML, экземпляру SignedXML установите сначала свойство ContentEncoding как BASE64_TO_BINARY (конкретное написание зависит от того из какого языка и в каком режиме - синхронном или асинхронном), потом передайте содержимое файла дополнительно закодированное в BASE64. В этом случае объект SignedXML сначала корректно раскодирует BASE64, потом определит кодировку документа windows-1251 по <?xml ... encoding="windows-1251"?>.
Без BASE64 среда (допустим браузер) может внести искажения кодировки в документ до передачи в плагин, BASE64 решает эту проблему.
Далее, корректное определение кодировки требуется для правильной работы алгоритма каноникализации, который используется в большинстве ИС. Суть в том, что каноническая форма документа может быть только в кодировке UTF-8 и ни в какой другой, следовательно плагину придется подписываемый фрагмент перевести в UTF-8, а для этого нужно знать исходную кодировку документа. Если кодировка неизвестна, то предполагается, что перекодирование не требуется. Это также косвенно дает эффект, что документы уже в UTF-8 подписываются без искажения даже когда <?xml ... ?> нет в начале документа.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close