1

经过一番摸索后,我找到了这个问题的一些常见答案,例如:
How to load an RSA key from a PEM file and use it in python-crypto

一些代码:

x509 = X509.load_cert_string(certificate)
pubkey = x509.get_pubkey()
pubkey.reset_context(md=sha1)
pubkey.verify_init()
pubkey.verify_update(content)
decoded_signature = signature.decode('base64')

if pubkey.verify_final(decoded_signature)==0:
    print 'error'
    sys.exit(1)

并且上面提供的代码在 M2Crypto 0.20 中运行良好。但是我需要使用 M2Crypto 0.16(RHEL5 中的官方包)做完全相同的想法,并且我在使用 pubkey.verify_final 方法时遇到问题,因为在这个特定版本中签名参数不存在。那么我该怎么做呢?使用 M2Crypto 0.16 谢谢。

4

1 回答 1

2

幸运的是,你需要的 OpenSSL 函数在 M2Crypto 0.16 中可用,它只是 Python 方法没有提供你需要的额外参数。这很容易解决。您将在哪里调用pubkey.verify_final(decoded_signature)call pubkey_verify_final(pubkey, decoded_signature),您将在代码中将其定义为:

from M2Crypto import m2

def pubkey_verify_final(pubkey, decoded_signature):
    return m2.verify_final(pubkey.ctx, decoded_signature, pubkey.pkey)

(注意,我并没有实际测试,只是比较了 0.16 和 0.20 之间的来源。)

于 2010-05-20T03:57:13.077 回答