Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Encrypt using Cert to produce -----BEGIN PKCS7----- ... -----END PKCS7-----

See more Encryption Examples

Demonstrates how to encrypt using a certificate to produce output such as:
-----BEGIN PKCS7-----
MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ...
...
...
-----END PKCS7-----
The certificate to be used is not your own, but the certificate of the intended recipient of the message.

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.StringBuilder,
  Chilkat.Cert,
  Chilkat.Crypt2;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  crypt: TCrypt2;
  cert: TCert;
  toBeEncrypted: string;
  encryptedStr: string;
  sb: TStringBuilder;
  outStr: 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;

  //  Specify the encryption to be used.
  //  "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message.
  crypt.CryptAlgorithm := 'pki';
  crypt.Pkcs7CryptAlg := 'aes';
  crypt.KeyLength := 128;
  crypt.OaepHash := 'sha256';
  crypt.OaepPadding := True;

  //  A certificate is needed as the encryption key..
  cert := TCert.Create;
  success := cert.LoadFromFile('qa_data/certs/testCert.pem');
  if (success <> True) then
    begin
      WriteLn(cert.LastErrorText);
      Exit;
    end;

  //  Tell the crypt object to use the certificate.
  crypt.SetEncryptCert(cert);

  toBeEncrypted := 'This string is to be encrypted.';

  //  Get the result in multi-line BASE64 MIME format.
  crypt.EncodingMode := 'base64_mime';

  encryptedStr := crypt.EncryptStringENC(toBeEncrypted);
  if (success <> True) then
    begin
      WriteLn(crypt.LastErrorText);
      Exit;
    end;

  //  Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich...
  sb := TStringBuilder.Create;
  sb.AppendLine('-----BEGIN PKCS7-----',True);
  sb.Append(encryptedStr);
  sb.AppendLine('-----END PKCS7-----',True);

  outStr := sb.GetAsString();

  WriteLn(outStr);

  //  Sample output:

  //  -----BEGIN PKCS7-----
  //  MIICYQYJKoZIhvcNAQcDoIICUjCCAk4CAQAxggH5MIIB9QIBADCBsTCBmzELMAkGA1UEBhMCR0Ix
  //  GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
  //  Q09NT0RPIENBIExpbWl0ZWQxQTA/BgNVBAMTOENPTU9ETyBTSEEtMjU2IENsaWVudCBBdXRoZW50
  //  aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAuBl4qE2MODB05C5h53M5UDA4BgkqhkiG9w0B
  //  AQcwK6APMA0GCWCGSAFlAwQCAQUAoRgwFgYJKoZIhvcNAQEIMAkGBSsOAwIaBQAEggEAyZejlE37
  //  awl0bCWVbOCqf9yLSN17mZRamG8FHDh3nNu11G0+oyJtsPDEnSKsQig0V67MZ+hcWV+uf4ytcjyx
  //  H0gs5uex+LwkB+c3ZTOt18IYWFtRilg1HFy1ZN3t0D2QbxYy+i1TXOOwp3gAHL45vRCJ0FbKyQ36
  //  pKl0XLe+lRvp2EiJCKVjxtX8VcZOKT4xkG7yOARaCQceth6pA58Dg0yzAz7w4nD2UgAlNzrXG69X
  //  e+7e7yfBv47RRqFiQqDpCn+fM/PmFbUyqBppMwc64yP+fJek8VyJw2/UaXWWM4iSKSflk90tiHwf
  //  loEU3It4arnSv94fZQo0v129aBqpWzBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAECBBCohUgm5qX+
  //  TE6PxtPCmWi8gCBgbNg39emAB+AqLozm+vSLjZOGfg3M52gccKUJ8tg8XQ==
  //  -----END PKCS7-----


  crypt.Free;
  cert.Free;
  sb.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.