Delphi DLL
Delphi DLL
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 DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, Rsa, PublicKey;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
bd: HCkBinData;
i: Integer;
sha256_base64: PWideChar;
base64_rsa_sig: PWideChar;
pubKey: HCkPublicKey;
rsa: HCkRsa;
begin
success := False;
bd := CkBinData_Create();
for i := 0 to 100 do
begin
CkBinData_AppendEncoded(bd,'000102030405060708090A0B0C0D0E0F','hex');
end;
sha256_base64 := CkBinData__getHash(bd,'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 := CkPublicKey_Create();
success := CkPublicKey_LoadFromFile(pubKey,'rsaKeys/chilkat-rsa-2048.pem');
if (success = False) then
begin
Memo1.Lines.Add(CkPublicKey__lastErrorText(pubKey));
Exit;
end;
rsa := CkRsa_Create();
success := CkRsa_UsePublicKey(rsa,pubKey);
if (success = False) then
begin
Memo1.Lines.Add(CkRsa__lastErrorText(rsa));
Exit;
end;
// Verify the hash against the signature.
CkRsa_putEncodingMode(rsa,'base64');
success := CkRsa_VerifyHashENC(rsa,sha256_base64,'sha256',base64_rsa_sig);
if (success = False) then
begin
Memo1.Lines.Add(CkRsa__lastErrorText(rsa));
Memo1.Lines.Add('Signature invalid.');
end
else
begin
Memo1.Lines.Add('Signature valid.');
end;
CkBinData_Dispose(bd);
CkPublicKey_Dispose(pubKey);
CkRsa_Dispose(rsa);
end;