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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Andrew.V  
#1 Оставлено : 26 июля 2018 г. 18:29:16(UTC)
Andrew.V

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Добрый день. Подскажите пожалуйста способ установки связи с контейнером ключа если сам контейнер создан с флагом CRYPT_VERIFYCONTEXT, содержит обе ключевые пары AT_KEYEXCHANGE (типа CALG_DH_EL_SF) и AT_SIGNATURE (типа CALG_GR3410EL).
Или направьте в FAQ/пример эксплуатации операций расшифровки без привязанного сертификата (сам сертификат, открытый ключ и все параметры имеются). CPDN и MSDN читал, требуется пример эксплуатации ключевых пар без записи контейнера.

Код:

// псевдокод, опущены ненужные подробности

// создание контейнера
CryptAcquireContext(hProvUser, NULL, CP_KC1_GR3410_2001_PROV_A, PROV_GOST_2001_DH, CRYPT_VERIFYCONTEXT);

// убран блок извлечения ключевых пар из PRIVATEKEYBLOB

// успешно получаю контекст ключевой пары
CryptGetUserKey(hProvUser, AT_KEYEXCHANGE, &hExchKey);

// успешно создаю контекст сертификата из блоба
pRecipientCert = CertCreateCertificateContext(PKCS_7_X509_ASN_ENCODING, pbCertBlob, dwCertBlobLen);

// установка ссылки сертификата на закрытый ключ не работает если указывать NULL для ckpi.pwszContainerName
// и срабатывает без ошибки если ставить пустое имя контейнера ""
CertSetCertificateContextProperty(pRecipientCert, CERT_KEY_PROV_INFO_PROP_ID, 0, &ckpi);

// но установка сертификата завершается с ошибкой 0x80090020h, NTE_FAIL
CryptSetKeyParam(hExchKey, KP_CERTIFICATE, pRecipientCert->pbCertEncoded, 0);

Offline Максим Коллегин  
#2 Оставлено : 26 июля 2018 г. 19:51:54(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 734 раз в 632 постах
Нужно использовать другое свойство: CERT_KEY_CONTEXT_PROP_ID
Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Andrew.V оставлено 26.07.2018(UTC)
Offline Андрей Писарев  
#3 Оставлено : 26 июля 2018 г. 21:17:29(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,081
Мужчина
Российская Федерация

Сказал «Спасибо»: 612 раз
Поблагодарили: 2375 раз в 1868 постах
Andrew.V,

Результаты функций также нужно проверять.

Техническую поддержку оказываем тут
Наша база знаний
Offline Andrew.V  
#4 Оставлено : 26 июля 2018 г. 23:01:04(UTC)
Andrew.V

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: Максим Коллегин Перейти к цитате
Нужно использовать другое свойство: CERT_KEY_CONTEXT_PROP_ID


Большое спасибо. Это то что нужно.
Offline Andrew.V  
#5 Оставлено : 26 июля 2018 г. 23:04:22(UTC)
Andrew.V

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей Писарев Перейти к цитате
Andrew.V,
Результаты функций также нужно проверять.


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