2009-08-25 7 views
0

Betrachten Sie den folgenden Code ein:Datei-Zugriff in load_pub_key

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

Welche der folgenden Fehler erzeugt:

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: '' 

Wie gebe ich die Datei in load_pub_key Methode so zugänglich sein, kann die durch einfaches Durchleiten Dateiname?

+0

exaktes Duplikat: http://stackoverflow.com/questions/1176055/how-to -use-pem-file-with-python-m2crypto – SilentGhost

+0

Ihr Code entspricht nicht Ihrem Fehler. strecke deine Geschichte. – SilentGhost

+0

nein, ist es nicht. Antwort auf diese Frage zeigt ganz klar, dass Sie den Dateinamen an 'load_pub_key' übergeben müssen. Wenn Sie etwas in Ihre Datei schreiben möchten, müssen Sie den Puffer leeren, indem Sie den 'fileHandle' schließen. – SilentGhost

Antwort

0

Wenn Sie test8.pem ohne Anführungszeichen übergeben, interpretiert Python es als den Namen einer Variablen, die nicht definiert ist, daher der Fehler.

Ich kenne nicht die spezifische Bibliothek, die Sie verwenden, aber ich würde vermuten, dass Sie fileHandle stattdessen übergeben müssen.

0

dies sollte für Sie arbeiten:

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

danke es scheint cool, aber nach der Anwendung dieses Codes erneut Fehler: Traceback (letzten Aufruf letzten): Datei "RetEnc.py", Zeile 17, in? pub_key = M2Crypto.RSA.load_pub_key (fname) File "/usr/lib/python2.4/site-packages/M2Crypto/RSA.py", Leitung 344, in load_pub_key return load_pub_key_bio (bio) Datei „/ usr /lib/python2.4/site-packages/M2Crypto/RSA.py ", Zeile 360, in load_pub_key_bio rsa_error() Datei" /usr/lib/python2.4/site-packages/M2Crypto/RSA.py ", Zeile 240, in rsa_error auslösen RSAError, m2.err_reason_error_string (m2.err_get_error()) M2Crypto.RSA.RSAError: keine Startlinie –

+0

so Inhalt Ihrer Datei ist fehlerhaft. und es liegt außerhalb des Rahmens dieser Frage. – SilentGhost

0

Ich habe auch das gleiche Problem. Ich habe versucht, einen Dateihandler anstelle des Pfades zu laden, aber es hat nicht geholfen.

Die Sache, dass Workout X509-Modul von M2Crypto verwendet wurde. Sie können diese Funktionen versuchen verwenden, um eine Public-Key-Instanz zu erhalten:

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

Weitere Details in der folgenden Antwort: RSACryptoServiceProvider message signature verification with m2crypto

Verwandte Themen