Delphi Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

PKCS7 SignedData Detached Signature

How to create a PKCS7 detached signature. The resulting PKCS7 structure is encoded to a printable string using hex or base64 encoding. The data being signed is not included in the PKCS#7 structure.

Download Chilkat Crypt ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATCRYPT2Lib_TLB,
    CHILKATCERTIFICATELib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
crypt: TChilkatCrypt2;
success: Integer;
cert: TChilkatCert;
bHasPrivateKey: Integer;
strData: String;
strSignature: String;

begin
crypt := TChilkatCrypt2.Create(Self);

//  Any string argument automatically begins the 30-day trial.
success := crypt.UnlockComponent('30-day trial');
if (success <> 1) then
  begin
    ShowMessage('Crypt component unlock failed');
    Exit;
  end;

cert := TChilkatCert.Create(Self);
success := cert.LoadByCommonName('Chilkat Software');
if (success <> 1) then
  begin
    ShowMessage(cert.LastErrorText);
    Exit;
  end;

//  Make sure this certificate has a private key available:

bHasPrivateKey := cert.HasPrivateKey();
if (bHasPrivateKey <> 1) then
  begin
    ShowMessage('No private key available for signing.');
    Exit;
  end;

//  Tell the encryption component to use this cert.
crypt.SetSigningCert(cert.ControlInterface As CHILKATCRYPT2Lib_TLB.IChilkatCert);

strData := 'This is the data to be signed.';

//  Indicate that the PKCS7 signature should be returned
//  as a base64 encoded string:
crypt.EncodingMode := 'base64';

//  The EncodingMode may be set to other values such as
//  "hex", "url", "quoted-printable", etc.

strSignature := crypt.SignStringENC(strData);

Memo1.Lines.Add(strSignature);

//  Now verify the signature against the original data.

//  Tell the component what certificate to use for verification.
crypt.SetVerifyCert(cert.ControlInterface As CHILKATCRYPT2Lib_TLB.IChilkatCert);

success := crypt.VerifyStringENC(strData,strSignature);
if (success = 1) then
  begin
    ShowMessage('digital signature verified');
  end
else
  begin
    ShowMessage('digital signature invalid');
  end;

//  Try it with incorrect data:
success := crypt.VerifyStringENC('This is not the signed data',strSignature);
if (success = 1) then
  begin
    ShowMessage('digital signature verified');
  end
else
  begin
    ShowMessage('digital signature invalid');
  end;
end;

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser