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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Дмитрий Дв.  
#1 Оставлено : 19 октября 2021 г. 18:20:49(UTC)
Дмитрий Дв.

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

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

Сказал(а) «Спасибо»: 9 раз
Требуется получить криптопровайдер при наличии контекста сертификата, можно ли впринципе его так получить? В примерах в документации вроде всё просмотрел

Изначально имеется файл .pfx с ключами и сертификатами, после считывания дайнного файла получаю
HCERTSTORE pfxStore = PFXImportCertStore(&blob, pass, PKCS12_IMPORT_SILENT);

Далее необходимо скопировать сертификаты в системное хранилище(с ключами без учёта промежуточных и рутовых сертификатов), для этого пробегаюсь по pfxStore:
while(0 != (pCertContext = CertEnumCertificatesInStore(hdStore, pCertContext))) {
...
}

Вот тут требуется получить криптопровайдер(например для определения пользовательский это сертификат или промежуточный), но криптопровайдер можно получить по имени контейнера(pszContainer), однако как определить имя контейнера по pCertContext непонятно.

Ещё с такой же проблемой думаю столкнусь и при подписи хэшей, так как там тоже требуется криптопровайдер, а при выборе сертификата для подписи изначально буду иметь тот же pCertContext пробежавшись через CertEnumCertificatesInStore

Отредактировано пользователем 19 октября 2021 г. 18:37:59(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 19 октября 2021 г. 18:57:05(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах

Добрый день.
Когда контейнер привязан к сертификату в хранилище Личные контейнер по сертификату можно получить 2 способами:
1) из соседней темы: https://www.cryptopro.ru...spx?g=posts&m=128137
CryptAcquireCertificatePrivateKey(context, 0, 0, &hProv, &dwKeySpec, &mustFree)
Данное действие разрешено с версии 4.0 R3 если не ошибаюсь.
2) Во всех версиях можно получить свойство контекста сертификата со ссылкой на контейнер (имя контейнера), затем использовать для получения через имя контейнера. Неудобство этого способа в в том что операций больше и приходится отдельно хранить dwKeySpec - он не нужен для получения контейнера, но внезапно нужен при подписании.

Обратите внимание, что сертификат вне хранилища не содержит ссылки на контейнер. Другими словами, даже создав контекст из такого файла сертификата ссылка там сама собой не появится - ее надо будет либо задать, либо найти такой же сертификат с проставленной ссылкой в хранилище.

Мне сложно сказать сработает ли получение ссылки для хранилища полученного командой PFXImportCertStore.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
Дмитрий Дв. оставлено 20.10.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.