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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline warlight  
#1 Оставлено : 10 февраля 2011 г. 13:15:04(UTC)
warlight

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

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

Добрый день.
Стоит задача - подписывать web-анкету и сохранять подпись.

Сделана подпись на CAPICOM, затем она передается в $_POST (php) и сохраняется в файле на сервере (отдельно два файла - *.msg - файл со строкой, которую подписывали и *.msg.sgn - подпись к этой строке.
На сервере стоит Free BSD 8.0 x64, CryptoPro CSP 3.6 (для 64-й системы).
Утилитой пытаюсь далее проверить подпись:
cryptcp -vsignf *.msg

выдает:

Код:
CryptCP 3.34 (c) "Крипто-Про", 2002-2010.
Утилита командной строки для защиты данных.

Будет использован следующий сертификат:
Субъект:GNIVC FNS RUS, Удостоверяющий центр, ФГУП ГНИВЦ ФНС России, Москва, RU, ucinfo@gnivc.ru
Действителен с 27.09.2006 09:29:57 по 27.09.2012 09:38:27

Цепочки сертификатов проверены.
Папка './':
signVXkNR0.msg... Ошибка чтения файла.
[ErrorCode: 0x20000065]


В чем может быть проблема? По форуму лазил.. Так понял, что причиной может быть то, что CAPICOM после подписи ещё что-то делает с ней? Так ли это и какой есть из этого выход?
Offline warlight  
#2 Оставлено : 10 февраля 2011 г. 13:49:49(UTC)
warlight

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

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

Сорри, промазал - не тот файл открывал (тот уже потерт был, нет такого файла)
ошибка:

Код:
signDVJ29m.msg... Подпись повреждена.


Offline Kirill Sobolev  
#3 Оставлено : 10 февраля 2011 г. 18:25:34(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline warlight  
#4 Оставлено : 10 февраля 2011 г. 19:54:58(UTC)
warlight

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

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

Разобрались.
Не понятно только, почему нельзя было в cryptcp добавить в команду -vsignf какой-нибудь флаг, который бы указывал, что сообщение пришло от CAPICOM и то, что нужно добавлять по байту после символа. Почему бы ему было самому это не делать.

При поиске натыкался ещё тут на это - в самом конце.

код в php:
Код:
	for($i=0; isset($examp[$i]); $i++)
	{
		$newStr .= $examp[$i].chr(0x00);
	}
Offline warlight  
#5 Оставлено : 14 апреля 2011 г. 15:46:12(UTC)
warlight

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

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

Здравствуйте ещё раз.
С данным алгоритмом возникла проблема при проверке подписанного, если в подписанном присутствуют русские символы. Как быть в этом случае? Думали, что может быть добавляли после каждого байта 0x00, а в случае с русскими буквами, которые используют 2 байта, это не прокатило. В итоге перевели в cp1251 - добавляются 0x00 после каждого символа, но cryptcp все равно не помогает..
Есть ли какие-то проблемы с русскими символами в подписываемом содержимом при проверке cryptcp?
Может подскажите чем-нибудь
Offline warlight  
#6 Оставлено : 14 апреля 2011 г. 20:07:23(UTC)
warlight

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

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

Как оказалось, JavaScript конвертирует изначально в кодировку UTF-16LE, что в дальнейшем приводит к тому, что обязательно нужно кодировать исходное сообщение в неё. Для php:

$hash = mb_convert_encoding($hash,'UTF-16LE','UTF-8')
и все проверяется) спасибо за помощь (тут отписал для других, и чтобы закрыть вопрос)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.