2010-05-17 78 views
1

一些goggling經過驗證的簽名,我發現了這個問題,一些平常的答案,如:
How to load an RSA key from a PEM file and use it in python-crypto如何使用M2Crypto 0.16

一些代碼:

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 謝謝。

回答

2

幸運的是,您需要的OpenSSL函數在M2Crypto 0.16中可用,它僅僅是Python方法,不提供您需要的額外參數。這很容易解決。在這裏你會打電話pubkey.verify_final(decoded_signature),叫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之間的來源)。