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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline tyger  
#1 Оставлено : 18 мая 2009 г. 19:31:37(UTC)
tyger

Статус: Участник

Группы: Участники
Зарегистрирован: 18.05.2009(UTC)
Сообщений: 10
Откуда: Russia

Ситуация следующая:
Есть стандартный механизм подписи и проверки подписи через CAPICOM (на клиенте и на сервере). Возникла необходимость использовать для подписи на клиенте Sharpei. Были испробованы несколько вариантов, но не один не проходит проверку на сервере через CAPICOM.

При подписи данных через, как в примере SingleSigner.cs, но с отделенной подписью, Sharpei дает очень похожий (визуально) результат на таковой от CAPICOM, но не проходит проверку.

Куда можно посмотреть и где "поковырять"?
Offline Kirill Sobolev  
#2 Оставлено : 18 мая 2009 г. 19:38:59(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
И c присоединенной подписью не проходит проверку?
Техническую поддержку оказываем тут
Наша база знаний
Offline tyger  
#3 Оставлено : 18 мая 2009 г. 19:40:51(UTC)
tyger

Статус: Участник

Группы: Участники
Зарегистрирован: 18.05.2009(UTC)
Сообщений: 10
Откуда: Russia

Kirill Sobolev написал:
И c присоединенной подписью не проходит проверку?

Нет. Никак не проходит, если это важно могу опубликовать JScript выполняющий подпись с помощью CAPICOM
Offline Kirill Sobolev  
#4 Оставлено : 18 мая 2009 г. 19:43:13(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Лучше выложите результат, который Вы хотите проверить с помощью CAPICOM.
Да - то что получается самим шарпеем проверяется?
Техническую поддержку оказываем тут
Наша база знаний
Offline tyger  
#5 Оставлено : 18 мая 2009 г. 20:47:53(UTC)
tyger

Статус: Участник

Группы: Участники
Зарегистрирован: 18.05.2009(UTC)
Сообщений: 10
Откуда: Russia

Kirill Sobolev написал:
Лучше выложите результат, который Вы хотите проверить с помощью CAPICOM.
Да - то что получается самим шарпеем проверяется?


Вот в том и загвоздка, что сам Sharpei прекрасно гоняет подпись туда-сюда.
Ок, завтра с работы попробую выложить вариант подписи.
Offline Челпанов А.  
#6 Оставлено : 18 мая 2009 г. 21:26:24(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
С уважением, Александр.
Offline tyger  
#7 Оставлено : 19 мая 2009 г. 11:51:07(UTC)
tyger

Статус: Участник

Группы: Участники
Зарегистрирован: 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);
Offline Челпанов А.  
#8 Оставлено : 19 мая 2009 г. 13:42:28(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Цитата:
Гм, странно, вот тут тоже были сомнения... Я думаю, что, всетаки, в CAPICOM передается COM'овский BSTR, который по-определению внутри является UNICODE'ом. Иначе как объяснить, что в одном случае мы подписываем массив байт полученый с юникода, а проверяем непойми что? Проверка должна идти тоже массива полученного из юникода.

Можно так. Только читать Вы должны из файла Unicode строку, без лишних преобразований.
Цитата:
Непонятно еще зачем такие сложности по преобразованию в Base64 в методе EncodeToFile? По крайней мере, строку можно получить проще через

В данном случае незачем, люблю поточные преобразования Angel
С уважением, Александр.
Offline tyger  
#9 Оставлено : 21 мая 2009 г. 21:05:18(UTC)
tyger

Статус: Участник

Группы: Участники
Зарегистрирован: 18.05.2009(UTC)
Сообщений: 10
Откуда: Russia

Всем спасибо за помощь.
Все заработало.

Остался один интересный момент: подпись прекрасно выполняется таким способом даже на машине, на которой не установлен Sharpei RTE и нет ни одной библиотеки Sharpei. Вот...
Offline Челпанов А.  
#10 Оставлено : 21 мая 2009 г. 21:35:48(UTC)
Челпанов А.

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Для подписи CMS Sharpei и не нужен. Microsoft реализовал эту часть через криптопровайдеры аккуратно. А вот проверка без Sharpei не работает.
Вообще-то и при проверке CMS подписи (и еще в паре мест, например при двухсторонней аудентификации в TLS) почти все работает корректно. Вот это почти Sharpei и исправляет; не реализует, а именно чуть правит.
С уважением, Александр.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.