Sample code for 30+ languages & platforms
Tcl

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

Tcl

load ./chilkat.dll

set success 0

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

set scmd [new_CkScMinidriver]

# Reader names (smart card readers or USB tokens) can be discovered
# via List Readers or Find Smart Cards
set readerName "Alcor Micro USB Smart Card Reader 0"
set success [CkScMinidriver_AcquireContext $scmd $readerName]
if {$success == 0} then {
    puts [CkScMinidriver_lastErrorText $scmd]
    delete_CkScMinidriver $scmd
    exit
}

# If successful, the name of the currently inserted smart card is available:
puts "Card name: [CkScMinidriver_cardName $scmd]"

# Change the "user" PIN.  (Typically, you'll always be using the "user" PIN.)
set currentPin "0000"
set newPin "1234"
set retval [CkScMinidriver_PinChange $scmd "user" $currentPin $newPin]
if {$retval == -1} then {
    puts "The PIN is already blocked."
    delete_CkScMinidriver $scmd
    exit
}

if {$retval == -2} then {
    puts "The PinChange function failed for some unanticipated reason"
    puts [CkScMinidriver_lastErrorText $scmd]
    delete_CkScMinidriver $scmd
    exit
}

if {$retval == 0} then {
    puts "PIN successfully changed."
} else {
    puts "Current PIN is incorrect."
    puts "Number of attempts remaining = $retval"
}

CkScMinidriver_DeleteContext $scmd

delete_CkScMinidriver $scmd