Comment signer numériquement un message avec M2Crypto en utilisant les touches dans un certificat de format DER

StackOverflow https://stackoverflow.com/questions/2401397

Question

Je travaille sur un projet pour mettre en œuvre des signatures numériques de messages sortants et j'ai décidé d'utiliser M2Crypto pour cela.

J'ai un certificat (au format DER) à partir duquel je extrait les clés pour signer le message. Pour une raison quelconque, je continue d'obtenir une erreur de défaut de segmentation laide lorsque j'appelle la méthode "Sign_update".

Compte tenu des exemples précédents que j'ai lus ici, il me manque clairement quelque chose.

Voici l'exemple sur lequel je travaille:

from M2Crypto.X509 import *

cert = load_cert( 'certificate.cer', format=1 )
Pub_key = cert.get_pubkey()
Pub_key.reset_context(md='sha1')
Pub_key.sign_init()
Pub_key.sign_update( "This should be good." )

print Pub_key.sign_final()

Merci d'avance pour l'aide,

Pablo

Était-ce utile?

La solution

Une chose évidente me saute dessus: vous dites que votre certificat est au format der, mais vous passez format=0 à load_cert() ce qui signifie pem. Voir Variables du module x509. Peut-être pas ce qui cause votre problème, cependant (je m'attendrais à ce que vous obteniez une exception si vous mélangez le type de certificat).

Mise à jour Après avoir réfléchi, je pense que vous essayez de faire la mauvaise chose ici, c'est pourquoi il s'écrase (même si cela ne devrait bien sûr pas s'écraser mais lever une exception). Vous ne pouvez pas signer un message en utilisant la clé publique à partir d'un certificat. Ce serait comme faire une contrefaçon numérique.

Pense-y de cette façon. Vous recevez mon certificat, qui contient ma clé publique. Vous pouvez utiliser la clé publique pour me crypter un message. Seulement, je pourrai décrypter en utilisant ma clé privée. Vous pouvez signer le message en utilisant Votre clé privée, et je peux utiliser Votre clé publique pour vérifier votre signature.

Autres conseils

Il n'y a pas de fichier de clé privé, c'est pourquoi il se bloque et je ne peux pas le signer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top