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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Arc_75  
#1 Оставлено : 25 марта 2021 г. 15:00:57(UTC)
Arc_75

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

Группы: Участники
Зарегистрирован: 25.03.2021(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 4 раз
Добрый день.

Ситуация следующая:

Имеется файл и его хэш, присланные извне. Необходимо по хэшу создать подпись.
"Bk47tjgnibgYllgtec/q2YUNAcp2kXdd/qHthbbIOQs="

При попытке передать в oSignedData.SignHash сам хэш получаю ошибку (Параметр задан неверно. (0x80070057))
Вычитал на этом форуме, что туда нужно передать HashedData, предварительно проинициализировав его своим хэшем, однако такой вариант приводит к ошибке в функции SetHashValue (Недопустимые данные. (0x8007000D)).
Проверил документацию по функции SetHashValue и попробовал конвертнуть хэш в HEX. Ошибка (Параметр задан неверно. (0x80070057).



Функция для конвертации в HEX


Варианты исчерпаны. Пожалуйста подскажите куда копать?

Отредактировано пользователем 25 марта 2021 г. 15:06:42(UTC)  | Причина: Не указана

Offline Arc_75  
#2 Оставлено : 25 марта 2021 г. 19:15:02(UTC)
Arc_75

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

Группы: Участники
Зарегистрирован: 25.03.2021(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 4 раз
Попробовал разные методы. Кодировал/декодировал подписи, хэши и файлы в/из Base64. Попробовал другие методы. В частности алгоритм создания хэша yield oHashedData.Hash(content) возвращает хэш очень сильно отличный от присланного хэша, не смотря на использование одинакового алгоритма(по документации):

Прислали: "JYJ58mSoYp8yysdCt2WXoks1/tBzV6tqlJD+VPyEV7A="
Мой: "NTk2REJCNTdFQ0E3REIzNEMxRDdFMUVGNzYyRUZBODExODlDOEFCRUVFRDQ3NkNBNkEzMkQ2MDJENTFEMTFENA=="

В случае генерации собственного хэша и создания подписи следующим образом:
sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, CADESCOM_CADES_BES);
Сервис документооборота возвращает ошибку: "Ошибка проверки ЭП: подпись недействительна, не соответствует файлу или испорчена"

Если же генерировать подпись следующим образом:
var sRawSignature = yield cryptopro.plugin.CreateObjectAsync("CAdESCOM.RawSignature")
sSignedMessage = yield sRawSignature.SignHash(oHashedData, oCertificate);
То ошибка будет следующей: "Ошибка при проверке ЭП документа: не удалось извлечь сертификат"
Offline Андрей *  
#3 Оставлено : 25 марта 2021 г. 19:55:46(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline Arc_75  
#4 Оставлено : 26 марта 2021 г. 11:10:18(UTC)
Arc_75

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

Группы: Участники
Зарегистрирован: 25.03.2021(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате
https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature


Спасибо за ответ, Андрей.

К сожалению, я уже пробовал этот вариант ранее. Он приводит к ошибке распознавания сертификата на стороне.
Насколько я понимаю, дело в том, что алгоритм необработанной подписи - ГОСТ Р 34.10-2012. В то время как моя подпись ГОСТ 34.11-2012 256 и необходимо реализовать функционал под неё.
Offline Андрей *  
#5 Оставлено : 26 марта 2021 г. 12:28:11(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Автор: Arc_75 Перейти к цитате
Автор: Андрей * Перейти к цитате
https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature


Спасибо за ответ, Андрей.

К сожалению, я уже пробовал этот вариант ранее. Он приводит к ошибке распознавания сертификата на стороне.
Насколько я понимаю, дело в том, что алгоритм необработанной подписи - ГОСТ Р 34.10-2012. В то время как моя подпись ГОСТ 34.11-2012 256 и необходимо реализовать функционал под неё.


Я подписал по хешу (декодировал из base64, преобразовал в hex):
258279F264A8629F32CAC742B76597A24B35FED07357AB6A9490FE54FC8457B0

Проверьте.

Snimok ehkrana ot 2021-03-26 13-25-47.png (46kb) загружен 19 раз(а).

архив с CMS:
signed.zip (2kb) загружен 3 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Arc_75 оставлено 26.03.2021(UTC)
Offline Андрей *  
#6 Оставлено : 26 марта 2021 г. 12:36:14(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Автор: Arc_75 Перейти к цитате

Насколько я понимаю, дело в том, что алгоритм необработанной подписи - ГОСТ Р 34.10-2012. В то время как моя подпись ГОСТ 34.11-2012 256 и необходимо реализовать функционал под неё.


Может просто забыли исправить константы в примере?
Там же CADESCOM_HASH_ALGORITHM_CP_GOST_3411 указан (1994 год).
А не обходим cadesplugin.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 26 марта 2021 г. 12:37:46(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
и вместо oRawSignature = yield cadesplugin.CreateObjectAsync("CAdESCOM.RawSignature");
нужно:
oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
тогда всё будет, как положено, CMS, а не RAW.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Arc_75 оставлено 26.03.2021(UTC)
Offline Андрей *  
#8 Оставлено : 26 марта 2021 г. 12:39:20(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Вот ссылка на пример - https://docs.cryptopro.r...-samples-cades-sign-hash
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Arc_75 оставлено 26.03.2021(UTC)
Offline Arc_75  
#9 Оставлено : 26 марта 2021 г. 13:10:25(UTC)
Arc_75

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

Группы: Участники
Зарегистрирован: 25.03.2021(UTC)
Сообщений: 5

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате
Автор: Arc_75 Перейти к цитате
Автор: Андрей * Перейти к цитате
https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature


Спасибо за ответ, Андрей.

К сожалению, я уже пробовал этот вариант ранее. Он приводит к ошибке распознавания сертификата на стороне.
Насколько я понимаю, дело в том, что алгоритм необработанной подписи - ГОСТ Р 34.10-2012. В то время как моя подпись ГОСТ 34.11-2012 256 и необходимо реализовать функционал под неё.


Я подписал по хешу (декодировал из base64, преобразовал в hex):
258279F264A8629F32CAC742B76597A24B35FED07357AB6A9490FE54FC8457B0

Проверьте.

Snimok ehkrana ot 2021-03-26 13-25-47.png (46kb) загружен 19 раз(а).

архив с CMS:
signed.zip (2kb) загружен 3 раз(а).


Андрей, большое спасибо за помощь. Ваша подсказка по декодированию очень помогла в понимании, что именно требуется для подписания.
Я ещё раз попробовал необработанную подпись, после чего попытался подписать для ГОСТ 34.11-2012 улучшенной подписью.

В итоге получилось подписать документ для СБИС по их хэшу используя следующую конструкцию:



Проблема решена. Спасибо!
Offline Андрей *  
#10 Оставлено : 26 марта 2021 г. 13:12:40(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
Цитата:
.propset_Content(content);

а это зачем?
Нет никакого content же, есть инициализация сразу хеша
oHashedData.SetHashValue(base64ToHex(hash));
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Arc_75 оставлено 26.03.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.