Python M2Crypto : signature numérique d'un document PDF
Bonjour les amis,
Après de longues recherches sur la toile, je n'arrive pas à mettre la main sur une méthode pour signer numériquement une document PDF avec la classe M2Crypto de Python
je travaille sous debian6 x86_64 et python2.6.6
et j'utilise une clé RSA 2048 issue d'un certificat self-signed pour mes tests réalisé avec la commande native openssl :
Code:
openssl req -x509 -newkey rsa:2048 -keyout mykey.pem -out cert.pem -days 365
contexte : je sais comment signer un "teste brut", voici comment je procède :
Code:
1 2 3 4 5 6 7
|
from M2Crypto import RSA, EVP
import base64, hashlib
pkey = RSA.load_key("mykey.pem")
signText = pkey.sign(hashlib.sha256("text").digest())
print base64.b64encode(signText) |
objectif : au lieu de signer un texte brut "text" je veux signer mon document "doc.pdf" (format PDFA1)
Dans l'idée ce serait qq chose comme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
from M2Crypto import RSA, EVP
import base64, hashlib
# le PDF que je veux signer
monPDF = open('test.pdf','rb').read()
pkey = RSA.load_key("mykey.pem")
signPDF = pkey.sign(hashlib.sha256(monPDF).digest())
# ou
signPDF = pkey.sign(hashlib.sha256(monPDF).hexdigest())
encodeSignPDF = base64.b64encode(signPDF)
# comment intégrer la signature "encodeSignPDF" à mon PDF
# c'est ici que je coince ... |
Comment intégrer la signature à mon PDF initial
et par la suite comment extraire le PDFinitial du PDFsigné
Avez-vous des suggestions?