この質問以来、pyOpenSSLは署名の検証のサポートを開始したと思います(pyOpenSSL 0.11以降) 。
私はM2Cryptoを使用して他の誰かによって開始されたプロジェクトに取り組んでいます。M2Cryptoは、 SWIGを使用する必要があるため、Herokuなどのプラットフォームに含めるのは非常に困難です。その結果、私はM2Cryptoへの依存を取り除き、Pip経由で簡単にインストールできるpyOpenSSLに置き換えようとしています。これは、カスタムビルドパックなど、SWIG関連のものを必要としません。
私が抱えている問題は、コードの一部を置き換えることです。
key = cert.get_pubkey() # Cert is an M2Crypto X509 object
key = key.get_rsa()
ret = key.verify(hashed, self.sig)
if ret != 1:
# Cert invalid ... etc.
理想的には、pyOpenSSLを介して同じ機能を実装したいのですが、スティックの端が間違っている可能性があると感じています-使用してみました:
crypto.verify(cert, self.sig, hashed, 'sha1')
しかし、これは失敗します-
[('rsa routines', 'RSA_verify', 'bad signature')]
署名が実際に悪いために失敗しているのか、crypto.verifyに提供している値が実際には使用されているはずの値ではないため、失敗しているのかわかりません。
私が遊んでいた元のコードはここにあり、片付けるにはかなりの作業が必要ですが、完全なリファクタリングの前に機能を置き換えて、一度に1ステップずつ実行しようとしていました。どんなポインタでも大歓迎です!pyOpenSSLには、ここでM2Crypto機能を置き換える機能がありますか?それは正しい方法で行っていますか?