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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline funt  
#1 Оставлено : 16 октября 2009 г. 15:29:30(UTC)
funt

Статус: Новичок

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

Здравствуйте!
Изучал вашу тестовую утилиту csptest.exe на предмет шифрования и подписи (низкоуровневые команды lowsign и lowcrypt)
Дешифрую и проверяю подпись так:

Код:

csptest.exe -lowenc -decrypt -in %1.sign.p7b.enc -my "Мой субъект с ключем" -out %1.sign.p7b
csptest.exe -lowsign -verify -in %1.sign.p7b -out %1 -my "Субъект отправителя"


Обнаружил, что не проходит верификация с выдачей ошибки об отсутствии закрытого ключа пользователя. Но у меня и не может его быть, у меня сертификат без закрытого ключа присылающего.
Покопался в исходниках и при верификации в исходниках просто отключил вызов CryptAcquireProvider в signlo.c. Все стало ОК

Скажите, это просто ошибка в исходниках или для чего при проверке подписи нужен вызов CryptAcquireCertificatePrivateKey?
Offline Kirill Sobolev  
#2 Оставлено : 16 октября 2009 г. 16:03:37(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
В низкоуровневых функциях проверки инициализация провайдера происходит внутри них самих. Тот хэндл hCryptProv, который получается в результате CryptAcquireCertificatePrivateKey, далее нигде не используется - неточность в исходниках видимо.
Техническую поддержку оказываем тут
Наша база знаний
Offline funt  
#3 Оставлено : 16 октября 2009 г. 16:24:18(UTC)
funt

Статус: Новичок

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

Kirill Sobolev написал:
В низкоуровневых функциях проверки инициализация провайдера происходит внутри них самих. Тот хэндл hCryptProv, который получается в результате CryptAcquireCertificatePrivateKey, далее нигде не используется - неточность в исходниках видимо.


Спасибо.
Сейчас посмотрел описание CryptMsgOpenToDecode, в MSDN написано, что hCryptProv рекомендуют ставить в 0 (Unless there is a strong reason for passing in a specific cryptographic provider in hCryptProv, set this parameter to NULL)

Перекомпилировав и создание подписи без предварительного вызова CryptAcquireCertificatePrivateKey, подписать тоже получилось.
Получается, что в примере просто проверяется заранее, имеется ли закрытый ключ для сертификата или нет
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.