在load_pub_key中访问文件

时间:2009-08-25 09:51:55

标签: python m2crypto

请考虑以下代码:

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

产生以下错误:

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

如何将文件传递到load_pub_key方法,以便只需传递文件名即可访问?

3 个答案:

答案 0 :(得分:0)

如果传递test8.pem不带引号,Python会将其解释为变量的名称,该变量未定义,因此错误。

我不知道你使用的具体库,但我猜你需要传递fileHandle。

答案 1 :(得分:0)

这应该适合你:

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

答案 2 :(得分:0)

我也有同样的问题。我尝试加载文件处理程序而不是路径,但它没有帮助。

锻炼的事情是使用M2Crypto的X509模块。您可以尝试使用此函数来获取公钥实例:

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

以下答案中的更多细节: RSACryptoServiceProvider message signature verification with m2crypto