Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.0
»
Проблема при использовании функции CertGetCertificateContextProperty
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.12.2009(UTC) Сообщений: 2
|
Добрый день. Вопрос такой. Используется функция WINCRYPT32API BOOL WINAPI CertGetCertificateContextProperty( __in PCCERT_CONTEXT pCertContext, __in DWORD dwPropId, __out_bcount_part_opt(*pcbData, *pcbData) void *pvData, __inout DWORD *pcbData ); Случай 1. Если ей передается на вход сертификат, установленный с сайта cryptopro, у которого удален ключевой контейнер, функция возвращает true. Случай 2. Если ей передается на вход сертификат, загруженный из файла (ранее был выгружен в Der-кодировке из сертификата, установленного с сайта cryptopro на другом компьютере). То функция возвращает false.
Отличие в сертификатах: при просмотре через оснастку во втором случае на первой закладке "Общие" отсутствует свойство "Есть закрытый ключ, соответствующий этому сертификату".
Собственно вопросы: 1. Как влияет свойство "Есть закрытый ключ, соответствующий этому сертификату" на работу функции? 2.Почему при удалении контейнера с закрытыми ключами, свойство сохраняется? 3.Как правильно выгружать сертификат, установленного на сервере контейнера, чтобы добиться работы функции на клиентской машине после установки выгруженного сертификата?
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
Уточнение.
А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Если речь идет о CERT_KEY_PROV_INFO_PROP_ID, судя по вопросам, то 1. Она возвращает TRUE, соответственно заполняя структуру CRYPT_KEY_PROV_INFO. 2. Представьте, например, ситуацию со съемным носителем. 3. Вопрос не очень понятен - Вы хотите связать сертификат на клиенте с контейнером на сервере?
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.12.2009(UTC) Сообщений: 2
|
Василий Дементьев написал:Уточнение.
А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)? dwPropId = CERT_KEY_PROV_INFO_PROP_ID
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.12.2009(UTC) Сообщений: 2 Откуда: москва
|
Василий Дементьев написал:Уточнение.
А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)? Некоторое уточнение. Нам необходимо убедиться, что сертификат предполагает использование ГОСТ-алгоритмов if(!(CertGetCertificateContextProperty( pCertContext, CERT_KEY_PROV_INFO_PROP_ID, pKeyInfo, &dwSize))) { SetErrorMessage(L"Невозможно выделить память под структуру, содержащую информацию о ключе при вторичном вызове функции.(Код ошибки - 81009)"); SetErrorCode(81009); goto done; } //------------------------------------------- // Проверка члена dwKeySpec на расширенный ключ и типа провайдера if(!(pKeyInfo->dwKeySpec == AT_KEYEXCHANGE && pKeyInfo->dwProvType == PROV_GOST_2001_DH)) { SetErrorMessage(L"Ключ, связанный с указанным сертификатом, не является ключём для шифрования, либо не поддерживает ГОСТ.(Код ошибки - 81011)"); SetErrorCode(81011); goto done; }
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.12.2009(UTC) Сообщений: 2 Откуда: москва
|
|
|
|
|
Статус: Администратор
Группы: Администраторы, Участники Зарегистрирован: 28.12.2007(UTC) Сообщений: 350 Откуда: ООО "КРИПТО-ПРО"
Поблагодарили: 6 раз в 5 постах
|
Для поставленной задачи вообще не нужно вызывать эту функцию. Алгоритм открытого ключа сертификата имеется в структуре pCertContext. pCertContext->pCertInfo.SubjectPublicKeyInfo.Algorithm Это поле типа CRYPT_ALGORITHM_IDENTIFIER, в котором есть строка - идентификатор алгоритма. Для алгоритмов ГОСТ и сертификатов КриптоПро CSP значение идентификатора алгоритма начинается с 1.2.643.2.2 Отредактировано пользователем 10 декабря 2009 г. 15:48:16(UTC)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.0
»
Проблема при использовании функции CertGetCertificateContextProperty
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close