IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python M2Crypto : signature numérique d'un document PDF


Sujet :

Python

  1. #1
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par sweetasnz Voir le message
    Comment intégrer la signature à mon PDF initial
    et par la suite comment extraire le PDFinitial du PDFsigné
    Avez-vous des suggestions?
    Le format d'un document PDF "signé" est défini par des standards ISO.
    Si vous n'avez pas pris le temps de les lire (et ils sont payants), difficile de savoir à quoi devra ressembler le document "taggué" qu'il faut produire.
    Pourquoi ne pas utiliser une application/bibliothèque qui fait déjà le boulot pour vous (Google est votre ami pour sélectionner celle qui répond à vos besoins).
    Sinon LibreOffice sait fabriquer du PDF/1A. On devrait pouvoir automatiser l'opération avec un script Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,
    Pourquoi ne pas utiliser une application/bibliothèque qui fait déjà le boulot pour vous (Google est votre ami pour sélectionner celle qui répond à vos besoins).
    Merci pour votre réponse.
    Ce que je veux réaliser (si possible avec Python):
    1. importer mon pdf (ok)
    2. générer une signature (ok)
    3. générer un PDF-Signé (???)
    --> disposer d'un fichier composé de mon PDF et de la signature, avec hashage... du style
    -----BEGIN PKCS7-----
    MIMExxxxzkjnroefneocnoerncnec
    zfcecrjncvoernvoevevevbvvrcve
    AEFEVRVervkeovjervnioernvionv
    .....
    -----END PKCS7-----
    4. exporter le fichier PDF-signé final (ok)

    On devrait pouvoir faire cela en python, mais je ne sais pas par ou commencer pour constituer le PDF-Signé.
    J'ai donc d'un côté mon PDF, et d'un autre côté ma signature.
    Reste à fusionner les 2 pour qu'il soit lisible et extractible lorsque je décrypte et désigne.
    Si vous avez des éléments de doc ou des liens, je suis preneur pour mieux comprendre le processus d'intégration de signature dans un PDF.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par sweetasnz Voir le message
    On devrait pouvoir faire cela en python, mais je ne sais pas par ou commencer pour constituer le PDF-Signé.
    J'ai donc d'un côté mon PDF, et d'un autre côté ma signature.
    Reste à fusionner les 2 pour qu'il soit lisible et extractible lorsque je décrypte et désigne.
    Si vous avez des éléments de doc ou des liens, je suis preneur pour mieux comprendre le processus d'intégration de signature dans un PDF.
    Côté doc, je vous ai donné l'endroit ou trouver les "spécifications" ISO: c'est plus de 150 francs suisses.
    Après vous avez Google, pour trouver des documentations qui expliquent ce qu'est PDF-signé/tagué.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Petit UP,
    finalement, je viens de m'apercevoir que je confond 2 concepts :
    - concept 1 : le "PDF-signé" certifié par GS1
    - concept 2 : le "PDF" + la "SIGNATURE" générée par la clé privée issue du certificat de signature.

    En résumé, la méthode que je décris plus haut (1er post) permet de générer une signature détachée de mon document (concept 2 :"PDF" + la "SIGNATURE"). Cette signature pourra être contrôlée par le destinataire du document avec ma clé publique...
    Ici j'ai un PDF, mais je pourrai bien avoir un PNG ou autre format et procéder de la même façon pour générer une signature.
    Cela répond donc à mes attentes.

    Je vais creuser au niveau du "PDF-Signé" au sens GS1, pour en savoir plus
    Je clos donc ce post.
    Merci d'y avoir participé.

  6. #6
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par sweetasnz Voir le message
    - concept 1 : le "PDF-signé" certifié par GS1
    Je veux dire PDF-signé au sens "ADOBE" (et non pas GS1)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Si vous voulez "signer" un message, gnupg fait déjà cela très bien.
    Ca le mérite de fonctionner, c'est documenté, c'est open source,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    juste pour conclure (et pour infos) pour faire de la signature "de masse" et "en mode server - signature automatisée disons - sans action manuelle" (sinon oui, il existe un tas de logiciel opensource ... ouf )

    j'ai dévellopé ma propre appli java pour faire la job avec l'utilisation d'un certificat format PKCS11 et PKCS12.
    voir documentation sur la librairie "itext", avec de nombreux et bons exemples décris et documentés
    http://itextpdf.com/examples/iia.php?id=12

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDF] Plusieurs signatures sur un même document PDF
    Par soussou2690 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 17/04/2014, 12h57
  2. [OpenOffice][Texte] Signature numérique d'un document
    Par tchize_ dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 31/08/2010, 13h07
  3. Valider un document Excel sans signature numérique
    Par koushkov dans le forum Conception
    Réponses: 0
    Dernier message: 18/06/2010, 03h33
  4. Signature Numérique sur des Documents
    Par Myogtha dans le forum Sécurité
    Réponses: 1
    Dernier message: 03/10/2007, 17h05
  5. Signature numérique de documents
    Par Muuray dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/08/2007, 10h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo