Sample code for 30+ languages & platforms
B4X Requires Chilkat v11.0.0+

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 B4X Downloads

B4X
Dim success As Boolean = False

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

Dim trustedRoots As ChilkatTrustedRoots
trustedRoots.Initialize("trustedRoots")

'   Indicate that we will NOT trust any pre-installed certificates on the system.
trustedRoots.TrustSystemCaRoots = False

'  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.
Dim zip As ChilkatZip
zip.Initialize("zip")

'  Open a .zip containing PEM files, among other things..
success = zip.OpenZip("qa_data/certs/thawte-roots.zip")
If success = False Then
    Log(zip.LastErrorText)
    Return
End If


Dim entry As ChilkatZipEntry
entry.Initialize("entry")
Dim pemStr As String
Dim cert As ChilkatCert
cert.Initialize("cert")

Dim pattern As String = "*.pem"
Dim bHasMoreEntries As Boolean = zip.EntryMatching(pattern, entry)
Do While bHasMoreEntries = True

    Log("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 <> True Then
        Log(cert.LastErrorText)
    End If


    '  Add it to the trusted roots.
    trustedRoots.AddCert(cert)

    bHasMoreEntries = entry.GetNextMatch(pattern)
Loop

'   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