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

Get the Certificate with Private Key from a Java KeyStore

See more Java KeyStore (JKS) Examples

Load a Chilkat certificate object from a Java KeyStore.

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.

-- Most of the time a .jks contains one certificate with it's associated private key.
-- (Similar to how a .pfx/.p12 usually contains a particular certificate with private key.)
-- This example demonstrates how to get the certificate with private key such that it can be used
-- by other Chilkat classes wherever a cert w/ private key is needed.
local jks = chilkat.JavaKeyStore.new()
local password = "secret"
local success = jks:load_file(password, "qa_data/jks/test_secret.jks")
if not success then
    print(jks.last_error_text)
    return
end

-- Make sure we have a private key.
if jks.num_private_keys < 1 then
    print("No private key available.")
    return
end

-- -------------------------------------------------------------------------
-- Get the certificate chain associated with the 1st (and probably only) private key in the JKS.

local chain = chilkat.CertChain.new()
success = jks:cert_chain_at(0, chain)
if not success then
    print(jks.last_error_text)
    return
end

local cert = chilkat.Cert.new()
success = chain:cert_at(0, cert)
if not success then
    print(chain.last_error_text)
    return
end

-- Verify again that this cert has a private key.
if not cert:has_private_key() then
    print("Certificate has no associated private key.")
    return
end

-- We now have the cert object with it's associated private key, and it can be used in other Chilkat classes where needed.
-- For example..

local crypt = chilkat.Crypt2.new()
success = crypt:set_signing_cert(cert)
if not success then
    print(crypt.last_error_text)
    return
end

-- ...
-- ...