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