Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
Добрый день. Не мог найти подходящей темы. Прошу прощения если дублирую что-то. Мне нужно подписать данные ключом, выбранным пользователем. Делаю выбор функцией CryptUIDlgSelectCertificateFromStore, получаю контекст сертификата. Как мне можно получить контекст провайдера, зная контекст сертификата? Делал, передавая в CryptAcquireContext имя хранилища, но как узнать его имя или список возможных имен?
Пробовал подписывать CryptSignMessage, передав контекст сертификата через CRYPT_SIGN_MESSAGE_PARA. Но она заканчивается ошибкой. Не мог понять... Подскажите, пожалуйста, возможно у меня вообще не правильный подход. Спасибо!
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: user.b  Добрый день. Не мог найти подходящей темы. Прошу прощения если дублирую что-то. Мне нужно подписать данные ключом, выбранным пользователем. Делаю выбор функцией CryptUIDlgSelectCertificateFromStore, получаю контекст сертификата. Как мне можно получить контекст провайдера, зная контекст сертификата? Делал, передавая в CryptAcquireContext имя хранилища, но как узнать его имя или список возможных имен?
Пробовал подписывать CryptSignMessage, передав контекст сертификата через CRYPT_SIGN_MESSAGE_PARA. Но она заканчивается ошибкой. Не мог понять... Подскажите, пожалуйста, возможно у меня вообще не правильный подход. Спасибо! Между сертификатом и криптопровайдером изначально вообще отсутствует какая-либо связь. То есть сертификат это по сути только набор полей с какими-то значениями. То, что в одном из полей сохранена подпись, сделанная с помощью какого-то криптопровайдера, никак не может говорить о какой-то связи. Наиболее перспективная функция в вашем случае - CryptAcquireCertificatePrivateKey. Здесь есть возмжность импортировать публичный ключ из сертификата с одновременным получением контекста криптопровайдера. Есть функции связывания контейнера ключа с сертификатом, но я думаю что пока это лишнее в вашем случае. |
С уважением, Юрий Строжевский |
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
В контексте сертификата может быть прописана ссылка на ключ, если прописана, то вышеприведенная функция поможет. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
Автор: maxdm  В контексте сертификата может быть прописана ссылка на ключ, если прописана, то вышеприведенная функция поможет. А где эта ссылка, в какой структуре? Если ключ хранится на носителе, как можно открыть контекст провайдера для его, что указать в имени хранилища?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
Автор: maxdm  Да, спасибо. А скажите как обратиться к ключу, если его сертификат не установлен? Например, он вставлен на сменном носителе. Я так понимаю, CryptUIDlgSelectCertificateFromStore в этом случае не поможет. PS Всем спасибо за помощь. И еще раз прошу прощения если задаю банальные вопросы, первый раз столкнулся со всем этим и разобраться сам не смог.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
Можно открыть носитель по имени считывателя или перечислить все контейнеры в системе. Поищите здесь, вопрос обсуждался. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2014(UTC) Сообщений: 10 
|
Автор: maxdm  Можно открыть носитель по имени считывателя или перечислить все контейнеры в системе. Поищите здесь, вопрос обсуждался. Да, нашел кое-что, понял. Спасибо. Дело в том, что у меня сейчас только ключи от вашего тестового УЦ. В конце операции генерируется сертификат с ключами. Я могу эти ключи использовать как-то не устанавливая сертификат? Или я должен сгенерить ключи сам и указать контейнер на них в УЦ с опцией Использовать существующий набор ключей? Отредактировано пользователем 25 апреля 2014 г. 18:30:25(UTC)
| Причина: Не указана
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close