Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Decrypt a .p7m File (using a PFX)
See more Encryption Examples
_LANGUAGE_ sample code showing how to decrypt a .p7m using a .p12 / .pfx certificate w/ private key.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.Crypt2;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
crypt: TCrypt2;
pfxPath: string;
pfxPassword: string;
inPath: string;
outPath: string;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
crypt := TCrypt2.Create;
// Use a digital certificate and private key from a PFX file (.pfx or .p12).
pfxPath := 'myCertAndKey.pfx';
pfxPassword := 'test123';
success := crypt.AddPfxSourceFile(pfxPath,pfxPassword);
if (success <> True) then
begin
WriteLn(crypt.LastErrorText);
Exit;
end;
// Set the outPath to whatever is appropriate.
// If you are decrypting a PDF, your output might be "out.pdf"...
inPath := 'smime.p7m';
outPath := 'original.txt';
// Indicate that we're doing public key decryption (i.e. PKCS7)
crypt.CryptAlgorithm := 'pki';
success := crypt.CkDecryptFile(inPath,outPath);
if (success = False) then
begin
WriteLn(crypt.LastErrorText);
Exit;
end;
WriteLn('Success.');
crypt.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.