linux 使用Python从PDF文件中检索数字签名信息

mu0hgdu0  于 2023-10-16  发布在  Linux
关注(0)|答案(1)|浏览(128)

我正在寻找一个关于如何检索PDF中的数字签名信息(签名者详细信息,签名日期,发行人等)与Python 2.7的方向。我是否需要使用像django-endesive这样的签名模块(不是endesive,因为我认为它是,或者我可以在阅读文件时检索它?
目前,用户通过外部程序在本地添加签名,然后通过应用程序将文件上传到服务器,并使用pycrypto加密。
是否有可能在加密之前的阅读文件期间检索这些信息?我如何才能做到这一点?
下面是我用来加密文件的代码:

encryptor = AES.new(key, AES.MODE_CBC, IV)

with open(filename, "rb") as infile:
  if not os.path.isfile(outFile):
    with open(outFile, "wb") as outfile:
      outfile.write(filesize)
      outfile.write(IV)
      while True:
       chunk = infile.read(chunksize)
       if len(chunk) == 0:
         break
       elif len(chunk)%16 !=0:
         chunk += ' ' * (16 - (len(chunk)%16))

       outfile.write(encryptor.encrypt(chunk))
ma8fv8wu

ma8fv8wu1#

你可以使用pyhanko

pyhanko sign validate --pretty-print test.pdf

from pyhanko.sign.general import load_cert_from_pemder
from pyhanko_certvalidator import ValidationContext
from pyhanko.pdf_utils.reader import PdfFileReader
from pyhanko.sign.validation import validate_pdf_signature

root_cert = load_cert_from_pemder('path/to/certfile')
vc = ValidationContext(trust_roots=[root_cert])

with open('document.pdf', 'rb') as doc:
    r = PdfFileReader(doc)
    sig = r.embedded_signatures[-1]
    status = validate_pdf_signature(sig, vc)
    print(status.pretty_print_details())

相关问题