Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

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