def openssl_verify(data, sig, key, md='sha1'): from M2Crypto import X509 x509 = X509.load_cert_string(key) pubkey = x509.get_pubkey() pubkey.reset_context(md=md) pubkey.verify_init() pubkey.verify_update(data) return pubkey.verify_final(sig) data = "1900847_4aaa6c7038653ad2e4dbeba175a679ba_1234576800" signature = "FkUmueUWrGShv3i+QYPJLFQA5XQeIIXJVFaOzr6lMgHUGCF4dd179atPUKG0FM+JVDF/ole+ZflQo44RU7sSa+NMaFh490ZLbCoz2hNx0c0FTjxKCXWvW9mSuRYOHutfUkIUX1/znwOzm2hqTo20qztO+X751ZaOtcQe6idaz94=" public_key = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfG4IuFO2h/LdDNmonwGNw5srW\nnUEWzoBrPRF1NM8LqpOMD45FAPtZ1NmPtHGo0BAS1UsyJEGXx0NPJ8Gw1z+huLrl\nXnAVX5B4ec6cJfKKmpL/l94WhP2v8F3OGWrnaEX1mLMoxe124Pcfamt0SPCGkeal\nVvXw13PLINE/YptjkQIDAQAB\n-----END PUBLIC KEY-----\n" decoded_signature = signature.decode('base64') # prints "-1": print openssl_verify(data, decoded_signature, public_key);