Sprawdź podpis za pomocą pyopenssl

Wierzę, że od tego czasupytanie, pyOpenSSL zaczął wspierać weryfikację podpisów (odpyOpenSSL 0.11.

Pracuję nad projektem, który został uruchomiony przez kogoś innegoM2Crypto. M2Crypto jest naprawdę bolesne, aby włączyć na platformach takich jakHeroku jak wymaga użyciaHAUST. W związku z tym staram się usunąć zależność od M2Crypto i zastąpić ją pyOpenSSL, która jest łatwa do zainstalowania za pomocą Pip, i nie wymaga niestandardowych pakietów instalacyjnych i innych rzeczy związanych z SWIG.

Problem, który mam, zastępuje trochę kodu:

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.

Idealnie chciałbym zaimplementować tę samą funkcjonalność za pośrednictwem pyOpenSSL, ale czuję, że mogłem mieć niewłaściwy koniec kija - próbowałem użyć:

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

Ale to się nie udaje -

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

Nie mogę się dowiedzieć, czy to się nie udaje, ponieważ podpis jest naprawdę zły, czy też wartości, które podaję crypto.verify, w rzeczywistości nie są tym, do czego mają być używane!

Oryginalny kod, z którym grałem, jesttutaj i wymaga sporo pracy, aby posprzątać, ale próbował zrobić to krok po kroku, zastępując funkcjonalność przed całkowitą refaktoryzacją. Wszelkie wskazówki byłyby bardzo mile widziane! Czy pyOpenSSL ma możliwość zastąpienia funkcjonalności M2Crypto tutaj i czy zamierzam to zrobić we właściwy sposób?

questionAnswers(1)

yourAnswerToTheQuestion