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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
В контексте сертификата oid - алгоритма подписи '1.2.643.2.2.3'
CertOIDToAlgId('1.2.643.2.2.3')=32798
При запросе у провайдера списка поддерживаемых алгоритмов (CryptGetProvParam(provider, PP_ENUMALGS_EX,(BYTE*) algorithmInfo, &cbData, flags)) такого aiAlgid нет.

Как определить какой криптопровайдер необходим для установки сертификата в контейнер?
Offline Максим Коллегин  
#2 Оставлено : 25 июля 2013 г. 12:48:48(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Нужно получать алгоритм открытого ключа из сертификата.
Знания в базе знаний, поддержка в техподдержке
Offline IronRate  
#3 Оставлено : 25 июля 2013 г. 16:04:48(UTC)
IronRate

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
pCertificateContext->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId - ?
то тоже не помогает.
Помогите определить тип криптопровайдера по сертификату, не привязанного к контейнеру
Offline Максим Коллегин  
#4 Оставлено : 26 июля 2013 г. 13:18:54(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Как это не помогает?
Знания в базе знаний, поддержка в техподдержке
Offline IronRate  
#5 Оставлено : 26 июля 2013 г. 14:52:05(UTC)
IronRate

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
pCertificateContext->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId="1.2.643.2.2.19"
CertOIDToAlgId(pSignatureAlgorithm)=11811

при переборе алгоритмов предоставляемых криптопро

while(CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &lenName)==true )
{
cryptoName=new WCHAR[lenName];
if(CryptEnumProviders(dwIndex, NULL, 0, &dwType, cryptoName, &lenName))
{
if(CryptAcquireContext(&provider, NULL, cryptoName,dwType, CRYPT_VERIFYCONTEXT) )
{
DWORD cbData=0;
DWORD flags=CRYPT_FIRST;
PROV_ENUMALGS_EX algorithmInfo;
while(CryptGetProvParam(provider, PP_ENUMALGS_EX, NULL, &cbData, flags)==true)
{
if(CryptGetProvParam(provider, PP_ENUMALGS_EX,(BYTE*) &algorithmInfo, &cbData, flags))
{
if(algorithmInfo.aiAlgid==findingAlghoritm)
{
MessageBox(NULL,L"FIND",L"FIND",MB_OK);
return provider;
}
}else
{
//добавлено из за неправильной работы "eToken Base Cryptographic Provider"
break;
};
flags=CRYPT_NEXT;
}
}
if(provider!=NULL)
{
CryptReleaseContext(provider,0);
provider=NULL;
}
}
dwIndex++;
delete [] cryptoName;
}
cryptoName="Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
возвращаются слудующие алгоритмы

PROV_ENUMALGS_EX algorithmInfo;

algorithmInfo
{
aiAlgid 26142 unsigned int
dwDefaultLen 256 unsigned long
dwMinLen 256 unsigned long
dwMaxLen 256 unsigned long
dwProtocols 0 unsigned long
dwNameLen 14 unsigned long
szName 0x0023e0c0 "GOST 28147-89" char[20]
dwLongNameLen 14 unsigned long
szLongName 0x0023e0d8 "GOST 28147-89" char[40]
}

algorithmInfo
{
aiAlgid 32799 unsigned int
dwDefaultLen 32 unsigned long
dwMinLen 32 unsigned long
dwMaxLen 32 unsigned long
dwProtocols 0 unsigned long
dwNameLen 19 unsigned long
szName 0x001be1c0 "HMAC GOST 28147-89" char[20]
dwLongNameLen 19 unsigned long
szLongName 0x001be1d8 "HMAC GOST 28147-89" char[40]
}

algorithmInfo
{
aiAlgid 43556 unsigned int
dwDefaultLen 512 unsigned long
dwMinLen 512 unsigned long
dwMaxLen 512 unsigned long
dwProtocols 0 unsigned long
dwNameLen 18 unsigned long
szName 0x001be1c0 "Diffie-Hellman EL" char[20]
dwLongNameLen 18 unsigned long
szLongName 0x001be1d8 "Diffie-Hellman EL" char[40]
}





Offline Максим Коллегин  
#6 Оставлено : 26 июля 2013 г. 15:47:07(UTC)
Максим Коллегин

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

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

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

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Спасибо, Вы абсолютно правы. Хотя странно и не логично работает в таком случае CryptoAPI. Сначала узнаем размер данных, затем отдаем в функцию указатель. Получается, что вызов функции проглатывает пустой указатель.
Offline Максим Коллегин  
#8 Оставлено : 26 июля 2013 г. 21:21:31(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Все эти enumы не очень логичны, особенно PP_ENUMCONTAINERS. Даже сам MS не научился их вызывать правильно)
Инкрементировать счетчик или нет на NULL - вот в чем вопрос.
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.