Sample code for 30+ languages & platforms
Lua

Client Certificate in REST (USB Token or Smartcard)

See more REST Examples

Demonstrates how to use a client certificate with a REST connection where the certificate and private key are located on a USB token or smart card.

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.

-- This example shows how to use the Chilkat socket object's connection.
local rest = chilkat.Rest.new()
local socket = chilkat.Socket.new()

-- Set the certificate to be used for mutual TLS authentication
local cert = chilkat.Cert.new()

-- If the smartcard or token requires a PIN...
cert.smart_card_pin = "000000"

local success = cert:load_from_smartcard("")
if not success then
    print(cert.last_error_text)
    return
end

success = socket:set_ssl_client_cert(cert)
if not success then
    print(socket.last_error_text)
    return
end

-- Establish the connection using the socket object (with client certificate authentication).
local bTls = true
local port = 443
local maxWaitMs = 5000
success = socket:connect("www.example.com", port, bTls, maxWaitMs)
if not success then
    print("Connect Failure Error Code: " .. socket.connect_fail_reason)
    print(socket.last_error_text)
    return
end

local bAutoReconnect = true

-- Use the connection:
success = rest:use_connection(socket, bAutoReconnect)
if not success then
    print(rest.last_error_text)
    return
end

-- At this point we are connected and can make REST calls...
-- For example..
local responseJson = rest:full_request_no_body("GET", "/someQuery")
if not rest.last_method_success then
    print(rest.last_error_text)
    return
end