2009-08-25 8 views
0

Considérez le code suivant:accès au fichier à load_pub_key

fileHandle = open ('test8.pem','w') 
fileHandle.write (data) 
pub_key = M2Crypto.RSA.load_pub_key(open('test8.pem')) 

qui produit l'erreur suivante:

File "/usr/lib/python2.4/site-packages/M2Crypto/RSA.py", line 343, in load_pub_key 
bio = BIO.openfile(file) 
    File "/usr/lib/python2.4/site-packages/M2Crypto/BIO.py", line 186, in openfile 
    return File(open(filename, mode)) 
IOError: [Errno 2] No such file or directory: '' 

Comment passer dois-je le fichier dans la méthode load_pub_key afin qu'il puisse être accessible en passant simplement la nom de fichier?

+0

double exact: http://stackoverflow.com/questions/1176055/how-to -use-pem-fichier-avec-python-m2crypto – SilentGhost

+0

votre code ne correspond pas à votre erreur. redressez votre histoire. – SilentGhost

+0

non, ce n'est pas le cas. répondre à cette question indique clairement que vous devez passer le nom de fichier à 'load_pub_key'. Si vous voulez que quelque chose soit écrit dans votre fichier, vous devez vider le tampon en fermant 'fileHandle'. – SilentGhost

Répondre

0

Si vous passez test8.pem sans les guillemets, Python l'interprète comme le nom d'une variable, qui n'est pas définie, d'où l'erreur.

Je ne connais pas la bibliothèque spécifique que vous utilisez, mais j'imagine que vous devez passer fileHandle à la place.

0

cela devrait fonctionner pour vous:

fname = 'test8.pem' 
fileHandle = open(fname, 'w') 
fileHandle.write(data) 
fileHandle.close() 
pub_key = M2Crypto.RSA.load_pub_key(fname) 
+0

remercie son semble cool, mais après avoir appliqué ce code à nouveau erreur: Traceback (dernier appel dernier): Fichier "RetEnc.py", ligne 17, dans? pub_key = M2Crypto.RSA.load_pub_key (FNAME) Fichier "/usr/lib/python2.4/site-packages/M2Crypto/RSA.py", ligne 344, dans load_pub_key load_pub_key_bio retour (bio) fichier «/usr /lib/python2.4/site-packages/M2Crypto/RSA.py ", ligne 360, dans load_pub_key_bio rsa_error() Fichier" /usr/lib/python2.4/site-packages/M2Crypto/RSA.py ", ligne 240, dans rsa_error raise RSAError, m2.err_reason_error_string (m2.err_get_error()) M2Crypto.RSA.RSAError: pas de ligne de début –

+0

donc le contenu de votre fichier est mal formé. et c'est en dehors de la portée de cette question. – SilentGhost

0

J'ai aussi la même question. J'ai essayé de charger un gestionnaire de fichiers au lieu du chemin mais cela n'a pas aidé.

La chose que l'entraînement était en utilisant le module X509 de M2Crypto. Vous pouvez utiliser cette fonction pour obtenir une instance clé publique:

certificate = M2Crypto.X509.load_cert(cert_path) 
pubkey = certificate.get_pubkey() 

Plus de détails dans la réponse suivante: RSACryptoServiceProvider message signature verification with m2crypto

Questions connexes