Статус: Участник
Группы: Участники
Зарегистрирован: 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);
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,423  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 734 раз в 632 постах
|
Нужно использовать другое свойство: CERT_KEY_CONTEXT_PROP_ID |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,081   Сказал «Спасибо»: 612 раз Поблагодарили: 2375 раз в 1868 постах
|
Andrew.V,
Результаты функций также нужно проверять.
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 12  Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Автор: Максим Коллегин  Нужно использовать другое свойство: CERT_KEY_CONTEXT_PROP_ID Большое спасибо. Это то что нужно.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 12  Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей Писарев  Andrew.V, Результаты функций также нужно проверять.
Спасибо, но в примере сильно урезанный код. Результат завершения и GetLastError() обязательно проверяется.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close