Ich glaube, dass seit diesem question, pyOpenSSL die Prüfung von Unterschriften unterstützt hat begonnen (Stand pyOpenSSL 0.11.Signatur mit pyopenssl
ich an einem Projekt arbeite, die von jemand anderem mit M2Crypto gestartet wurde. M2crypto ist wirklich schmerzhaft um auf Plattformen wie Heroku zu integrieren, da es die Verwendung von SWIG erfordert.Demzufolge versuche ich, die Abhängigkeit von M2Crypto zu entfernen und durch pyOpenSSL zu ersetzen, das einfach über Pip zu installieren ist und keine benutzerdefinierten Buildpacks und mehr benötigt, die SWIG betreffen Dinge tun.
Das Problem, das ich habe, ersetzt ein bisschen Code:
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.
Im Idealfall möchte ich die gleiche Funktionalität über pyOpenSSL, implementieren, aber ich fühle mich das falsche Ende des Stockes bekommen haben könnte - ich habe versucht, mit:
crypto.verify(cert, self.sig, hashed, 'sha1')
Aber dies nicht gelingt -
[('rsa routines', 'RSA_verify', 'bad signature')]
ich nicht herausfinden kann, ob es versagt, weil die Unterschrift tatsächlich schlecht ist, oder weil die Werte, die ich bin die Bereitstellung crypto.verify ist eigentlich nicht, was es soll verwendet werden für!
Der ursprüngliche Code, mit dem ich gespielt habe, ist here und benötigt ziemlich viel Arbeit, um aufzuräumen, aber es wurde versucht, es Schritt für Schritt zu tun, um die Funktionalität vor einem kompletten Refactoring zu ersetzen. Irgendwelche Hinweise würden sehr geschätzt werden! Kann pyOpenSSL die M2Crypto-Funktionalität hier ersetzen, und gehe ich den richtigen Weg?