Delphi ActiveX
Delphi ActiveX
Use a Custom Set of Trusted Root Certificates
See more Certificates Examples
Demonstrates how to build a set of trusted root certificates to be used globally by all Chilkat classes.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;
trustedRoots: TChilkatTrustedRoots;
zip: TChilkatZip;
entry: TChilkatZipEntry;
pemStr: WideString;
cert: TChilkatCert;
pattern: WideString;
bHasMoreEntries: Integer;
begin
success := 0;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
trustedRoots := TChilkatTrustedRoots.Create(Self);
// Indicate that we will NOT trust any pre-installed certificates on the system.
trustedRoots.TrustSystemCaRoots := 0;
// Thawte is a certificate authority that provides a .zip download of their
// root CA certificates: https://www.thawte.com/roots/index.html
// The direct download link is: https://www.verisign.com/support/thawte-roots.zip
// Note: The above URLs are valid at the time of writing this example (29-May-2015).
// Assuming the .zip has already been downloaded, open it and load each .pem file into
// our trusted roots object.
zip := TChilkatZip.Create(Self);
// Open a .zip containing PEM files, among other things..
success := zip.OpenZip('qa_data/certs/thawte-roots.zip');
if (success = 0) then
begin
Memo1.Lines.Add(zip.LastErrorText);
Exit;
end;
entry := TChilkatZipEntry.Create(Self);
cert := TChilkatCert.Create(Self);
pattern := '*.pem';
bHasMoreEntries := zip.EntryMatching(pattern,entry.ControlInterface);
while bHasMoreEntries = 1 do
begin
Memo1.Lines.Add('Entry: ' + entry.FileName);
// Get the PEM of the CA cert:
pemStr := entry.UnzipToString(0,'utf-8');
// Load it into a certificate object:
success := cert.LoadPem(pemStr);
if (success <> 1) then
begin
Memo1.Lines.Add(cert.LastErrorText);
end;
// Add it to the trusted roots.
trustedRoots.AddCert(cert.ControlInterface);
bHasMoreEntries := entry.GetNextMatch(pattern);
end;
// Activate the trusted roots globally for all Chilkat objects.
// This call really shouldn't fail, so we're not checking the return value.
success := trustedRoots.Activate();
end;