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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Jin  
#1 Оставлено : 23 марта 2010 г. 21:44:23(UTC)
Jin

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

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

Добрый день, хотелось бы узнать как можно получить сертификат из руткена.
Или хотябы получить сертификат по имени контейнера.
Если кто-нибудь делал, подскажите, Please...
Offline Челпанов А.  
#2 Оставлено : 24 марта 2010 г. 11:05:35(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
С помощью Sharpei?
Gost3410CryptoServiceProvider.ContainerCertificate
В SDK есть пример (Simple.zip\Certificate\cs\InstallMy.cs) установки сертификата из контейнера в хранилище MY со ссылкой на секретный ключ.
С уважением, Александр.
Offline Jin  
#3 Оставлено : 24 марта 2010 г. 12:58:20(UTC)
Jin

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

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

Да, при помощи Sharpei.
Ок, а как узнать имена контейнеров в рутокене?

Пытаюсь узнать имя через API Функции следующим образом ( примерно так без лишних параметров):

hProv=CryptAcquireContext( "Aktiv ruToken CSP v1.0", Тип=1,CRYPT_VERIFYCONTEXT)

CryptGetProvParam(hProv,PP_ENUMCONTAINERS,NULL,&size,CRYPT_FIRST); //Получаем первый котейнер (его размер )
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,ContName,&size,CRYPT_FIRST); //Получаем первый котейнер

for(;;)
{
//В цикле вытаскиваю следующие контейнеры
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,ContName,&size,CRYPT_NEXT); //Получаем следующий контейнер
}


В результате, находит контейнер (его имя) но оно не совпадает с тем что я ручками определяю через CSP ( находящуюся в Панели Управления ).

Если использовать имя найденное выше указанным образом . не удаётся получить сертификат .
если использовать имя которое я рчками получаю через панель управления CSP . то сертификат именно тот что нужен.

Кто знает, как получить правильное имя контейнера

Отредактировано пользователем 24 марта 2010 г. 15:49:00(UTC)  | Причина: Не указана

Offline Челпанов А.  
#4 Оставлено : 25 марта 2010 г. 13:09:29(UTC)
Челпанов А.

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

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

Поблагодарили: 2 раз в 2 постах
Код:
hProv=CryptAcquireContext( "Aktiv ruToken CSP v1.0", Тип=1,CRYPT_VERIFYCONTEXT) 

Это контекст RSA провайдера, Вам нужен CSP провайдер
Код:
hProv=CryptAcquireContext( NULL, Тип=75,CRYPT_VERIFYCONTEXT) 

Перечисляем все контейнеры для провайдера (75)
Цитата:
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,NULL,&size,CRYPT_FIRST); //Получаем первый котейнер (его размер )
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,ContName,&size,CRYPT_FIRST); //Получаем первый котейнер

Если добавить к CRYPT_FIRST еще и CRYPT_UNIQUE(0x08) будем получать, кроме имен контейнеров, еще и уникальные имена контейнеров (они будут возвращаться второй строкой внутри возвращаемых данных) и сможем отфильтровать те имена, которые содержат "SCARD\rutoken_"
Цитата:
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,NULL,&size,CRYPT_FIRST|CRYPT_UNIQUE); //Получаем первый котейнер (его размер )
CryptGetProvParam(hProv,PP_ENUMCONTAINERS,ContName,&size,CRYPT_FIRST|CRYPT_UNIQUE); //Получаем первый котейнер
UniqueContName += strlen( ContName ) + 1
if( UniqueContName.Contains( "SCARD\rutoken_" ) )...

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