Статус: Активный участник
Группы: Участники
Зарегистрирован: 26.12.2024(UTC) Сообщений: 34  Сказал(а) «Спасибо»: 25 раз Поблагодарили: 1 раз в 1 постах
|
Всем привет, есть задача проверить подписанный PDF (со встроенной подписью) на валидность подписи и достать информацию о подписе и сертификату. На Ubuntu собрал расширение и установил библиотеку Pycades, Код по проверке отделенных подписей формата .sig, .p7s работает на ура, а вот проверка совмещенной подписи не работает.. К сожалению не могу понять в чем проблема, при проверке натыкаюсь на ошибку Internal error. (0x8009100E) при этом на https://dss.cryptopro.ru/verify/#/signature файл проходит проверку Для проверки использую вот такой код:
import pycades import base64 signedata = pycades.SignedData() signedata.ContentEncoding = pycades.CADESCOM_BASE64_TO_BINARY sgn = open("/home/egorov/.venvs/crypto/Протокол_18122024_180922- подписан.pdf","rb").read() encs = base64.b64encode(sgn) signedata.VerifyCades(encs.decode('utf-8'), pycades.CADESCOM_CADES_BES) try: print(f"Проверка подписи: действительна") except: print(f"Проверка подписи: не действительна")
Спасибо. Отредактировано пользователем 27 декабря 2024 г. 11:50:04(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,686   Сказал «Спасибо»: 572 раз Поблагодарили: 2303 раз в 1804 постах
|
Здравствуйте.
Потому что CAdESCOM не умеет работать с PAdES (встроенная ЭП).
Обычно это решается использованием itext проверка\подписание, вероятно, искать в сети по: Python itext |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 26.12.2024(UTC) Сообщений: 34  Сказал(а) «Спасибо»: 25 раз Поблагодарили: 1 раз в 1 постах
|
Спасибо. Я правильно понял - то есть чтобы проверить pdf с встроенной, нужно сначала текстовую часть вытащить? (например как тут - https://habr.com/ru/articles/225647/). И если не сложно могли бы вы дать какие-то примеры реализации такой проверки?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,686   Сказал «Спасибо»: 572 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: egow2806  Спасибо. Я правильно понял - то есть чтобы проверить pdf с встроенной, нужно сначала текстовую часть вытащить? (например как тут - https://habr.com/ru/articles/225647/). И если не сложно могли бы вы дать какие-то примеры реализации такой проверки? нет, подписывается не только текст. На форуме можно поискать по itextsharp, подписание точно было, по проверке основное: Код:
PdfReader reader = new PdfReader(FilePDF);
AcroFields af = reader.AcroFields;
List<string> names = af.GetSignatureNames();
PdfDictionary singleSignature = af.GetSignatureDictionary(name);
PdfString asString1 = singleSignature.GetAsString(PdfName.CONTENTS);
byte[] signatureBytes = asString1.GetOriginalBytes();
RandomAccessFileOrArray safeFile = reader.SafeFile;
PdfArray asArray = singleSignature.GetAsArray(PdfName.BYTERANGE);
using (
Stream stream =
(Stream)
new RASInputStream(
new RandomAccessSourceFactory().CreateRanged(
safeFile.CreateSourceView(),
(IList<long>)asArray.AsLongArray())))
{
using (MemoryStream ms = new MemoryStream((int)stream.Length))
{
stream.CopyTo(ms);
byte[] data = ms.GetBuffer();
ContentInfo contentInfo = new ContentInfo(data);
SignedCms signedCms = new SignedCms(contentInfo, true);
signedCms.Decode(signatureBytes);
try
{
signedCms.CheckSignature(true);
}
catch ( Exception ex)
{
... ex.Message.ToString();
}
и цикл по подписантам:
.. sinerInfo in signedCms.SignerInfos
... sinerInfo.Certificate - все данные из сертификата ...
...
..
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close