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

Уведомление

Icon
Error

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

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

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

Доброго времени суток!

Как правильно проверить отделенную подпись с использованием библиотеки pycades?
Для проверки имею файл формата .pdf и .sig к нему. SignedData в качестве атрибута Content принимает только строковое значение, VerifyCades в качестве строки также принимает строку. Каким образом корректно использовать этот функционал при работе с потоком байтов?

Отредактировано пользователем 26 июля 2022 г. 9:56:36(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 26 июля 2022 г. 10:06:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
Здравствуйте.

Указать, что данные закодированы в base64,
передать в контент pdf в base64, вызвать проверку.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 26 июля 2022 г. 10:09:41(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
Особенности работы с данными

пример (на JS)
https://docs.cryptopro.r...in-samples-sign-detached

Цитата:
// Значение свойства ContentEncoding должно быть задано до заполнения свойства Content
yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
yield oSignedData.propset_Content(dataInBase64);

Техническую поддержку оказываем тут
Наша база знаний
Offline Kokosjan  
#4 Оставлено : 26 июля 2022 г. 10:56:27(UTC)
Kokosjan

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

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

Пробовал передавать значения в base64. При валидации получаю ошибку Exception: Internal error. (0x8009200E)

Вот такой код:

import pycades
import base64

signedata = pycades.SignedData()
signedata.ContentEncoding = pycades.CADESCOM_BASE64_TO_BINARY

data = open("report.pdf","rb").read()
encd = base64.b64encode(data)

sgn = open("report.pdf.sig","rb").read()
encs = base64.b64encode(sgn)

signedata.Content = encd.decode('utf-8')

signedata.VerifyCades(encs.decode('utf-8'), pycades.CADESCOM_CADES_DEFAULT, True)
Offline Kokosjan  
#5 Оставлено : 26 июля 2022 г. 11:44:12(UTC)
Kokosjan

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

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

Насолько я понимаю, ошибка имеет расшифровку The signed cryptographic message does not have a signer for the specified signer index.
В чём может быть причина такой ошибки?
Offline Андрей *  
#6 Оставлено : 26 июля 2022 г. 11:48:55(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
Автор: Kokosjan Перейти к цитате
Насолько я понимаю, ошибка имеет расшифровку The signed cryptographic message does not have a signer for the specified signer index.
В чём может быть причина такой ошибки?


Перечисление CADESCOM_CADES_TYPE

Если указать CADESCOM_CADES_BES - ошибка есть?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#7 Оставлено : 26 июля 2022 г. 11:49:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
encs.decode('utf-8') - зачем?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#8 Оставлено : 26 июля 2022 г. 11:50:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
+ проверить, что report.pdf.sig - бинарный, вероятно, он уже закодирован в base64? Если закодирован - не нужно повторно кодировать...
Техническую поддержку оказываем тут
Наша база знаний
Offline Kokosjan  
#9 Оставлено : 26 июля 2022 г. 12:04:09(UTC)
Kokosjan

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

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

Цитата:
Если указать CADESCOM_CADES_BES - ошибка есть?

Да, ошибка та же самая

Цитата:
encs.decode('utf-8') - зачем?

VerifyCades в качестве первого аргумента принимает только строку, таким образом массив в base64 из типа bytes перевожу в str

Цитата:
+ проверить, что report.pdf.sig - бинарный, вероятно, он уже закодирован в base64? Если закодирован - не нужно повторно кодировать...


Не похоже на base64 report.pdf.sig (3kb) загружен 5 раз(а).

Offline Андрей *  
#10 Оставлено : 26 июля 2022 г. 12:17:16(UTC)
Андрей *

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

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

Сказал «Спасибо»: 618 раз
Поблагодарили: 2387 раз в 1878 постах
b64encode разве не строку возвращает?
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.