Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA

Unreleased...
Bzip2
LZW
Bz2
Icon

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');

  end;

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

  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.');

  end;

//  Tell the encryption component to use this cert.
crypt.SetSigningCert(cert);

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);

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;

 

Need a specific example? Send a request to support@chilkatsoft.com

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

Mail Component · .NET Email Component · XML Parser