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