Sample code for 30+ languages & platforms
Delphi DLL

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 DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Pfx, PrivateKey, Cert;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
pfx: HCkPfx;
numPrivateKeys: Integer;
privKey: HCkPrivateKey;
i: Integer;
cert: HCkCert;
numCerts: Integer;

begin
success := False;

pfx := CkPfx_Create();

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

numPrivateKeys := CkPfx_getNumPrivateKeys(pfx);

privKey := CkPrivateKey_Create();

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

i := 0;
while i < numPrivateKeys do
  begin
    CkPfx_PrivateKeyAt(pfx,i,privKey);

    // Do something with the private key ...

    i := i + 1;
  end;

cert := CkCert_Create();

numCerts := CkPfx_getNumCerts(pfx);

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

    // 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 (CkCert_HasPrivateKey(cert) = True) then
      begin

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

        success := CkCert_GetPrivateKey(cert,privKey);
        // ...

      end;

    i := i + 1;
  end;

CkPfx_Dispose(pfx);
CkPrivateKey_Dispose(privKey);
CkCert_Dispose(cert);

end;