Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Здравствуйте! Имеется задача подписывать сообщение в формате PKCS7 Из примеров видно, что это делается функцией CryptSignMessage, которая в свою очередь требует список параметров в числе которых PCCERT_CONTEXT. В моём случае у меня есть только ссылка на CSP, которую я получаю через CryptAcquireContext() Я предварительно создал контейнер, получил через УЦ сертификат и импортировал его в контейнер
Хочется понять, как вытащить сертификат, имея дескриптор криптопровайдера
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,429
Сказал(а) «Спасибо»: 37 раз Поблагодарили: 573 раз в 399 постах
|
Здравствуйте. Чтобы находиться в рамках "белого API", вам нужен сертификат, установленный в хранилище со ссылкой на закрытый ключ. Его надо передавать в CryptSignMessage. CryptAcquireContext не нужен. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Да, вот я пытаюсь получить серт как то так
HCERTSTORE store_handle = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER, L"\\\\.\\HDIMAGE\\andrey");
PCCERT_CONTEXT pTargetSert (0); pTargetSert = CertFindCertificateInStore(store_handle, MY_ENCODING_TYPE, 0, CERT_FIND_ANY, 0, pTargetSert);
И не получается
Знающие люди сказали, что нужно загрузить сертификат из контейнера в локальное или In-memory хранилище и потом получать ссылку на него. А я не могу найти информацию, как это сделать
CpTools, например, тоже подписывает что-то серфикатом только если его из контейнера установить в локальное хранилище
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Вот что написали мне знающие люди Цитата:если сертификат присутствует только в контейнере, то его можно оттуда установить либо в my либо во временное хранилище. главное не забыть прописать ссылку на закрытый ключ CERT_KEY_PROV_INFO_PROP_ID
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,429
Сказал(а) «Спасибо»: 37 раз Поблагодарили: 573 раз в 399 постах
|
Сертификат в хранилище со ссылкой на закрытый ключ проще всего установить с помощью "Инструментов КриптоПро" (cptools), входящих в состав КриптоПро CSP 5.0: на вкладке "контейнеры" выбрать контейнер и нажать "установить сертификат". Если сертификата нет в контейнере, то подключить носитель (токен), после этого на вкладке "сертификаты" нажать "установить сертификаты" и выбрать файл с личным сертификатом. Здесь он установится в личное хранилище тоже со ссылкой на закрытый ключ, если этот закрытый ключ был доступен на момент установки (поэтому надо сперва подключить носитель). Если не был доступен, то встанет в хранилище "Другие пользователи". P.S. Установка личных сертификатов - это настройка окружения, в общем случае задача сложная, поэтому её не стоит делать в прикладном ПО. Вместо этого есть подходящие инструменты в составе КриптоПро CSP. Для консоли - это certmgr. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close