Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2009(UTC) Сообщений: 10 Откуда: Russia
|
Ситуация следующая: Есть стандартный механизм подписи и проверки подписи через CAPICOM (на клиенте и на сервере). Возникла необходимость использовать для подписи на клиенте Sharpei. Были испробованы несколько вариантов, но не один не проходит проверку на сервере через CAPICOM.
При подписи данных через, как в примере SingleSigner.cs, но с отделенной подписью, Sharpei дает очень похожий (визуально) результат на таковой от CAPICOM, но не проходит проверку.
Куда можно посмотреть и где "поковырять"?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
И c присоединенной подписью не проходит проверку? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2009(UTC) Сообщений: 10 Откуда: Russia
|
Kirill Sobolev написал:И c присоединенной подписью не проходит проверку? Нет. Никак не проходит, если это важно могу опубликовать JScript выполняющий подпись с помощью CAPICOM
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Лучше выложите результат, который Вы хотите проверить с помощью CAPICOM. Да - то что получается самим шарпеем проверяется? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2009(UTC) Сообщений: 10 Откуда: Russia
|
Kirill Sobolev написал:Лучше выложите результат, который Вы хотите проверить с помощью CAPICOM. Да - то что получается самим шарпеем проверяется? Вот в том и загвоздка, что сам Sharpei прекрасно гоняет подпись туда-сюда. Ок, завтра с работы попробую выложить вариант подписи.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Проблема скорее всего в кодировании исходного сообщения. На вход CAPICOM необходимо передавать текст в текущей кодировке, а при подписи в Sharpei (а-ля SingleSigner.cs) - Unicode. Прикрепил пример detached подписи из Sharpei. Если запустить пример (C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Security\capicom\vbs\CSignData.vbs) из Microsoft Platform SDK: Код:cscript CSignData.vbs Verify -detached aaa.sgn aaa.bin
, то подпись проверяется. Отредактировано пользователем 18 мая 2009 г. 21:34:14(UTC)
| Причина: Не указана Вложение(я): SingleSigner.cs (13kb) загружен 93 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2009(UTC) Сообщений: 10 Откуда: Russia
|
Челпанов А. написал:Проблема скорее всего в кодировании исходного сообщения. На вход CAPICOM необходимо передавать текст в текущей кодировке, а при подписи в Sharpei (а-ля SingleSigner.cs) - Unicode. Гм, странно, вот тут тоже были сомнения... Я думаю, что, всетаки, в CAPICOM передается COM'овский BSTR, который по-определению внутри является UNICODE'ом. Иначе как объяснить, что в одном случае мы подписываем массив байт полученый с юникода, а проверяем непойми что? Проверка должна идти тоже массива полученного из юникода. Челпанов А. написал:Прикрепил пример detached подписи из Sharpei. Если запустить пример (C:\Program Files\Microsoft SDKs\Windows\v6.0\Samples\Security\capicom\vbs\CSignData.vbs) из Microsoft Platform SDK: Код:cscript CSignData.vbs Verify -detached aaa.sgn aaa.bin
, то подпись проверяется. Да, в таком виде подпись вроде прошла, тестирую дальше. Непонятно еще зачем такие сложности по преобразованию в Base64 в методе EncodeToFile? По крайней мере, строку можно получить проще через Код:Convert.ToBase64String(someData);
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Цитата:Гм, странно, вот тут тоже были сомнения... Я думаю, что, всетаки, в CAPICOM передается COM'овский BSTR, который по-определению внутри является UNICODE'ом. Иначе как объяснить, что в одном случае мы подписываем массив байт полученый с юникода, а проверяем непойми что? Проверка должна идти тоже массива полученного из юникода. Можно так. Только читать Вы должны из файла Unicode строку, без лишних преобразований. Цитата:Непонятно еще зачем такие сложности по преобразованию в Base64 в методе EncodeToFile? По крайней мере, строку можно получить проще через В данном случае незачем, люблю поточные преобразования |
С уважением, Александр. |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.05.2009(UTC) Сообщений: 10 Откуда: Russia
|
Всем спасибо за помощь. Все заработало.
Остался один интересный момент: подпись прекрасно выполняется таким способом даже на машине, на которой не установлен Sharpei RTE и нет ни одной библиотеки Sharpei. Вот...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Для подписи CMS Sharpei и не нужен. Microsoft реализовал эту часть через криптопровайдеры аккуратно. А вот проверка без Sharpei не работает. Вообще-то и при проверке CMS подписи (и еще в паре мест, например при двухсторонней аудентификации в TLS) почти все работает корректно. Вот это почти Sharpei и исправляет; не реализует, а именно чуть правит.
|
С уважением, Александр. |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close