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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline EgorOkhotin  
#1 Оставлено : 24 июня 2019 г. 9:09:09(UTC)
EgorOkhotin

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

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

Сказал(а) «Спасибо»: 4 раз
В структуре CERT_INFO нет ссылки на Container тогда, как при перечислении сертификатов утилитой certmgr есть, не подскажете как по сертификату определить ключевой контейнер?

Задача по сертификату выбрать ключевой контейнер и подписать данные.

Отредактировано пользователем 28 июня 2019 г. 8:49:26(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 25 июня 2019 г. 5:54:53(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 398 раз в 367 постах
Тут дело в том, что хранилище сертификатов может содержать свойства, которых нет в самом сертификате и ссылка на контейнер одно из них. В информации о самом сертификате CERT_INFO нет ссылки на контейнер, ведь ссылка на контейнер хранится как свойство в хранилище, а не в самом сертификате. Смысл в том, что сертификат или контекст сертификата может быть получен не из хранилища, а из файла (или области памяти) и в этом случае ссылка на контейнер будет недоступна. Придется перечислять все контейнеры и сравнивать открытый ключ (что и происходит при первичной установке в хранилище) или искать такой же сертификат в хранилище. Напротив, если контекст сертификата перечислен из хранилища, то он неявно содержит и свойства из хранилища, в том числе и информацию о ссылке на контейнер.


В итоге, если контекст сертификата перечислен из хранилища сертификатов, то 1) можно запросить свойство контекста сертификата CERT_KEY_PROV_INFO_PROP_ID с информацией о ссылке. Затем по информации можно запросить экземпляр криптопровайдера связанный с контекстом сертификата. Это разрешенный способ во всех версиях КриптоПро.

Если не особо нужно само имя контейнера, а нужен экземпляр криптопровайдера уже связанный с контекстом сертификата, то можно поступить еще проще и 2) вызвать функцию CryptAcquireCertificatePrivateKey. Опять же работает на контекстах из хранилища, разрешена без тематических исследований с 4.0.9944.

Отредактировано пользователем 25 июня 2019 г. 5:55:24(UTC)  | Причина: Не указана

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