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

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

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

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

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

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

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


?>