Статус: Новичок
Группы: Участники
Зарегистрирован: 25.07.2025(UTC) Сообщений: 9  Откуда: Москва Сказал(а) «Спасибо»: 5 раз
|
Автор: Новожилова Елена  Елена, спасибо за совет. Пробую передать с свойство Content данные в формате байтовой последовательности получаю ошибку: Код:"Signature verification failed: Property 'CAdESCOM.CadesSignedData.Content' can not be set."
Могли бы подсказать пожалуйста, с чем может быть связано? Участок кода: Код:try:
logger.info(f"Checking signature: document={os.path.basename(document_path)}, signature={os.path.basename(signature_path)}")
cades = win32com.client.Dispatch('CAdESCOM.CadesSignedData')
with open(document_path, 'rb') as f:
content_bytes = f.read()
# Для DER содержимого, ContentEncoding должен быть установлен в CADESCOM_CONTENT_ENCODING_BINARY (1)
# При этом, CAdESCOM ожидает "сырые" байты, а не base64.
# Однако, Python COM-мост может автоматически обрабатывать bytes, но для ясности и соответствия
# документации (ContentEncoding = 1 для бинарных данных), мы передаем байты напрямую.
# Если бы мы передавали Base64, то ContentEncoding был бы 0.
cades.ContentEncoding = CADESCOM_CONTENT_ENCODING_BINARY
cades.Content = content_bytes # Передаем байты напрямую
with open(signature_path, 'rb') as f:
signature_bytes = f.read()
# Подпись в формате DER также передается как "сырые" байты.
# Метод VerifyCades принимает бинарную подпись, если она не в Base64.
# Если подпись в Base64, ее нужно было бы декодировать до передачи.
# Предполагаем, что .sig файл содержит DER-кодированную подпись.
signature_to_verify = signature_bytes
# Выбор типа подписи для проверки.
# В данном случае, .sig файл часто содержит PKCS#7 (DER), поэтому PKCS7_DETACHED
# является наиболее вероятным вариантом для открепленной подписи.
cades.VerifyCades(signature_to_verify, CADESCOM_CADES_TYPE_PKCS7_DETACHED, True)
# cades.VerifyCades(signature_to_verify, CADESCOM_CADES_TYPE_CADES_BES, True) # Если подпись CAdES BES
# cades.VerifyCades(signature_to_verify, CADESCOM_CADES_TYPE_CADES_T, True) # Если подпись CAdES T
# cades.VerifyCades(signature_to_verify, CADESCOM_CADES_TYPE_CADES_X_LONG_TYPE1, True) # Если подпись CAdES-X Long Type 1
# cades.Verify(signature_to_verify, True) # Универсальный метод проверки, который сам пытается определить тип
Ошибка возникает на строке: Код:cades.Content = content_bytes # Передаем байты напрямую
Если посмотреть, что сохранилось в переменной content_bytes, то можно увидеть, что структура будет похожа на: Код:<читаемые симовл><байтовый код><читаемые символы>
Если открыть файл PDF (который сохраняется как байтовая строка в переменную content_bytes) с помощью блокнота, то можно увидеть что-то похожее, что находится в переменной content_bytes. Начало файла: Код:%PDF-1.7
%ИИИИИИИ
1 0 obj
<</Type/Catalog/Version/1.7/Pages 3 0 R/Outlines 2 0 R/Metadata 73 0 R>>
endobj
2 0 obj
<</Type/Outlines>>
endobj
3 0 obj
<</Type/Pages/Kids[8 0 R]/Count 1/DefaultValue(GykqNSk/dAoeHHo8NSh6dBQfDnpoa3RvdGo=)>>
endobj
4 0 obj
<</Author()/CreationDate(D:20250516100310+03'00')/ModDate(D:20250516100310+03'00')/Producer(Aspose.PDF for .NET 21.5.0)/Subject()/Title()/Creator(Aspose Ltd.)>>
endobj
6 0 obj
<</Filter/FlateDecode/Length 8>>stream
xњ
endstream
endobj
7 0 obj
[/PDF]
endobj
8 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 595.29998779 841.90002441]/Contents 9 0 R/Resources<</Font<</FAAAAJ 11 0 R/FAAABE 15 0 R/FAAABI 19 0 R/FAAACG 24 0 R>>/ExtGState<</GS1 29 0 R/GS10 30 0 R/GS11 31 0 R/GS12 32 0 R/GS13 33 0 R/GS14 34 0 R/GS15 35 0 R/GS16 36 0 R/GS17 37 0 R/GS18 38 0 R/GS19 39 0 R/GS2 40 0 R/GS20 41 0 R/GS21 42 0 R/GS22 43 0 R/GS23 44 0 R/GS24 45 0 R/GS25 46 0 R/GS26 47 0 R/GS27 48 0 R/GS28 49 0 R/GS29 50 0 R/GS3 51 0 R/GS30 52 0 R/GS31 53 0 R/GS32 54 0 R/GS33 55 0 R/GS34 56 0 R/GS35 57 0 R/GS36 58 0 R/GS37 59 0 R/GS38 60 0 R/GS39 61 0 R/GS4 62 0 R/GS5 63 0 R/GS6 64 0 R/GS7 65 0 R/GS8 66 0 R/GS9 67 0 R>>/XObject<</X1 68 0 R/Im0 71 0 R>>/ProcSet 69 0 R>>/Annots[70 0 R]/StructParents 0/Tabs/S/Rotate 0>>
endobj
9 0 obj
<</Filter/FlateDecode/Length 3979>>stream
Конец файла: Код:endstream
endobj
73 0 obj
<</Length 237/Type/Metadata/Subtype/XML>>stream
<?xpacket begin="п»ї" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" />
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>
endstream
endobj
xref
0 5
0000000000 65535 f
0000000018 00000 n
0000000107 00000 n
0000000142 00000 n
0000000245 00000 n
6 68
0000000422 00000 n
0000000498 00000 n
0000000521 00000 n
0000001267 00000 n
0000005317 00000 n
0000005341 00000 n
0000005921 00000 n
0000006114 00000 n
0000050136 00000 n
0000050159 00000 n
0000050403 00000 n
0000050605 00000 n
0000065924 00000 n
0000065947 00000 n
0000066093 00000 n
0000066465 00000 n
0000066681 00000 n
0000066734 00000 n
0000067130 00000 n
0000067271 00000 n
0000068192 00000 n
0000068399 00000 n
0000068463 00000 n
0000069216 00000 n
0000069263 00000 n
0000069310 00000 n
0000069357 00000 n
0000069404 00000 n
0000069451 00000 n
0000069498 00000 n
0000069545 00000 n
0000069592 00000 n
0000069639 00000 n
0000069686 00000 n
0000069733 00000 n
0000069780 00000 n
0000069827 00000 n
0000069874 00000 n
0000069921 00000 n
0000069968 00000 n
0000070015 00000 n
0000070062 00000 n
0000070109 00000 n
0000070156 00000 n
0000070203 00000 n
0000070250 00000 n
0000070297 00000 n
0000070344 00000 n
0000070391 00000 n
0000070438 00000 n
0000070485 00000 n
0000070532 00000 n
0000070579 00000 n
0000070626 00000 n
0000070673 00000 n
0000070720 00000 n
0000070767 00000 n
0000070814 00000 n
0000070861 00000 n
0000070908 00000 n
0000070955 00000 n
0000071002 00000 n
0000071049 00000 n
0000096851 00000 n
0000096875 00000 n
0000097073 00000 n
0000121113 00000 n
0000121359 00000 n
trailer
<</Root 1 0 R/Info 4 0 R/ID[<39302D32422D35422D41392D34392D41><39302D32422D35422D41392D34392D41>]/Size 74>>
startxref
121674
%%EOF
Как буд-то этот участок файла не кодируется в байтовую строку, но возможно это нормально... Подпись ЦБ  VizualizacijaEhD.PDF.sig (8kb) загружен 4 раз(а). и подписанный файл:  VizualizacijaEhD.PDF (121kb) загружен 2 раз(а).
|