Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 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++ ), а если объекта нет то и к аттрибутам подписи получить доступ невозможно |
|
1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2020(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 4 раз
|
Развивая тему. Может быть я что-то глобально не понимаю, но как тогда пользоваться этим расширением для проектов более серьёзного уровня, чем валидна/невалидна?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,040 Сказал(а) «Спасибо»: 88 раз Поблагодарили: 226 раз в 213 постах
|
Автор: Владимир_ge74 Развивая тему. Может быть я что-то глобально не понимаю, но как тогда пользоваться этим расширением для проектов более серьёзного уровня, чем валидна/невалидна? для проектов более серьезного уровня использовать xlt1 а не cades-bes не надо игнорировать проверку сертификатов на построение цепочек и отозванность. доверия к аттрибуту cades-bes signing time нет, т.к. там берется время локальной машины. перевели время назад, подписали валидным в прошлом ключом - вы примите такой документ с задним числом? если хотите только математическую проверку используйте CAdES API (C++) |
|
1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close