Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loTrustedRoots
LOCAL loZip
LOCAL loEntry
LOCAL lcPemStr
LOCAL loCert
LOCAL lcPattern
LOCAL lnBHasMoreEntries

lnSuccess = 0

* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loTrustedRoots = CreateObject('Chilkat.TrustedRoots')

*  Indicate that we will NOT trust any pre-installed certificates on the system.
loTrustedRoots.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.
loZip = CreateObject('Chilkat.Zip')

* Open a .zip containing PEM files, among other things..
lnSuccess = loZip.OpenZip("qa_data/certs/thawte-roots.zip")
IF (lnSuccess = 0) THEN
    ? loZip.LastErrorText
    RELEASE loTrustedRoots
    RELEASE loZip
    CANCEL
ENDIF

loEntry = CreateObject('Chilkat.ZipEntry')

loCert = CreateObject('Chilkat.Cert')

lcPattern = "*.pem"
lnBHasMoreEntries = loZip.EntryMatching(lcPattern,loEntry)
DO WHILE lnBHasMoreEntries = 1

    ? "Entry: " + loEntry.FileName

    * Get the PEM of the CA cert:
    lcPemStr = loEntry.UnzipToString(0,"utf-8")

    * Load it into a certificate object:
    lnSuccess = loCert.LoadPem(lcPemStr)
    IF (lnSuccess <> 1) THEN
        ? loCert.LastErrorText
    ENDIF

    * Add it to the trusted roots.
    loTrustedRoots.AddCert(loCert)

    lnBHasMoreEntries = loEntry.GetNextMatch(lcPattern)
ENDDO

*  Activate the trusted roots globally for all Chilkat objects.
*  This call really shouldn't fail, so we're not checking the return value.
lnSuccess = loTrustedRoots.Activate()

RELEASE loTrustedRoots
RELEASE loZip
RELEASE loEntry
RELEASE loCert