Статус: Участник
Группы: Участники
Зарегистрирован: 25.02.2015(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Добрый день! Стоит задача получить открепленную подпись (PKCS#7). С помощью примера CryptMsgSign я понял как получить значение подписи. Но не понял как должен выглядеть .sig файл, какая структура должна быть у файла? Нужно просто достать сертификат и рядом с подписью его в файл положить? Или как-то по другому? Искал информацию в гугле, не нашел даже примеров .sig или .p7b файлов. На всякий случай - листинг программы: http://paste.ubuntu.com/10590147/И вывод в консоль: http://paste.ubuntu.com/10590157/Отредактировано пользователем 13 марта 2015 г. 13:38:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Array of pointers to CERT_CONTEXT structures to be included in the signed message. If the pSigningCert is to be included, a pointer to it must be in the rgpMsgCert array. Отредактировано пользователем 13 марта 2015 г. 13:50:22(UTC)
| Причина: https://msdn.microsoft.com/ru-RU/library/windows/desktop/aa381468(v=vs.85).aspx |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.02.2015(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Автор: maxdm Array of pointers to CERT_CONTEXT structures to be included in the signed message. If the pSigningCert is to be included, a pointer to it must be in the rgpMsgCert array. А можно более развернутый ответ получить? =) Где нужно использовать структуру CRYPT_SIGN_MESSAGE_PARA? Я попробовал положить массив с сертификатами в структуру CMSG_SIGNED_ENCODE_INFO, но получил опять же только подпись.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.02.2015(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Добрый день! При вызове функции CryptSignMessage() получил следующую ошибку: capi20: 0x355e09dc: :218 CryptAcquireCertificatePrivateKey () CertGetCertificateContextProperty(CERT_KEY_PROV_INFO_PROP_ID) failed! В документации было сказано Either the CERT_KEY_PROV_INFO_PROP_ID, or CERT_KEY_CONTEXT_PROP_ID property must be set for the context to provide access to the private signature key. Заполнил структуру CERT_KEY_CONTEXT. С помощью CertSetCertificateContextProperty() установил это свойство. В итоге вышло получить подпись, но сайт госуслуг говорит, что она невалидна. https://www.dropbox.com/...3-16%2014.56.49.png?dl=0Использовал для проверки эту форму - https://www.gosuslugi.ru/pgu/eds/. Пункт "Электронного документа. ЭП — отсоединенная, в формате PKCS#7". Листинг программы: http://paste.ubuntu.com/10608665/
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.02.2015(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
В общем, как обычно бывает, сначала спросишь, через 5 минут сам решение найдешь.
cbMessage = (strlen((TCHAR*) pbMessage) + 1) * sizeof(TCHAR); Убрал +1, подпись теперь валидна.
Непонятно, правда, почему так было написано в примере на MSDN.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close