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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Pavel Bell  
#1 Оставлено : 26 апреля 2022 г. 20:51:05(UTC)
Pavel Bell

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день, у меня есть необходимость программно проверять присланные документы от Гос организации.
Приходят письма в которых содержится RTF документ и отсоединенная подпись.
Подписывать ничего не надо, надо только проверять.

Целевая ОС Ubuntu 20.04, язык Python.

Установил и собрал все по инструкции https://docs.cryptopro.r...es/pycades/pycades-build
Модуль импортируется.

Теперь как я понимаю нужно установить корневой сертификат? Если да, где его можно взять?
В онлайн сервисах есть возможность проверить подпись, там же можно получить информацию о сертификате, его надо установить в качестве корневого?
Offline Pavel Bell  
#2 Оставлено : 27 апреля 2022 г. 20:38:34(UTC)
Pavel Bell

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

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

Сказал(а) «Спасибо»: 1 раз
Установил необходимые сертификаты и проверил.
/opt/cprocsp/bin/amd64/cryptcp -verify -detached -fext sig -thumbprint ... file_name.rtf
Госы шлют подпись с расширение sig, у вас по умолчанию sgn.

Я надеюсь, что для процедуры проверки подписи лицензию не надо покупать?
Что будет когда истечет временная?

Отредактировано пользователем 27 апреля 2022 г. 20:40:13(UTC)  | Причина: Не указана

Offline Андрей *  
#3 Оставлено : 27 апреля 2022 г. 20:49:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Автор: Pavel Bel Перейти к цитате


Я надеюсь, что для процедуры проверки подписи лицензию не надо покупать?
Что будет когда истечет временная?


Не требуется, после истечения - будет проверять.
Техническую поддержку оказываем тут
Наша база знаний
Offline Pavel Bell  
#4 Оставлено : 28 апреля 2022 г. 22:06:59(UTC)
Pavel Bell

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

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

Сказал(а) «Спасибо»: 1 раз
Не получается почему то через pycades сделать проверку.

Пока тупо в лоб пытаюсь делать так:
Цитата:

rtf = 'notification_on.rtf'
file = open(rtf, 'rb')
content = file.read().decode('ascii')
file.close()

hashedData = pycades.HashedData()
hashedData.Algorithm = pycades.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
hashedData.Hash(content)

sig = open('notification_on.rtf.sig', 'rb')
raw_signature = sig.read()
sig.close()
signature = base64.encodebytes(raw_signature).decode('ascii')

_signedData = pycades.SignedData()
_signedData.VerifyHash(hashedData, signature, pycades.CADESCOM_CADES_BES)


Exception: Internal error. (0x8009200E)

Судя по коду ошибки это: The signed cryptographic message does not have a signer for the specified signer index.

Что я не так делаю?
Offline Андрей *  
#5 Оставлено : 28 апреля 2022 г. 23:01:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
VerifyHash

В архиве можете приложить файлы?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 28 апреля 2022 г. 23:03:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
почему не используется VerifyCades?
Техническую поддержку оказываем тут
Наша база знаний
Offline Pavel Bell  
#7 Оставлено : 28 апреля 2022 г. 23:37:08(UTC)
Pavel Bell

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
почему не используется VerifyCades?


Я руководствовался примером: "Создание и проверка отделенной подписи" https://docs.cryptopro.r...ades-signhash-verifyhash

Отредактировано пользователем 6 мая 2022 г. 8:07:39(UTC)  | Причина: Не указана

Offline Андрей *  
#8 Оставлено : 28 апреля 2022 г. 23:50:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
В файле cms в der, там нет кодирования.
Т.е. нужно проверять der\base64(строка\со служебными заголовками).

Убрать декодирование из base64, получится вот так:

Код:
rtf = 'notification_on.rtf'
file = open(rtf, 'rb')
content = file.read().decode('ascii')
file.close()

hashedData = pycades.HashedData()
hashedData.Algorithm = pycades.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
hashedData.Hash(content)

sig = open('notification_on.rtf.sig', 'rb')
signature = sig.read()
sig.close() 

_signedData = pycades.SignedData()
_signedData.VerifyHash(hashedData, signature, pycades.CADESCOM_CADES_BES)



проверяется?

либо content передать в _signedData.Content
и
_signedData.VerifyCades(signature, pycades.CADESCOM_CADES_BES)
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Pavel Bell оставлено 29.04.2022(UTC)
Offline Pavel Bell  
#9 Оставлено : 29 апреля 2022 г. 10:31:04(UTC)
Pavel Bell

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

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

Сказал(а) «Спасибо»: 1 раз
Спасибо за советы, вот что получается:
signature должна быть строкой, иначе TypeError: argument 2 must be str, not bytes
если сделать:

Цитата:

_signedData.VerifyHash(hashedData, str(signature), pycades.CADESCOM_CADES_BES)

то Exception: Internal error. (0x8009100E)

если через VerifyCades
_signedData.VerifyCades(str(signature), pycades.CADESCOM_CADES_BES)

то Exception: Internal error. (0x8009100E)


Ошибки одинаковые, в обоих случаях, но отличаются от предыдущей
Видимо как то не так передается файл подписи.

Пробовал разные декодирования, но они не проходят.
В чем может быть дело?
Offline Андрей *  
#10 Оставлено : 27 мая 2022 г. 13:56:11(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
str что делает?

Функции или бинарные данные или base64(бинарные данные) принимают.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.