Sample code for 30+ languages & platforms
Lua

ScMinidriver - Change Smart Card PIN (or USB token PIN)

See more ScMinidriver Examples

Demonstrates how to change the PIN for a smart card or USB token.

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 scmd = chilkat.ScMinidriver.new()

-- Reader names (smart card readers or USB tokens) can be discovered
-- via List Readers or Find Smart Cards
local readerName = "Alcor Micro USB Smart Card Reader 0"
local success = scmd:acquire_context(readerName)
if not success then
    print(scmd.last_error_text)
    return
end

-- If successful, the name of the currently inserted smart card is available:
print("Card name: " .. scmd.card_name)

-- Change the "user" PIN.  (Typically, you'll always be using the "user" PIN.)
local currentPin = "0000"
local newPin = "1234"
local retval = scmd:pin_change("user", currentPin, newPin)
if retval == (-1) then
    print("The PIN is already blocked.")
    return
end

if retval == (-2) then
    print("The PinChange function failed for some unanticipated reason")
    print(scmd.last_error_text)
    return
end

if retval == 0 then
    print("PIN successfully changed.")
else
    print("Current PIN is incorrect.")
    print("Number of attempts remaining = " .. retval)
end

scmd:delete_context()