Sample code for 30+ languages & platforms
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

Pascal (Lazarus/Delphi)
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.