Sample code for 30+ languages & platforms
Lua 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 Lua Downloads

Lua
local chilkat = require("chilkat")

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

local trustedRoots = chilkat.TrustedRoots.new()

--  Indicate that we will NOT trust any pre-installed certificates on the system.
trustedRoots.trust_system_ca_roots = 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.
local zip = chilkat.Zip.new()

-- Open a .zip containing PEM files, among other things..
local success = zip:open_zip("qa_data/certs/thawte-roots.zip")
if not success then
    print(zip.last_error_text)
    return
end

local entry = chilkat.ZipEntry.new()
local pemStr = ""
local cert = chilkat.Cert.new()

local pattern = "*.pem"
local bHasMoreEntries = zip:entry_matching(pattern, entry)
while bHasMoreEntries do
    print("Entry: " .. entry.file_name)

    -- Get the PEM of the CA cert:
    pemStr = entry:unzip_to_string(0, "utf-8")

    -- Load it into a certificate object:
    success = cert:load_pem(pemStr)
    if not success then
        print(cert.last_error_text)
    end

    -- Add it to the trusted roots.
    trustedRoots:add_cert(cert)

    bHasMoreEntries = entry:get_next_match(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()