11 votes

Essayer de vérifier la signature d'un message SHA1 en utilisant Python. Qu'est-ce que je fais de travers ?

J'essaie de vérifier la signature SHA1 d'un message en téléchargeant un certificat d'un site web et en extrayant sa clé publique. Il y a quelques exemples de code ailleurs sur SO ( aquí y aquí ), mais je n'ai pas encore compris ce que je faisais de travers.

import requests
from M2Crypto import BIO, RSA, EVP, X509

def verify_message(cert_url, msg, sig):
    cert_text = requests.get(cert_url, verify=True)
    cert = X509.load_cert_string(cert_text.content)
    pubkey = cert.get_pubkey()
    sig = sig.decode('base64')

    # Write a few files to disk for debugging purposes
    f = open("sig", "wb")
    f.write(sig)
    f.close()

    f = open("msg", "w")
    f.write(msg)
    f.close()

    f = open("mypubkey.pem", "w")
    f.write(pubkey.get_rsa().as_pem())
    f.close()

    pubkey.reset_context(md='sha1')
    pubkey.verify_init()
    pubkey.verify_update(msg)
    assert pubkey.verify_final(sig) == 1

Cela me donne l'erreur d'assertion suivante :

  File "/tmp/test.py", line 71, in verify_message
    assert pubkey.verify_final(sig) == 1
AssertionError

Cependant, si j'utilise openssl à partir de la ligne de commande avec les fichiers générés à partir du script de Python ci-dessus, cela fonctionne correctement :

[jamie@test5 tmp]$ openssl dgst -sha1 -verify mypubkey.pem -signature sig msg
Verified OK

Je me heurte à un mur ; toute suggestion serait grandement appréciée. Je vous remercie de votre attention.

5voto

YBW Points 614

Votre code fonctionne correctement - https://gist.github.com/kalloc/5106808 Je vois quelque chose d'autre qui ne va pas

1voto

GodMan Points 928

Ce code fonctionne parfaitement de mon côté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X