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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Владимир_ge74  
#1 Оставлено : 14 мая 2021 г. 8:46:50(UTC)
Владимир_ge74

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Доброго дня!

Код:
import sys
sys.path.append(r'/home/pycades/pycades_0.1.22769/build')
import pycades
import base64


class File:
    def __init__(self, file_path):
        self.__file_path = file_path
    
    def get_content_in_bytes(self):
        file = open(self.__file_path, 'rb')
        content = file.read()
        file.close()
        return content

    def get_content_in_base64(self):
        bytes = self.get_content_in_bytes()
        return base64.encodebytes(bytes).decode('ascii') #base64 - это кодировка ascii


class InternalSign:

    def __init__(self, file_path):
        self.__file = File(file_path)
    
    def handle(self):
        signed_data = pycades.SignedData()
        signed_data.ContentEncoding = pycades.CADESCOM_BASE64_TO_BINARY
        signed_data.VerifyCades(self.__file.get_content_in_base64(), pycades.CADESCOM_CADES_BES, False)
        
        signers = signed_data.Signers


Эта строка:
signed_data.VerifyCades(self.__file.get_content_in_base64(), pycades.CADESCOM_CADES_BES, False)
выбрасывает исключение, если, например, подпись была действительна на момент подписания, но сейчас время действия сертификата истекло.
Если же её обернуть в try/except, то объект signed_data.Signers получить невозможно.

Отсюда вопрос. Как работать с невалидными подписями? Как получить, например, .SigningTime?

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

Offline Санчир Момолдаев  
#2 Оставлено : 21 мая 2021 г. 18:43:22(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 226 раз в 213 постах
Автор: Владимир_ge74 Перейти к цитате
Доброго дня!

Код:
import sys
sys.path.append(r'/home/pycades/pycades_0.1.22769/build')
import pycades
import base64


class File:
    def __init__(self, file_path):
        self.__file_path = file_path
    
    def get_content_in_bytes(self):
        file = open(self.__file_path, 'rb')
        content = file.read()
        file.close()
        return content

    def get_content_in_base64(self):
        bytes = self.get_content_in_bytes()
        return base64.encodebytes(bytes).decode('ascii') #base64 - это кодировка ascii


class InternalSign:

    def __init__(self, file_path):
        self.__file = File(file_path)
    
    def handle(self):
        signed_data = pycades.SignedData()
        signed_data.ContentEncoding = pycades.CADESCOM_BASE64_TO_BINARY
        signed_data.VerifyCades(self.__file.get_content_in_base64(), pycades.CADESCOM_CADES_BES, False)
        
        signers = signed_data.Signers


Эта строка:
signed_data.VerifyCades(self.__file.get_content_in_base64(), pycades.CADESCOM_CADES_BES, False)
выбрасывает исключение, если, например, подпись была действительна на момент подписания, но сейчас время действия сертификата истекло.
Если же её обернуть в try/except, то объект signed_data.Signers получить невозможно.

Отсюда вопрос. Как работать с невалидными подписями? Как получить, например, .SigningTime?


Добрый день!
ответ никак.
если подпись не прошла проверку, то объекта нет (т.к. вернулась ошибка: return в C++ ), а если объекта нет то и к аттрибутам подписи получить доступ невозможно
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
Владимир_ge74 оставлено 24.05.2021(UTC)
Offline Владимир_ge74  
#3 Оставлено : 24 мая 2021 г. 18:17:35(UTC)
Владимир_ge74

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Развивая тему. Может быть я что-то глобально не понимаю, но как тогда пользоваться этим расширением для проектов более серьёзного уровня, чем валидна/невалидна?
Offline Санчир Момолдаев  
#4 Оставлено : 24 мая 2021 г. 20:25:55(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 226 раз в 213 постах
Автор: Владимир_ge74 Перейти к цитате
Развивая тему. Может быть я что-то глобально не понимаю, но как тогда пользоваться этим расширением для проектов более серьёзного уровня, чем валидна/невалидна?


для проектов более серьезного уровня использовать xlt1 а не cades-bes
не надо игнорировать проверку сертификатов на построение цепочек и отозванность.

доверия к аттрибуту cades-bes signing time нет, т.к. там берется время локальной машины. перевели время назад, подписали валидным в прошлом ключом - вы примите такой документ с задним числом?

если хотите только математическую проверку используйте CAdES API (C++)
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
Владимир_ge74 оставлено 24.05.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.