Sample code for 30+ languages & platforms
Delphi ActiveX

Verify an RSA Signature Against the Signed Hash

See more Apple Keychain Examples

Demonstrates how to validate an RSA Signature against the hash that was signed.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
bd: TChilkatBinData;
i: Integer;
sha256_base64: WideString;
base64_rsa_sig: WideString;
pubKey: TPublicKey;
rsa: TChilkatRsa;

begin
success := 0;

bd := TChilkatBinData.Create(Self);

for i := 0 to 100 do
  begin
    bd.AppendEncoded('000102030405060708090A0B0C0D0E0F','hex');
  end;

sha256_base64 := bd.GetHash('sha256','base64');
Memo1.Lines.Add('sha256 hash in base64 format: ' + sha256_base64);

base64_rsa_sig := 'AwF2BbOvL6jA5DwmMAc9n6J2Cc8PI6Rj5W079+aKJcIEtPWRzHor0Bvc3aftGM3Jbgj6SXlIC3M3RYS7UZOnfiHKFNZgbxaNT5WwsWooK42ZkC8DBZl0p7OunBUKd5SciUo+TKilioeUkriN3L1Zl9hwi3HVDVqgVo3XXskwIftSqLSFlepTLTmOWj9Y93dp8J4D9RyLtNgFQBc0WB22tyJTsuY56mLcWe1AMF3LizB9OrbwjynF2u16xWlrJdugccz795fJBUV9aQSD+8S3KeqwQhoi8RK1uhD68aGCyaSpBq0NZ8COAkn7MXaF4POxrAAt8udfHM+PRfSOptcH/w==';

// Get the public key to be used for signature verification.
pubKey := TPublicKey.Create(Self);
success := pubKey.LoadFromFile('rsaKeys/chilkat-rsa-2048.pem');
if (success = 0) then
  begin
    Memo1.Lines.Add(pubKey.LastErrorText);
    Exit;
  end;

rsa := TChilkatRsa.Create(Self);
success := rsa.UsePublicKey(pubKey.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(rsa.LastErrorText);
    Exit;
  end;

// Verify the hash against the signature.
rsa.EncodingMode := 'base64';
success := rsa.VerifyHashENC(sha256_base64,'sha256',base64_rsa_sig);

if (success = 0) then
  begin
    Memo1.Lines.Add(rsa.LastErrorText);
    Memo1.Lines.Add('Signature invalid.');
  end
else
  begin
    Memo1.Lines.Add('Signature valid.');
  end;
end;