Delphi ActiveX Requires Chilkat v11.0.0+
Delphi ActiveX
Verfies an RSA Signature
See more Apple Keychain Examples
Verifies an RSA signature against the original data.Chilkat Delphi ActiveX Downloads
var
success: Integer;
bd: TChilkatBinData;
i: Integer;
bdSig: TChilkatBinData;
pubKey: TPublicKey;
rsa: TChilkatRsa;
begin
success := 0;
// The following data was signed by the following example:
// RSA Sign using a Private Key on a USB Token or Smartcard
bd := TChilkatBinData.Create(Self);
for i := 0 to 100 do
begin
bd.AppendEncoded('000102030405060708090A0B0C0D0E0F','hex');
end;
// Load the signature
bdSig := TChilkatBinData.Create(Self);
success := bdSig.LoadFile('rsaSignatures/test1.sig');
if (success = 0) then
begin
Memo1.Lines.Add('Failed to load the RSA signature');
Exit;
end;
// 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 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.ControlInterface,'sha256',bdSig.ControlInterface);
if (success = 0) then
begin
Memo1.Lines.Add(rsa.LastErrorText);
Memo1.Lines.Add('Signature invalid.');
end
else
begin
Memo1.Lines.Add('Signature valid.');
end;