Sample code for 30+ languages & platforms
Perl

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# The following data was signed by the following example:
# RSA Sign using a Private Key on a USB Token or Smartcard
$bd = chilkat::CkBinData->new();

for ($i = 0; $i <= 100; $i++) {
    $bd->AppendEncoded("000102030405060708090A0B0C0D0E0F","hex");
}

# Load the signature
$bdSig = chilkat::CkBinData->new();
$success = $bdSig->LoadFile("rsaSignatures/test1.sig");
if ($success == 0) {
    print "Failed to load the RSA signature" . "\r\n";
    exit;
}

# Get the public key to be used for signature verification.
$pubKey = chilkat::CkPublicKey->new();
$success = $pubKey->LoadFromFile("rsaKeys/chilkat-rsa-2048.pem");
if ($success == 0) {
    print $pubKey->lastErrorText() . "\r\n";
    exit;
}

$rsa = chilkat::CkRsa->new();
$success = $rsa->UsePublicKey($pubKey);
if ($success == 0) {
    print $rsa->lastErrorText() . "\r\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 == 0) {
    print $rsa->lastErrorText() . "\r\n";
    print "Signature invalid." . "\r\n";
}
else {
    print "Signature valid." . "\r\n";
}