from M2Crypto import X509 def verify_data(data, signature, cert): rawsig = signature..decode('base64') x509 = X509.load_cert_string(cert) pubkey = x509.get_pubkey() pubkey.reset_context(md='sha256') pubkey.verify_init() pubkey.verify_update(data) return pubkey.verify_final(rawsig) #### my $x509 = Crypt::OpenSSL::X509->new_from_file('cert.pm'); my $pubkey = $x509->pubkey(); my $signature = read_file('signature.txt' , binmode => ':raw' ); my $data = read_file('data.txt' , binmode => ':raw' ); #### openssl x509 -in cert.pem -pubkey >& pubkey.txt openssl dgst -sha256 -verify pubkey.txt -signature signature.txt myData.txt