Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Load RSA Public Key from Hex Modulus and Exponent
See more RSA Examples
Load an RSA public key from a hex modulus and exponent.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.BinData,
Chilkat.Xml,
Chilkat.PublicKey;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
modulus: string;
exponent: string;
bdModulus: TBinData;
bdExponent: TBinData;
xml: TXml;
pubkey: TPublicKey;
begin
success := False;
// Load a 128-byte (1024-bit) modulus + exponent into a Chilkat public key object..
modulus := 'BF5F4AF9A018B5F324A0C10448C0D3248D9BE78967FDC551A27876AC5789ADCBA8245D3D942AE3799563D895DA801E765D225A54FA15DAB2C4731DD817DCF94A9AD62197074C2349442093A206234BF3747F0E88AA6F538355684CC1FB26FCE029C9050A1DAF9F507C2BABF6EFC9FB16320C8036721BE0279FBB76122C41E429';
exponent := '00000003';
// We'll need to re-encode from hex to base64..
bdModulus := TBinData.Create;
bdModulus.AppendEncoded(modulus,'hex');
bdExponent := TBinData.Create;
bdExponent.AppendEncoded(exponent,'hex');
xml := TXml.Create;
xml.Tag := 'RsaKeyValue';
xml.NewChild2('Modulus',bdModulus.GetEncoded('base64'));
xml.NewChild2('Exponent',bdExponent.GetEncoded('base64'));
// Now load into the pubkey object..
pubkey := TPublicKey.Create;
success := pubkey.LoadFromString(xml.GetXml());
if (success = False) then
begin
WriteLn(pubkey.LastErrorText);
Exit;
end;
WriteLn('Success.');
bdModulus.Free;
bdExponent.Free;
xml.Free;
pubkey.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.