Статус: Новичок
Группы: Участники
Зарегистрирован: 06.05.2008(UTC) Сообщений: 7 Откуда: Kiev
|
Помогите Народ!
Как получить список сертификатов из Smartcard с помощью CryptoAPI?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
Открыть провайдер по имени считывателя, перечислить контейнеры, из каждого контейнера достать сертификат. Если CSP < 3.6, то отфильтровывать контейнеры по полному имени и провайдер открывать в VerifyContext первый раз. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.05.2008(UTC) Сообщений: 7 Откуда: Kiev
|
Спасибо!
Я писал такой код
//phProv Provider handler... HCRYPTPROV phProv;
//Key Handler from ACS CSP HCRYPTKEY hKey;
if (!CryptAcquireContext(phProv,NULL,"Advanced Card Systems CSP v1.9",PROV_RSA_FULL,CRYPT_MACHINE_KEYSET)) return;
if (!CryptGetUserKey(phProv,AT_SIGNATURE,&hKey) return;
При этом каманд CryptGetUserKey дает только Key Handler а не сертификаты.
Как перечислить все контейнеры? У вас есть какие то примеры?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.05.2008(UTC) Сообщений: 7 Откуда: Kiev
|
Я уже перечислил все имя контейнеры:
DWORD size; DWORD fParam = CRYPT_FIRST; CryptAcquireContext( &phProv,NULL,"Advanced Card Systems CSP v1.9",PROV_RSA_FULL,CRYPT_MACHINE_KEYSET);
while ( CryptGetProvParam(phProv, PP_ENUMCONTAINERS, NULL, &size, fParam) ) { BYTE * ContNameD=(BYTE*)malloc(sizeof(BYTE*)*size); int len = (int)size; CryptGetProvParam(phProv, PP_ENUMCONTAINERS, ContNameD, &size, fParam); ContNameD[len]=0; WriteLog( " container name:"+ CString(ContNameD)+" \n" ); fParam = 0; }
а как дальше извлекать сертификаты?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.01.2008(UTC) Сообщений: 40  Откуда: Москва Поблагодарили: 3 раз в 2 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.05.2008(UTC) Сообщений: 7 Откуда: Kiev
|
Спасибо! Я уже получил context of certificate:
CryptAcquireContext(&phProv,"afcf536b-0d90-c5f2-66fa-6eb571c796f1","Advanced Card Systems CSP v1.9",PROV_RSA_FULL,CRYPT_MACHINE_KEYSET);
СryptGetKeyParam(hKey, KP_CERTIFICATE, NULL, &certLength,0))ж
unsigned char* cert;
cert= (unsigned char*)malloc(certLength);
CryptGetKeyParam(hKey, KP_CERTIFICATE, cert, &certLength,0);
PCERT_CONTEXT pCertContext;
pCertContext = (PCERT_CONTEXT)CertCreateCertificateContext( X509_ASN_ENCODING,cert,certLength);
Я попытал отобразить сертификат с помощью функции CryptUIDlgViewCertificate но не получается.
CRYPTUI_VIEWCERTIFICATE_STRUCT* vcstruct=(CRYPTUI_VIEWCERTIFICATE_STRUCT*)malloc(sizeof(CRYPTUI_VIEWCERTIFICATE_STRUCT)); vcstruct->dwSize= sizeof(vcstruct); vcstruct->pCertContext = pCertContext; vcstruct->szTitle = "KeyPal Certificate Display"; vcstruct->nStartPage = 0; BOOL propschanged=FALSE; if(!CryptUIDlgViewCertificate(vcstruct,&propschanged) ) WriteLog("\r\CryptUIDlgViewCertificate " + GetErrStr( GetLastError() ) );
Please help me!
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.01.2008(UTC) Сообщений: 40  Откуда: Москва Поблагодарили: 3 раз в 2 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2008(UTC) Сообщений: 2 Откуда: Moscow
|
maxdm написал:Открыть провайдер по имени считывателя А как "открыть" провайдер по имени считывателя? Так (для Крипто ПРО 3.6 и считывателя "AKS ifdh 0") не работает: HCRYPTPROV hProv = NULL; BOOL bRet = ::CryptAcquireContext(&hProv, "AKS ifdh 0", "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", PROV_RSA_FULL, CRYPT_MACHINE_KEYSET); P.S. Окончательная цель - вывести, при помощи CryptoAPI, список имен ключевых контейнеров на определённом считывателе. Т.е., то что делает данный диалог в Крипто ПРО CSP 3.6:  Отредактировано пользователем 20 ноября 2008 г. 23:02:30(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
\\.\считка - все описано в документации. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.11.2008(UTC) Сообщений: 27 Откуда: Russia
|
maxdm написал:\\.\считка - все описано в документации. Добрый день. подскажите пожалуйста, какая документация имеется ввиду?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close