Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
В BASE64 вы кодируете "подпись в hex" или все-таки приводите сначала к бинарному виду? Кстати в плагин добавлена поддержка XMLDSig. В скором времени появятся примеры создания сообщений для взаимодействия со СМЭВ. http://www.cryptopro.ru/...posts&t=1387&p=2
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
В BASE64 кодирую бинарную подпись. Спасибо, не видел обновления плагина, попробую воспользоваться CAdESCOM.SignedXML и проверить валидность такой подписи. Но предпочтительнее разобраться с RawSignature, т.к. есть возможность получить значение подписи по хешу, а не документу целиком.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:Упоминание _utf8_encode натолкнуло меня на решение проблемы с хэшом.( у меня была ещё проблема в том что от одинаковых данных хэш c помощью плагина и на сервере с помощью c# получался разным. Но если перед вычислением хэша на клиенте закодировать данные в utf8 то проблем нет. Но мне непонятно зачем все таки это нужно т.к. сама страница в кодировке utf8. Причем если данные корректно отображаются при дебаге, то после применения _utf8_encode отображается нечитаемая таробарщина вместо русских символов но хэш от этих данных считается правильный. С подписью в итоге все таки была проблема с некорректной канонизацией. В итоге получилось сформировать корректную подпись. Спасибо. В таких случаях можно использовать кодировку BASE64 и свойство HashedData.DataEncoding
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Автор: dmishin 1. Беру хэш канонизированной XML. Вставляю его в шаблон в качестве DigestValue. Например: e5bsMmsv+qWG1oY3mW9vbeBp1sbAH+Z9KtRKnm10ZzI= ... 6. Проверяю полученную XML утилитой xmlsec1. ... Но предпочтительнее разобраться с RawSignature, т.к. есть возможность получить значение подписи по хешу, а не документу целиком.
А данные, от которых получен хэш, вы в проверяемую подпись добавляете?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Новожилова Елена А данные, от которых получен хэш, вы в проверяемую подпись добавляете? Не совсем понял вопрос. Если имеется ввиду содержит ли xml те данные от которых брался хеш, то да. Приведение к канонизированному виду и вычисление хеша происходит на сервере. У клиента генерится только значение подписи по хешу, которая впоследствии вставляется в SignatureValue.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Автор: dmishin 1. Беру хэш канонизированной XML. Вставляю его в шаблон в качестве DigestValue. Например: e5bsMmsv+qWG1oY3mW9vbeBp1sbAH+Z9KtRKnm10ZzI= 2. Использую полученный хеш для создания подписи (замечу что преобразований к UTF8 нигде не производится):
Вот здесь ошибка. Подпись надо делать не на это хэш-значение. Надо после заполнения элемента DigestValue привести к каноническому виду элемент SignedInfo, его похэшировать, и посчитать подпись на это хэш-значение. |
|
2 пользователей поблагодарили Павел Смирнов за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Смирнов Вот здесь ошибка. Подпись надо делать не на это хэш-значение. Надо после заполнения элемента DigestValue привести к каноническому виду элемент SignedInfo, его похэшировать, и посчитать подпись на это хэш-значение. Спасибо! на выходе получил валидную подпись. Не подскажете - содержит ли CAdES-BES значение SignatureValue? Суть в том чтобы пользователь создавал подпись CAdES-BES, потом на сервере ее проверять утилитой cryptcp и вытаскивать SignatureValue для встраивания в XML. Отредактировано пользователем 8 июля 2013 г. 12:14:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Теоретически можно так сделать, если пользователь подписывал то, что нужно. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Смирнов Теоретически можно так сделать, если пользователь подписывал то, что нужно. В CadesBes подпись так же хранится в виде обратной последовательности байт?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
CAdES-BES - это формат подписанного CMS-сообщения. И значение подписи в нем вычисляется не на сам документ, а на подписываемые атрибуты (среди которых обязательно присутствует хэш-значение документа). Подписываемые атрибуты в сообщении CAdES-BES должны присутствовать обязательно.
В то же время подпись в сообщении XMLDSig вычисляется на приведенный к каноническому виду узел SignedInfo, который также содержит в своем составе хэш-значение документа.
Вывод - значение подписи в сообщениях CAdES-BES и XMLDSig вычисляется на _разные_ данные.
Теоретически, если бы не было подписанных атрибутов, то можно было бы просить пользователя подписывать заранее сформированный и приведенный к каноническому виду узел SignedInfo. Но поскольку наличие атрибутов является обязательным требованием, то описанный вами способ невозможен.
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close