Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Get an Ed25519 Key in Raw Hex Format
See more Ed25519 Examples
Demonstrates how to get the private and public key parts of an Ed25519 key in lowercase hex formmat.Note: This example requires Chilkat v9.5.0.83 or greater.
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.PrivateKey,
Chilkat.StringBuilder;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
privKey: TPrivateKey;
sbPubKeyHex: TStringBuilder;
privKeyHex: string;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Load an Ed25519 key from some format..
privKey := TPrivateKey.Create;
// This loads an Ed25519 key from an unencrypted PEM file (no password required).
success := privKey.LoadAnyFormatFile('qa_data/eddsa/ed25519.pem','');
if (success = False) then
begin
WriteLn(privKey.LastErrorText);
Exit;
end;
// The key type should be "ed25519" to indicate an Ed25519 key.
WriteLn('key type = ' + privKey.KeyType);
// What is the size of the private key in bits? (should always be 256 bits for Ed25519)
WriteLn('size in bits = ' + privKey.BitLength);
// Get the private and public key parts in raw hex format:
sbPubKeyHex := TStringBuilder.Create;
privKeyHex := privKey.GetRawHex(sbPubKeyHex);
// We should have a 32-byte private key (a 64 character hex string).
WriteLn('private key = ' + privKeyHex);
// We should have a 32-byte public key (a 64 character hex string).
WriteLn('public key = ' + sbPubKeyHex.GetAsString());
// Sample output:
// key type = ed25519
// size in bits = 256
// private key = d4ee72dbf913584ad5b6d8f1f769f8ad3afe7c28cbf1d4fbe097a88f44755842
// public key = 19bf44096984cdfe8541bac167dc3b96c85086aa30b6b6cb0c5c38ad703166e1
privKey.Free;
sbPubKeyHex.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.