Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Use a Custom Set of Trusted Root CertificatesDemonstrates how to build a set of trusted root certificates to be used globally by all Chilkat classes.
IncludeFile "CkTrustedRoots.pb" IncludeFile "CkZip.pb" IncludeFile "CkZipEntry.pb" IncludeFile "CkCert.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. trustedRoots.i = CkTrustedRoots::ckCreate() If trustedRoots.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Indicate that we will NOT trust any pre-installed certificates on the system. CkTrustedRoots::setCkTrustSystemCaRoots(trustedRoots, 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.i = CkZip::ckCreate() If zip.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Open a .zip containing PEM files, among other things.. success.i = CkZip::ckOpenZip(zip,"qa_data/certs/thawte-roots.zip") If success <> 1 Debug CkZip::ckLastErrorText(zip) CkTrustedRoots::ckDispose(trustedRoots) CkZip::ckDispose(zip) ProcedureReturn EndIf entry.i = CkZip::ckFirstMatchingEntry(zip,"*.pem") If CkZip::ckLastMethodSuccess(zip) <> 1 Debug "No entries matched." CkTrustedRoots::ckDispose(trustedRoots) CkZip::ckDispose(zip) ProcedureReturn EndIf nextEntry.i pemStr.s cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf bHasMoreEntries.i = 1 While (bHasMoreEntries = 1) Debug "Entry: " + CkZipEntry::ckFileName(entry) ; Get the PEM of the CA cert: pemStr = CkZipEntry::ckUnzipToString(entry,0,"utf-8") ; Load it into a certificate object: success = CkCert::ckLoadPem(cert,pemStr) If success <> 1 Debug CkCert::ckLastErrorText(cert) EndIf ; Add it to the trusted roots. CkTrustedRoots::ckAddCert(trustedRoots,cert) ; The NextMatchingEntry method was added in v9.5.0.50 nextEntry = CkZipEntry::ckNextMatchingEntry(entry,"*.pem") bHasMoreEntries = CkZipEntry::ckLastMethodSuccess(entry) CkZipEntry::ckDispose(entry) entry = nextEntry Wend ; Activate the trusted roots globally for all Chilkat objects. ; This call really shouldn't fail, so we're not checking the return value. success = CkTrustedRoots::ckActivate(trustedRoots) CkTrustedRoots::ckDispose(trustedRoots) CkZip::ckDispose(zip) CkCert::ckDispose(cert) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.