Статус: Новичок
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 5 Откуда: Москва
|
Написал программу, которая подписывает файл с помощью высокоуровневых функций CryptSignMessage() из MS CryptoAPI. У меня и еще на нескольких машинах программа отрабатывает без сбоев.
Однако на двух машинах программа дает сбой: первый вызов CryptSignMessage() приводит к ошибке 0x8009200B ("Не удается найти сертификат и закрытый ключ для расшифровки").
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Возможно, на этих двух машинах нет привязки закрытого ключа к сертификату подписчика. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 5 Откуда: Москва
|
А каким образом связать сертификат с закрытым ключом на конкретной машине? Я не использую хранилище сертификатов, а получаю сертификат с выбранного пользователем типа считывателя. Отредактировано пользователем 8 апреля 2009 г. 17:03:59(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 5 Откуда: Москва
|
Спасибо, вторая ссылка оказалась весьма полезной!
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 5 Откуда: Москва
|
Добрый день!
Мое ПО успешно работало с Crypto-Pro CSP версии 3. Тогда задача стояла в подписывании документов с помощью ЭЦП. При этом сертификаты необходимо было брать непосредственно со считывателя (без использования хранилища сертификатов). Вызов функции с указанными параметрами CryptAcquireContext(&hProv, "", "", 75, 0) позволял это сделать в UI-окне, в котором можно было выбрать нужный тип считывателя.
В версии 3.6 Crypto-Pro CSP вызов CryptAcquireContext(&hProv, "", "", 75, 0) приводит к появлению того же окна, но при выборе считывателя выдается "Keyset does not exist", даже если ключевой носитель вставлен в считыватель.
Почитав форум, обнаружил, что вызов CryptAcquireContext(&hProv, "", "", 75, 0) опрашивает контейнер по умолчанию на считывателе по умолчанию. То есть криптопровайдер не находит контейнер по умолчанию.
Подскажите, пожалуйста, как в этом случае выбрать для подписи сертификат с нужного считывателя - ruToken, eToken, реестр? Ведь система ничего не знает о контейнере на носителе, который еще не вставлен в считыватель.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А как в принципе можно выбрать сертификат, которого в системе нет? Сначала Вам надо открыть провайдер по имени считывателя, перебрать там все контейнеры и уже из них выбирать. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 5 Откуда: Москва
|
Спасибо за быстрый ответ!
Попробовал предложенный Вами вариант, подходит!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close