Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Set the S/MIME Encryption Key Length
See more Email Object Examples
Demonstrates the Chilkat Email.Pkcs7KeyLength property, which sets the key length of the symmetric algorithm used for PKCS#7 (S/MIME) encryption. The allowed values depend on Pkcs7CryptAlg: for aes use 128, 192, or 256; for 3des use 192; for des use 40; for rc2 use 40, 56, 64, or 128. The default is 128, and an unsupported algorithm/key-length combination causes encryption to fail. This example pairs AES with a 192-bit key.
Background: Key length is the size, in bits, of the secret key a symmetric cipher uses — a longer key means exponentially more possible keys and thus more resistance to brute-force attack. But length is only meaningful within a given algorithm: AES-128 is already very strong, and a key size must be one the chosen cipher actually supports, which is why
Pkcs7KeyLength and Pkcs7CryptAlg have to agree.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.Email;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
email: TEmail;
begin
// Demonstrates the Email.Pkcs7KeyLength property, which sets the key length (in bits)
// of the symmetric algorithm used for PKCS#7 (S/MIME) encryption. The allowed values
// depend on Pkcs7CryptAlg; for aes they are 128, 192, or 256. The default is 128.
email := TEmail.Create;
email.Pkcs7CryptAlg := 'aes';
email.Pkcs7KeyLength := 192;
WriteLn('Pkcs7CryptAlg = ' + email.Pkcs7CryptAlg);
WriteLn('Pkcs7KeyLength = ' + email.Pkcs7KeyLength);
email.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.