如何使用python M2Crypto

时间:2015-06-15 18:20:12

标签: python ssl x509certificate m2crypto

我有以下代码提取主机叶证书和证书RSA公钥:

c = ssock.getpeercert(True)
x509 = M2Crypto.X509.load_cert_der_string(c)
publickey=x509.get_pubkey()
m=publickey.get_modulus()

我试图找到提取RSA密钥的公共指数的函数,但我找不到任何函数。你能帮我弄清楚如何提取RSA公钥的公共指数吗?

编辑:如果M2Crypt不可能的话。请指出任何其他方式。

编辑2:当我尝试将证书加载为DER作为:

key = RSA.importKey(publickey.as_der())

我收到了这个错误:

  

(' file()参数1必须是没有NULL字节的编码字符串,不是   STR',)

我想避免在本地系统中保存证书。我只想提取模数和指数等信息。 我从错误中理解的是importKey函数将参数作为DER文件而不是字符串。你能帮我找一个解决方法吗?

1 个答案:

答案 0 :(得分:1)

此代码应该为您提供模数和公共指数:

import Crypto.PublicKey.RSA

c = ssock.getpeercert(True)
x509 = M2Crypto.X509.load_cert_der_string(c)
publickey = x509.get_pubkey()
key = Crypto.PublicKey.RSA.importKey(publickey.as_der())

modulus = key.n
public_exponent = key.e