2010年4月21日水曜日

PythonでPHPのopenssl_verify()相当の処理

PythonでPHPのopenssl_verify()の処理を実現しようとしたが、RHEL5に入っているM2Cryptoのバグにヒットした。

https://bugzilla.osafoundation.org/show_bug.cgi?id=7973

EVP.verify_final()に署名の情報を渡せないので、署名の検証が行えないというバグ。
最新版のM2Cryptoなら直っている。 2行ぐらい直すだけだけど。

openssl_verify()はこんな感じの実装になった。

def openssl_verify(data, sig, pubkeyfile):
rsa = M2Crypto.RSA.load_pub_key(pubkeyfile)
pubkey = M2Crypto.EVP.PKey()
pubkey.assign_rsa(rsa)
pubkey.reset_context()
pubkey.verify_init()
pubkey.verify_update(data)
return pubkey.verify_final(sig)



0 件のコメント:

コメントを投稿