Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created May 26, 2022 23:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/f69da60605200ca6629b9beee501dba7 to your computer and use it in GitHub Desktop.
Save parzibyte/f69da60605200ca6629b9beee501dba7 to your computer and use it in GitHub Desktop.
# *-* coding: utf-8 *-*
import datetime
from cryptography.hazmat import backends
from cryptography.hazmat.primitives.serialization import pkcs12
from endesive.pdf import cms
def firmar(contraseña, certificado, pdf):
date = datetime.datetime.utcnow() - datetime.timedelta(hours=12)
date = date.strftime("D:%Y%m%d%H%M%S+00'00'")
dct = {
"aligned": 0,
"sigflags": 3,
"sigflagsft": 132,
"sigpage": 0,
"sigbutton": True,
"sigfield": "Signature1",
"auto_sigfield": True,
"sigandcertify": True,
"signaturebox": (470, 840, 570, 640),
"signature": "Aquí va la firma",
# "signature_img": "signature_test.png",
"contact": "hola@ejemplo.com",
"location": "Ubicación",
"signingdate": date,
"reason": "Razón",
"password": contraseña,
}
# with open("cert.p12", "rb") as fp:
p12 = pkcs12.load_key_and_certificates(
certificado.read(), contraseña.encode("ascii"), backends.default_backend()
)
#datau = open(fname, "rb").read()
datau = pdf.read()
datas = cms.sign(datau, dct, p12[0], p12[1], p12[2], "sha256")
return datau, datas
"""
fname = "test.pdf"
with open(fname, "wb") as fp:
fp.write(datau)
fp.write(datas)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment