Verificar assinatura com pyopenssl

Eu acredito que desde issoquestão, pyOpenSSL começou a apoiar a verificação de assinaturas (a partir depyOpenSSL 0.11.

Eu estou trabalhando em um projeto que foi iniciado por outra pessoa usandoM2Crypto. M2Crypto é realmente doloroso para incluir em plataformas comoHeroku como requer o uso deGOLE. Conseqüentemente, estou tentando remover a dependência do M2Crypto e substituí-lo pelo pyOpenSSL, que é fácil de instalar via Pip, e não requer pacotes de build personalizados e mais que as relacionadas ao SWIG.

O problema que estou tendo está substituindo um pouco de código:

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.

Idealmente eu gostaria de implementar a mesma funcionalidade via pyOpenSSL, mas sinto que eu poderia ter o final errado do stick - eu tentei usar:

crypto.verify(cert, self.sig, hashed, 'sha1')

Mas isso falha -

[('rsa routines', 'RSA_verify', 'bad signature')]

Eu não posso descobrir se está falhando porque a assinatura é realmente ruim, ou porque os valores que estou fornecendo crypto.verify não são realmente o que deve ser usado!

O código original com o qual eu tenho jogado éAqui e precisa de um pouco de trabalho para arrumar, mas estava tentando fazer uma etapa de cada vez substituindo a funcionalidade antes de uma refatoração total. Qualquer dica será muito apreciada! PyOpenSSL tem a capacidade de substituir a funcionalidade M2Crypto aqui, e eu estou indo sobre o caminho certo?