Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) PKCS11 Discover Readers and Smart Cards / TokensSee more PKCS11 ExamplesExample showing how to discover the readers (slots) and smart cards and tokens available through a vendor's PKCS11 Cryptoki module. Note: This example requires Chilkat v9.5.0.88 or later.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Note: Chilkat's PKCS11 implementation runs on Windows, Linux, Mac OS X, and other supported operating systems. $oPkcs11 = ObjCreate("Chilkat.Pkcs11") ; Specify the vendor's Cryptoki module DLL / shared lib. $oPkcs11.SharedLibPath = "aetpkss1.dll" Local $bSuccess = $oPkcs11.Initialize() If ($bSuccess = False) Then ConsoleWrite($oPkcs11.LastErrorText & @CRLF) Exit EndIf ; Call Discover to discover what's available. ; Indicate that we only want to return slots (readers) where tokens (smart cards) are present. ; (If the device is a USB token, such as an ePass300Auto, then by definition it has a "token" present.) Local $bOnlyTokensPresent = True $oJson = ObjCreate("Chilkat.JsonObject") $bSuccess = $oPkcs11.Discover($bOnlyTokensPresent,$oJson) If ($bSuccess = False) Then ConsoleWrite($oPkcs11.LastErrorText & @CRLF) Exit EndIf $oJson.EmitCompact = False ConsoleWrite($oJson.Emit() & @CRLF) ; Sample JSON output. ; Code for parsing this JSON is shown below.. ; { ; "cryptokiVersion": { ; "major": 2, ; "minor": 20 ; }, ; "manufacturerID": "A.E.T. Europe B.V.", ; "libraryDescription": "Cryptographic Token Interface", ; "libraryVersion": { ; "major": 3, ; "minor": 0 ; }, ; "slot": [ ; { ; "id": 52482, ; "slotDescription": "SCM Microsystems Inc. SCR33x USB Smart Card Reader 0", ; "manufacturerID": "SCM Microsystems Inc. SCR33x USB", ; "tokenPresent": true, ; "removableDevice": true, ; "hardwareSlot": true, ; "hardwareVersion": { ; "major": 0, ; "minor": 0 ; }, ; "firmwareVersion": { ; "major": 0, ; "minor": 0 ; }, ; "token": { ; "label": "chilkat", ; "manufacturerID": "A.E.T. Europe B.V.", ; "model": "19C40406010D00C0", ; "serialNumber": "21619600583C4505", ; "flags": [ ; "CKF_RNG", ; "CKF_LOGIN_REQUIRED", ; "CKF_USER_PIN_INITIALIZED", ; "CKF_TOKEN_INITIALIZED" ; ], ; "maxSessionCount": 126, ; "sessionCount": 0, ; "maxRwSessionCount": 126, ; "rwSessionCount": 0, ; "maxPinLen": 15, ; "minPinLen": 4, ; "totalPublicMemory": 32767, ; "freePublicMemory": 32767, ; "totalPrivateMemory": 32767, ; "freePrivateMemory": 32767, ; "hardwareVersion": { ; "major": 0, ; "minor": 0 ; }, ; "firmwareVersion": { ; "major": 0, ; "minor": 0 ; }, ; "utcTime": "", ; "rsa": { ; "minKeySize": 768, ; "maxKeySize": 2048 ; }, ; "mechanism": [ ; "CKM_RSA_PKCS", ; "CKM_RSA_X_509", ; "CKM_RSA_PKCS_OAEP", ; "CKM_MD5_RSA_PKCS", ; "CKM_SHA1_RSA_PKCS", ; "CKM_SHA224_RSA_PKCS", ; "CKM_SHA256_RSA_PKCS", ; "CKM_SHA384_RSA_PKCS", ; "CKM_SHA512_RSA_PKCS", ; "CKM_RIPEMD160_RSA_PKCS", ; "CKM_CPK_ECDSA", ; "CKM_CPK_ECDSA_SHA1", ; "CKM_CPK_ECIES", ; "CKM_CPK_ECIES_STDDH_SHA1KDF_DES3CBC_PAD_SHA1HMAC", ; "CKM_CPK_ECIES_STDDH_SHA1KDF_AES128CBC_PAD_SHA1HMAC", ; "CKM_CPK_PKCS7_SIGNED", ; "CKM_CPK_PKCS7_ENVELOPE_DES3CBC_PAD", ; "CKM_RSA_PKCS_PSS", ; "CKM_RSA_PKCS_KEY_PAIR_GEN", ; "CKM_RC2_KEY_GEN", ; "CKM_RC2_ECB", ; "CKM_RC2_CBC", ; "CKM_RC2_CBC_PAD", ; "CKM_RC4_KEY_GEN", ; "CKM_RC4", ; "CKM_DES_KEY_GEN", ; "CKM_DES2_KEY_GEN", ; "CKM_DES3_KEY_GEN", ; "CKM_DES_ECB", ; "CKM_DES_CBC", ; "CKM_DES3_ECB", ; "CKM_DES3_CBC", ; "CKM_DES_CBC_PAD", ; "CKM_DES3_CBC_PAD", ; "CKM_MD5", ; "CKM_SHA_1", ; "CKM_SHA224", ; "CKM_SHA256", ; "CKM_SHA384", ; "CKM_SHA512", ; "CKM_RIPEMD160" ; ] ; } ; } ; ] ; } ; Use this online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON Local $id Local $slotDescription Local $bTokenPresent Local $bRemovableDevice Local $bHardwareSlot Local $iHardwareVersionMajor Local $iHardwareVersionMinor Local $iFirmwareVersionMajor Local $iFirmwareVersionMinor Local $sTokenLabel Local $sTokenManufacturerID Local $sTokenModel Local $sTokenSerialNumber Local $iTokenMaxSessionCount Local $iTokenSessionCount Local $iTokenMaxRwSessionCount Local $iTokenRwSessionCount Local $iTokenMaxPinLen Local $iTokenMinPinLen Local $iTokenTotalPublicMemory Local $iTokenFreePublicMemory Local $iTokenTotalPrivateMemory Local $iTokenFreePrivateMemory Local $iTokenHardwareVersionMajor Local $iTokenHardwareVersionMinor Local $iTokenFirmwareVersionMajor Local $iTokenFirmwareVersionMinor Local $sTokenUtcTime Local $iTokenRsaMinKeySize Local $iTokenRsaMaxKeySize Local $iJ Local $iCount_j Local $strVal ; Use this online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON Local $iCryptokiVersionMajor = $oJson.IntOf("cryptokiVersion.major") Local $iCryptokiVersionMinor = $oJson.IntOf("cryptokiVersion.minor") Local $sManufacturerID = $oJson.StringOf("manufacturerID") Local $sLibraryDescription = $oJson.StringOf("libraryDescription") Local $iLibraryVersionMajor = $oJson.IntOf("libraryVersion.major") Local $iLibraryVersionMinor = $oJson.IntOf("libraryVersion.minor") Local $i = 0 Local $iCount_i = $oJson.SizeOfArray("slot") While $i < $iCount_i $oJson.I = $i $id = $oJson.IntOf("slot[i].id") $slotDescription = $oJson.StringOf("slot[i].slotDescription") $sManufacturerID = $oJson.StringOf("slot[i].manufacturerID") $bTokenPresent = $oJson.BoolOf("slot[i].tokenPresent") $bRemovableDevice = $oJson.BoolOf("slot[i].removableDevice") $bHardwareSlot = $oJson.BoolOf("slot[i].hardwareSlot") $iHardwareVersionMajor = $oJson.IntOf("slot[i].hardwareVersion.major") $iHardwareVersionMinor = $oJson.IntOf("slot[i].hardwareVersion.minor") $iFirmwareVersionMajor = $oJson.IntOf("slot[i].firmwareVersion.major") $iFirmwareVersionMinor = $oJson.IntOf("slot[i].firmwareVersion.minor") $sTokenLabel = $oJson.StringOf("slot[i].token.label") $sTokenManufacturerID = $oJson.StringOf("slot[i].token.manufacturerID") $sTokenModel = $oJson.StringOf("slot[i].token.model") $sTokenSerialNumber = $oJson.StringOf("slot[i].token.serialNumber") $iTokenMaxSessionCount = $oJson.IntOf("slot[i].token.maxSessionCount") $iTokenSessionCount = $oJson.IntOf("slot[i].token.sessionCount") $iTokenMaxRwSessionCount = $oJson.IntOf("slot[i].token.maxRwSessionCount") $iTokenRwSessionCount = $oJson.IntOf("slot[i].token.rwSessionCount") $iTokenMaxPinLen = $oJson.IntOf("slot[i].token.maxPinLen") $iTokenMinPinLen = $oJson.IntOf("slot[i].token.minPinLen") $iTokenTotalPublicMemory = $oJson.IntOf("slot[i].token.totalPublicMemory") $iTokenFreePublicMemory = $oJson.IntOf("slot[i].token.freePublicMemory") $iTokenTotalPrivateMemory = $oJson.IntOf("slot[i].token.totalPrivateMemory") $iTokenFreePrivateMemory = $oJson.IntOf("slot[i].token.freePrivateMemory") $iTokenHardwareVersionMajor = $oJson.IntOf("slot[i].token.hardwareVersion.major") $iTokenHardwareVersionMinor = $oJson.IntOf("slot[i].token.hardwareVersion.minor") $iTokenFirmwareVersionMajor = $oJson.IntOf("slot[i].token.firmwareVersion.major") $iTokenFirmwareVersionMinor = $oJson.IntOf("slot[i].token.firmwareVersion.minor") $sTokenUtcTime = $oJson.StringOf("slot[i].token.utcTime") $iTokenRsaMinKeySize = $oJson.IntOf("slot[i].token.rsa.minKeySize") $iTokenRsaMaxKeySize = $oJson.IntOf("slot[i].token.rsa.maxKeySize") $iJ = 0 $iCount_j = $oJson.SizeOfArray("slot[i].token.flags") While $iJ < $iCount_j $oJson.J = $iJ $strVal = $oJson.StringOf("slot[i].token.flags[j]") $iJ = $iJ + 1 Wend $iJ = 0 $iCount_j = $oJson.SizeOfArray("slot[i].token.mechanism") While $iJ < $iCount_j $oJson.J = $iJ $strVal = $oJson.StringOf("slot[i].token.mechanism[j]") $iJ = $iJ + 1 Wend $i = $i + 1 Wend |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.