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
SSH Key
SSH
SSH Tunnel
SFTP

Unreleased...
Bzip2
LZW
Bz2
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

Check Certificate for Private Key

Checks to see if a certificate has its associated private key installed on the computer.

Detailed Instructions for Installing a PFX for Use by ASP / ASP.NET

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
cert: TChilkatCert;
success: Integer;
hasPrivKey: Integer;

begin
cert := TChilkatCert.Create(Self);

//  There are many ways of loading a Chilkat certificate object:
//  1) From a Windows registry-based certificate store.
//  2) From a PFX file.
//  3) From a DER encoded .cer file.
//  4) From a PEM file.

//  The point of this example is to show how to check for the existence
//  of a usable private key.  This is done by calling the HasPrivateKey method.

//  The LoadByCommonName method searches the registry-based
//  Windows Current User Certificate Store and Local Machine Certificate
//  Store for a certificate whose common name (CN) matches
//  the argument:

success := cert.LoadByCommonName('Chilkat Software, Inc.');
if (success = 0) then
  begin
    ShowMessage('Failed to find certificate!');
  end
else
  begin

    //  Display the certificate's distinguished name:
    Memo1.Lines.Add(cert.SubjectDN);

    hasPrivKey := cert.HasPrivateKey();
    if (hasPrivKey = 1) then
      begin
        Memo1.Lines.Add('Certificate has a usable private key.');
      end
    else
      begin
        Memo1.Lines.Add('Certificate does not have a private key.');
      end;

    //  If HasPrivateKey returns 0, it's possible that the private key
    //  does exist, but the calling process does not have permission to access it.

    //  If your program is running under IIS (perhaps in a web service), you need
    //  rights to the private key to perform a signature, and the IIS processes
    //  typically runs in the default IIS Application Pool under the
    //  NETWORK_SERVICE ID, which has no rights.

    //  Grant the ID Full Control rights to the private key which is stored in
    //  C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\Machine Keys.
    //  (Perhaps lesser rights would work; you may experiment).

  end;

//  Alternatively, load a Certificate from a .cer file.
//  (Certs may also be loaded from other types of files, such as PEM, DER, PFX, etc.)
success := cert.LoadFromFile('myCert.cer');
if (success = 0) then
  begin
    ShowMessage('Failed to load certificate!');
  end
else
  begin

    hasPrivKey := cert.HasPrivateKey();
    if (hasPrivKey = 1) then
      begin
        Memo1.Lines.Add('Certificate has a usable private key.');
      end
    else
      begin
        Memo1.Lines.Add('Certificate does not have a private key.');
      end;

  end;
end;

 

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

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

Mail Component · .NET Email Component · XML Parser