Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Привязка сертификата к контейнеру. Автоматический выбор контейнера
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.11.2012(UTC) Сообщений: 2
|
Доброе время суток!
Имеем сертификат в хранилище на компьютере. Ссылки на контейнер с закрытым ключом у сертификата нет. Сертификата внутри самого контейнера нет. Стоит задача привязать сертификат к контейнеру. Использую для этого функцию CertSetCertificateContextProperty(,CERT_KEY_PROV_INFO_PROP_ID,). Как известно, нужно заполнить структуру
struct _CRYPT_KEY_PROV_INFO
где указать
LPWSTR pwszContainerName; - имя контейнера LPWSTR pwszProvName; - имя провайдера
Если всё указать явно (оба имени), то все замечательно привязывается. Если же присвоить этим полям NULL,
pwszContainerName = NULL; pwszProvName = NULL;
То привязка тоже срабатывает. Сначала думал, что провайдер берёт первый попавшийся контейнер и проставляет на него ссылку. Но как показала практика - это не так. Контейнеров у меня много, но привязка делается безошибочно к нужному. В связи с этим встает вопрос - обязательно ли всегда явно задавать имя провайдера и контейнера? Корретно ли будет ничего не указывать и при этом всегда рассчитывать на правильную привязку? Или может быть это работает только в случае с Крипто Про?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.10.2009(UTC) Сообщений: 121
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 3 раз в 3 постах
|
пробовали привязать сертификат к чужому контейнеру? :)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,421  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 734 раз в 632 постах
|
Нужно указывать оба имени, иначе будет привязка к дефолтному контейнеру дефолтного провайдера типа. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.11.2012(UTC) Сообщений: 2
|
cybermerlin написал:пробовали привязать сертификат к чужому контейнеру? :) Пробовал указать имя чужого контейнера. Привязка устанавливается, но при попытке воспользоваться сертификатом при подписи имеем ошибку "набор ключей не существует" maxdm написал:Нужно указывать оба имени, иначе будет привязка к дефолтному контейнеру дефолтного провайдера типа. Как ни странно дефолтная привязка в моем случае срабатывает всегда правильно. И это несмотря на приличное количество контейнеров в системе. Я думал, что криптопровайдер, если не указывать контейнер, сам проверяет соответствие сертификата всем установленным в системе контейнерам и устанавливает правильную привязку. Впрочем, теперь я понял, что гарантий здесь никаких нет.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.10.2012(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 3 раз
|
пишу прогу на бейсике, объявил структуру:
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _ Public Structure CRYPT_KEY_PROV_INFO <MarshalAs(UnmanagedType.LPWStr)> _ Public pwszContainerName As String <MarshalAs(UnmanagedType.LPWStr)> _ Public pwszProvName As String Public dwProvType As Int32 Public dwFlags As Int32 Public cProvParam As Int32 Public rgProvParam As CAPICOM._CRYPT_KEY_PROV_PARAM Public dwKeySpec As Int32 End Structure
pwszContainerName - я так понял, имя контейнера, и должно содержать значение наподобе "29565aa2-5b4d-499e-b349-2439c4f305a4"
что тогда есть pwszProvName? ясно, что это имя провайдера, какое тут должно быть значение тогда?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,022   Сказал «Спасибо»: 609 раз Поблагодарили: 2364 раз в 1860 постах
|
Можно посмотреть в реестре: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\ или запросить список через CryptoAPI. Для КриптоПРО: Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider dwProvType = 75 |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
vuan оставлено 29.12.2012(UTC)
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 09.10.2012(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 3 раз
|
ага, ясно, маленький вопрос: что должна содержать переменная типа PCCERT_CONTEXT? точнее, как ей присвоить контекстк сертификата? (Язык - С++)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,022   Сказал «Спасибо»: 609 раз Поблагодарили: 2364 раз в 1860 постах
|
|
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Привязка сертификата к контейнеру. Автоматический выбор контейнера
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close