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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline GTAlex  
#1 Оставлено : 29 марта 2023 г. 19:00:12(UTC)
GTAlex

Статус: Активный участник

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

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

Можно ли получить данные подписанта из отсоединённой подписи без подписываемого файла?
(или хотя бы с его хешем, а то файл очень большой - php "валится" по памяти)

пробую в PHPCades без set_Content - не пашет :(

вообще теоретически можно?


$signedData = new \CPSignedData();
$signedData->set_ContentEncoding(BASE64_TO_BINARY);

$signedData->set_Content($content);
$signedData->VerifyCades($signature, CADES_BES, 1);


// получаем подписантов
$signObject = $signedData->get_Signers();

....

Отредактировано пользователем 29 марта 2023 г. 19:03:26(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 29 марта 2023 г. 19:08:15(UTC)
Андрей *

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

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

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

try
попытка проверить
catch
прочитать подписанта


Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 30.03.2023(UTC)
Offline GTAlex  
#3 Оставлено : 30 марта 2023 г. 3:55:38(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 26 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

try
попытка проверить
catch
прочитать подписанта





вопрос в том как получить подписантов
$signObject = $signedData->get_Signers();

без вызова
$signedData->set_Content($content);
$signedData->VerifyCades($signature, CADES_BES, 1);

т.е. должен быть какой то отвязанный от самих данных метод, типа set_Signature($signature); чтобы саму отсоединённую подпись подгрузить

кстати, а где полный список всех методов PHPCades можно глянуть?
тут CPSignedData нету https://docs.cryptopro.r.../cadescom/cadescom_class

интересует дата подписания и сам подписант из отсоединённой подписи (без подгрузки самого подписываемого документа)

Отредактировано пользователем 30 марта 2023 г. 4:04:21(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 30 марта 2023 г. 9:20:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2051 раз в 1591 постах
в $content передать произвольные данные и перехватить исключение, далее в цикле получить сертификаты подписантов. Signers инициализируется после выполнения VerifyCades
Техническую поддержку оказываем тут
Наша база знаний
Offline v-t-b  
#5 Оставлено : 24 апреля 2023 г. 15:45:15(UTC)
v-t-b

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

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

Добрый день!

Пытался по предложенному принципу вытащить данные подписантов, но получаю ошибку.

Код:

def getSigners(_sign, cadesType=pycades.CADESCOM_CADES_BES, detached=False):
    signedData = pycades.SignedData()
    try:
        signedData.VerifyCades(_sign, cadesType, detached)
    except Exception as err:
        print('Verify fail')
        print(err)
    signers = signedData.Signers
    print("got signers")
    print(signers)
    return signers


signed_encoded_file = open('test.pdf.sig0', 'r').read()

_detached = True

signers = getSigners(signed_encoded_file, detached=_detached)

----------------
signers = signedData.Signers
Exception: Internal error. (0x800B0100)


Offline Андрей *  
#6 Оставлено : 24 апреля 2023 г. 16:46:50(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2051 раз в 1591 постах
Автор: v-t-b Перейти к цитате
Добрый день!

Пытался по предложенному принципу вытащить данные подписантов, но получаю ошибку.

Код:

def getSigners(_sign, cadesType=pycades.CADESCOM_CADES_BES, detached=False):
    signedData = pycades.SignedData()
    try:
        signedData.VerifyCades(_sign, cadesType, detached)
    except Exception as err:
        print('Verify fail')
        print(err)
    signers = signedData.Signers
    print("got signers")
    print(signers)
    return signers


signed_encoded_file = open('test.pdf.sig0', 'r').read()

_detached = True

signers = getSigners(signed_encoded_file, detached=_detached)

----------------
signers = signedData.Signers
Exception: Internal error. (0x800B0100)




...в $content передать произвольные данные ...

почему этого нет в коде?
Техническую поддержку оказываем тут
Наша база знаний
Offline v-t-b  
#7 Оставлено : 24 апреля 2023 г. 17:28:56(UTC)
v-t-b

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

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

Удалось получить список сертификатов
Код:

certs = signedData.Certificates


Вопрос: Насколько это соответствует использованным подписям? Есть ли способ извлечь дату подписи?
Offline v-t-b  
#8 Оставлено : 24 апреля 2023 г. 17:38:21(UTC)
v-t-b

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

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

Цитата:
...в $content передать произвольные данные ...

почему этого нет в коде?



Добавил строку
Код:
signedData.Content = "sdfgfhfdghf"
перед получением списка подписантов. И преобразование файла
Код:
 base64.b64encode(signed_encoded_file).decode()
.

Всё равно выдаёт:
Код:

Internal error. (0x8009200E)
------------------
Traceback (most recent call last):
  File "py_test.py", line 117, in <module>
    signers = signedData.Signers
Exception: Internal error. (0x800B0100)


Первая ошибка на валидации, вторая - получение списка подписантов.
Offline v-t-b  
#9 Оставлено : 26 апреля 2023 г. 9:37:41(UTC)
v-t-b

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

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

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