Sample code for 30+ languages & platforms
Perl Requires Chilkat v11.0.0+

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat Perl Downloads

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

# The following data was signed by the following example:
# RSA Sign using a Private Key on a USB Token or Smartcard
my $bd = Chilkat2::BinData->new;
for my $i (0 .. 100) {
    $bd->AppendEncoded('000102030405060708090A0B0C0D0E0F', 'hex');
}

# Load the signature
my $bdSig = Chilkat2::BinData->new;
my $success = $bdSig->LoadFile('rsaSignatures/test1.sig');
if (!$success) {
    print "Failed to load the RSA signature\n";
    exit;
}

# Get the public key to be used for signature verification.
my $pubKey = Chilkat2::PublicKey->new;
$success = $pubKey->LoadFromFile('rsaKeys/chilkat-rsa-2048.pem');
if (!$success) {
    print $pubKey->LastErrorText, "\n";
    exit;
}

my $rsa = Chilkat2::Rsa->new;
$success = $rsa->UsePublicKey($pubKey);
if (!$success) {
    print $rsa->LastErrorText, "\n";
    exit;
}

# Verify the hash of the data against the signature.
# We pass in the original data.  Internally, the hash is generated
# and used to validate the signature.
# Validating the RSA signature means two things:
# (1) the original data is exactly what was signed, and
# (2) it was signed by the owner of the RSA private key.
$success = $rsa->VerifyBd($bd, 'sha256', $bdSig);

if (!$success) {
    print $rsa->LastErrorText, "\n";
    print "Signature invalid.\n";
} else {
    print "Signature valid.\n";
}