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