Sample code for 30+ languages & platforms
Delphi ActiveX

Load PKCS12 / PFX and Access Contents

See more PFX/P12 Examples

Loads a PKCS12 / PFX file and iterates over the contents which include private keys and certificates.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
pfx: TChilkatPfx;
numPrivateKeys: Integer;
privKey: TPrivateKey;
i: Integer;
cert: TChilkatCert;
numCerts: Integer;

begin
success := 0;

pfx := TChilkatPfx.Create(Self);

// Load the PKCS12 from a file
success := pfx.LoadPfxFile('/someDir/my.p12','pfxFilePassword');
if (success = 0) then
  begin
    Memo1.Lines.Add(pfx.LastErrorText);
    Exit;
  end;

numPrivateKeys := pfx.NumPrivateKeys;

privKey := TPrivateKey.Create(Self);

Memo1.Lines.Add('Private Keys:');

i := 0;
while i < numPrivateKeys do
  begin
    pfx.PrivateKeyAt(i,privKey.ControlInterface);

    // Do something with the private key ...

    i := i + 1;
  end;

cert := TChilkatCert.Create(Self);

numCerts := pfx.NumCerts;

Memo1.Lines.Add('Certs:');
i := 0;
while i < numCerts do
  begin
    pfx.CertAt(i,cert.ControlInterface);
    Memo1.Lines.Add(cert.SubjectDN);

    // If the certificate has a private key (one of the private keys within the PFX)
    // then it can also be obtained via the certificate object:
    if (cert.HasPrivateKey() = 1) then
      begin

        Memo1.Lines.Add('Has private key!');

        success := cert.GetPrivateKey(privKey.ControlInterface);
        // ...

      end;

    i := i + 1;
  end;
end;