Sample code for 30+ languages & platforms
AutoIt

ScMinidriver - PIN Authentication for Smart Card or USB Token

See more ScMinidriver Examples

Demonstrates how to PIN authenticate with a connected smart card or USB token.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oScmd = ObjCreate("Chilkat.ScMinidriver")

; Reader names (smart card readers or USB tokens) can be discovered
; via List Readers or Find Smart Cards
Local $sReaderName = "Alcor Micro USB Smart Card Reader 0"
$bSuccess = $oScmd.AcquireContext($sReaderName)
If ($bSuccess = False) Then
    ConsoleWrite($oScmd.LastErrorText & @CRLF)
    Exit
EndIf

; If we are successful, the name of the currently inserted smart card is available:
Local $sCardName = $oScmd.CardName
ConsoleWrite("Card name: " & $sCardName & @CRLF)

; Perform regular PIN authentication with the smartcard.
; If authentication is successful, then the ScMinidriver session is authenticated and
; operations such as signing are permissible.

; The pin ID can be "user", "admin", or a number "3" through "7" (passed as a string).
; The possible pin ID's for a given smartcard are obtained via the GetCardProperties method.
; See Get Smart Card Properties for sample code.
; You should generally use the "user" pin ID.  You would only use the other pin ID's for very specific purposes.
Local $sPinId = "user"

; Change this to the PIN for your smart card.
Local $sPin = "0000"

Local $iRetval = $oScmd.PinAuthenticate($sPinId,$sPin)

; The return value is 0 for success.
; If the retval is greater than 0, it is the number of attempts remaining before the PIN is blocked.
; If the retval equals -1, then something else went wrong and you should consult the LastErrorText.
If ($iRetval < 0) Then
    ConsoleWrite($oScmd.LastErrorText & @CRLF)
    Exit
EndIf

If ($iRetval > 0) Then
    ConsoleWrite("PIN authentcation failed, " & $iRetval & " attempts remaining before the PIN is blocked." & @CRLF)
Else
    ConsoleWrite("PIN authentication successful. Your session is now authenticated and you may proceed with operations such as signing." & @CRLF)
EndIf

; ...
; ...
; ...

; You may deauthenticate the session when finished with operations that required authentication.
$bSuccess = $oScmd.PinDeauthenticate($sPinId)
If ($bSuccess = False) Then
    ConsoleWrite($oScmd.LastErrorText & @CRLF)
EndIf

; Delete the context when finished with the card.
$bSuccess = $oScmd.DeleteContext()
If ($bSuccess = False) Then
    ConsoleWrite($oScmd.LastErrorText & @CRLF)
EndIf