Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Peperoni  
#1 Оставлено : 23 апреля 2019 г. 15:15:31(UTC)
Peperoni

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.11.2018(UTC)
Сообщений: 2
Российская Федерация

Адаптирую под Linux программу написанную для Windows. На Windows программа использует CryptoAPI, под Linux решил использовать CAPILite. Под Linux и CAPILite не срабатывает код для добавления второй подписи. Создание одиночной подписи на используемом сертификате срабатывает. Подписи используются отсоединенные.
Применяю следующий алгоритм для добавления второй отсоединенной подписи.
CryptSignMessage - создаем вторую отсоединенную подпись
CryptMsgOpenToDecode - открываем сообщение для второй подписи
CryptMsgUpdate - добавляем в сообщение BLOB со второй подписью
CryptMsgGetParam - извлекаем из сообщения структуру CMSG_CMS_SIGNER_INFO со второй подписью
CryptMsgOpenToDecode — открываем другое сообщение с первой исходной подписью
CryptMsgUpdate - добавляем в сообщение BLOB с первой исходной подписью
CryptMsgControl - добавляем в сообщение с первой исходной подписью структуру CMSG_CMS_SIGNER_INFO со второй подписью
На этом этапе выдается ошибка 80091004 «Invalid cryptographic message type». На Windows и CryptoAPI код работает, а под Linux и CAPILite — нет.
Пробовал также способ добавления подписи описанный тут
https://www.cryptopro.ru...ts&m=38007#post38007
Тоже самое на Windows и CryptoAPI код работает, а под Linux и CAPILite — нет.
Дистрибутив Linux: AltLinux рабочая станция 8.2 32-бит. КриптоПРО 5.0 последнее скачано с сайта.
В чем может быть причина сбоя выполнения кода на Linux и CAPILite?
Offline Русев Андрей  
#2 Оставлено : 26 апреля 2019 г. 15:35:35(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
На unix мы пока не поддерживаем CryptMsgControl(CMSG_CTRL_ADD_CMS_SIGNER_INFO). Точно работает такой сценарий:
CryptMsgOpenToDecode: открываем сообщение с первой отсоединённой подписью
CryptMsgUpdate: данные с первой подписью
CryptMsgUpdate: данные исходного сообщения
CryptMsgControl(CMSG_CTRL_ADD_SIGNER): добавляем вторую подпись
CryptMsgGetParam(CMSG_ENCODED_MESSAGE): получаем сообщение с двумя подписями

У этого подхода есть ограничение: нельзя добавить подпись, если среди подписей исходного сообщения нет ни одной с совпадающим алгоритмом хэширования.
Официальная техподдержка. Официальная база знаний.
Offline Peperoni  
#3 Оставлено : 28 апреля 2019 г. 16:58:29(UTC)
Peperoni

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.11.2018(UTC)
Сообщений: 2
Российская Федерация

Не понял про второй вызов CryptMsgUpdate:
Автор: Русев Андрей Перейти к цитате
CryptMsgUpdate: данные исходного сообщения

Что тут имелось ввиду?
Вообще добавление второй подпись при помощи CryptMsgControl(CMSG_CTRL_ADD_SIGNER) описано, как я отмечал, здесь:
https://www.cryptopro.ru...s&m=38007#post38007.
На Windows и CryptoAPI данный код отрабатывает нормально, подписи после этого проверяются корректно. А вот на Linux и CAPILite код отрабатывает без ошибок, зато при последующей проверке добавленная вторая подпись не проходит проверку. Утилита cptools пишет ошибку 0x80090006: Неправильная подпись. Хотя отпечаток выводит, имя подписанта тоже.
Можно поподробней о рабочем варианте добавления второй подписи для Linux и CAPILite?
Offline Русев Андрей  
#4 Оставлено : 14 июня 2019 г. 12:50:51(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
"данные исходного сообщения" - исходный текст.
Рабочего варианта для CAPILite нет, я об этом сразу написал.
Официальная техподдержка. Официальная база знаний.
Offline Андрей Русев  
#5 Оставлено : 26 марта 2020 г. 17:51:42(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Начиная с 2019-09-24 КриптоПро CSP 4.0.9971 Copernicus и 2019-12-04 КриптоПро CSP 5.0.11635 Golem поддержка CryptMsgControl(CMSG_CTRL_ADD_SIGNER) есть и в CAPIlite на *nix (см. CPCSP-9673).
Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
Санчир Момолдаев оставлено 27.03.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.