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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline IronRate  
#1 Оставлено : 26 июля 2013 г. 10:16:01(UTC)
IronRate

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

Группы: Участники
Зарегистрирован: 25.07.2013(UTC)
Сообщений: 49
Российская Федерация
Откуда: Ставрополь

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Стоит задача установить сертификат в контейнер с закрытым ключом.
Как определить средствами CryptoAPI какой контейнер подходит для сертификата?
Метод перебора контейнеров - достаточно хорошо, но при обращении к контейнеру КРИПТОПРО спрашивает PIN.
В тоже время есть еще такое решение:

Запустив в командной строке:
\Program Files\Crypto Pro\CSP\csptest -keyset -container имя_контейнера -keytype exchange -export имя_файла
(как пример – C:\Program Files\Crypto Pro\CSP\csptest -keyset -container TEST -keytype exchange -export c:\pub.txt)

И потом отрыть(Например с помощью Total Commander) получившийся файл в виде hex и сравнить (начиная с конца) последние 64 байта ключа из файла и из сертификата(Открыть файл с сертификатом –закладка Состав –поле -Открытый ключ ).


при этом не происходи запрос PIN
т.е. есть возможность получить открытый ключ из контейнера и сравнить с закрытым ключом сертификата без запроса PIN'а

Подскажите как это сделать?
Offline Максим Коллегин  
#2 Оставлено : 26 июля 2013 г. 13:13:35(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
В контейнере не хранится открытый ключ, он вычисляется из закрытого - поэтому нужен пин, но если в контейнере есть сертификат, то возвращается ключ из него.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
IronRate оставлено 26.07.2013(UTC)
Offline IronRate  
#3 Оставлено : 26 июля 2013 г. 14:26:04(UTC)
IronRate

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

Группы: Участники
Зарегистрирован: 25.07.2013(UTC)
Сообщений: 49
Российская Федерация
Откуда: Ставрополь

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Спасибо за ответ. Нашлось такое решение - если кому-то будет интересно.

HCRYPTPROV provider=NULL;
if(CryptAcquireCertificatePrivateKey(pCertContext,CRYPT_ACQUIRE_COMPARE_KEY_FLAG,NULL,&provider,&type,NULL))
{
//нашелся контейнер соответствующий открытому ключу (судя по всему поиск выполняется если имеется ссылка на контейнер)
//затем выполняем обычный перебор контейнеров - в перебор попадет только тот контейнер который соответсвует сертификату
}else
{
//обычный перебор контейнеров
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.