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
(VBScript) ScMinidriver - Get Smartcard PropertiesSee more ScMinidriver ExamplesGets information about the smart card currently inserted in the reader (or USB token).
Dim fso, outFile Set fso = CreateObject("Scripting.FileSystemObject") 'Create a Unicode (utf-16) output text file. Set outFile = fso.CreateTextFile("output.txt", True, True) ' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.ScMinidriver") set scmd = CreateObject("Chilkat.ScMinidriver") ' Reader names (smart card readers or USB tokens) can be discovered ' via PCSC List Readers or PCSC Find Smart Cards readerName = "Alcor Micro USB Smart Card Reader 0" success = scmd.AcquireContext(readerName) If (success = 0) Then outFile.WriteLine(scmd.LastErrorText) WScript.Quit End If ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.JsonObject") set json = CreateObject("Chilkat.JsonObject") json.EmitCompact = 0 success = scmd.GetCardProperties(json) If (success = 0) Then outFile.WriteLine(scmd.LastErrorText) WScript.Quit End If outFile.WriteLine(json.Emit()) ' Here is sample output: ' See below for sample code to parse the JSON. ' ' NOTE: Not all smart cards support all properties. ' The GetCardProperties method will return information for all properties supported by the card. ' { ' "bytesAvailable": 74752, ' "containersAvailable": 18, ' "maxKeyContainers": 20, ' "capabilities": { ' "fCertificateCompression": false, ' "fKeyGen": true ' }, ' "keySizes": { ' "minimumBitlen": 2048, ' "defaultBitlen": 2048, ' "maximumBitlen": 4096, ' "incrementalBitlen": 1024 ' }, ' "readOnly": false, ' "cacheMode": "global", ' "supportsWinX509Enrollment": true, ' "guid": "1201803d-03e6-772a-3d80-0112e6032a77", ' "serial": "e6032a773d800112e6032a77", ' "pins": [ ' "user", ' "admin", ' "role3", ' "role4" ' ], ' "pin": { ' "user": { ' "type": "regular", ' "purpose": "primaryCard", ' "changePermission": [ ' "user" ' ], ' "unblockPermission": [ ' "admin" ' ], ' "cachePolicy": "normal", ' "policyInfo": "00000000", ' "flags": "00000000", ' "acceptPlainTextPin": true, ' "generateSessionPin": false ' }, ' "admin": { ' "type": "challenge/response", ' "purpose": "administrator", ' "changePermission": [ ' "admin" ' ], ' "cachePolicy": "normal", ' "policyInfo": "00000000", ' "flags": "00000000" ' }, ' "role3": { ' "type": "regular", ' "purpose": "digitalSignature", ' "changePermission": [ ' "role3" ' ], ' "unblockPermission": [ ' "role4" ' ], ' "cachePolicy": "alwaysPrompt", ' "policyInfo": "00000000", ' "flags": "00000000", ' "acceptPlainTextPin": true, ' "generateSessionPin": false ' }, ' "role4": { ' "type": "regular", ' "purpose": "unblockOnly", ' "changePermission": [ ' "role4" ' ], ' "cachePolicy": "normal", ' "policyInfo": "00000000", ' "flags": "00000000", ' "acceptPlainTextPin": true, ' "generateSessionPin": false ' } ' }, ' "importSupport": [ ' "plainText", ' "rsaKeyest", ' "eccKeyest", ' "symmetric" ' ], ' "algorithms": [ ' "AES" ' ], ' "paddingSchemes": [ ' "block", ' "pkcs1", ' "pss", ' "oaep" ' ], ' "chainingModes": [ ' "ChainingModeCBC" ' ] ' } ' Use this online tool to generate parsing code from sample JSON: ' Generate Parsing Code from JSON bytesAvailable = json.IntOf("bytesAvailable") containersAvailable = json.IntOf("containersAvailable") maxKeyContainers = json.IntOf("maxKeyContainers") capabilitiesFCertificateCompression = json.BoolOf("capabilities.fCertificateCompression") capabilitiesFKeyGen = json.BoolOf("capabilities.fKeyGen") keySizesMinimumBitlen = json.IntOf("keySizes.minimumBitlen") keySizesDefaultBitlen = json.IntOf("keySizes.defaultBitlen") keySizesMaximumBitlen = json.IntOf("keySizes.maximumBitlen") keySizesIncrementalBitlen = json.IntOf("keySizes.incrementalBitlen") readOnly = json.BoolOf("readOnly") cacheMode = json.StringOf("cacheMode") supportsWinX509Enrollment = json.BoolOf("supportsWinX509Enrollment") guid = json.StringOf("guid") serial = json.StringOf("serial") pinUserType = json.StringOf("pin.user.type") pinUserPurpose = json.StringOf("pin.user.purpose") pinUserCachePolicy = json.StringOf("pin.user.cachePolicy") pinUserPolicyInfo = json.StringOf("pin.user.policyInfo") pinUserFlags = json.StringOf("pin.user.flags") pinUserAcceptPlainTextPin = json.BoolOf("pin.user.acceptPlainTextPin") pinUserGenerateSessionPin = json.BoolOf("pin.user.generateSessionPin") pinAdminType = json.StringOf("pin.admin.type") pinAdminPurpose = json.StringOf("pin.admin.purpose") pinAdminCachePolicy = json.StringOf("pin.admin.cachePolicy") pinAdminPolicyInfo = json.StringOf("pin.admin.policyInfo") pinAdminFlags = json.StringOf("pin.admin.flags") pinRole3Type = json.StringOf("pin.role3.type") pinRole3Purpose = json.StringOf("pin.role3.purpose") pinRole3CachePolicy = json.StringOf("pin.role3.cachePolicy") pinRole3PolicyInfo = json.StringOf("pin.role3.policyInfo") pinRole3Flags = json.StringOf("pin.role3.flags") pinRole3AcceptPlainTextPin = json.BoolOf("pin.role3.acceptPlainTextPin") pinRole3GenerateSessionPin = json.BoolOf("pin.role3.generateSessionPin") pinRole4Type = json.StringOf("pin.role4.type") pinRole4Purpose = json.StringOf("pin.role4.purpose") pinRole4CachePolicy = json.StringOf("pin.role4.cachePolicy") pinRole4PolicyInfo = json.StringOf("pin.role4.policyInfo") pinRole4Flags = json.StringOf("pin.role4.flags") pinRole4AcceptPlainTextPin = json.BoolOf("pin.role4.acceptPlainTextPin") pinRole4GenerateSessionPin = json.BoolOf("pin.role4.generateSessionPin") i = 0 count_i = json.SizeOfArray("pins") Do While i < count_i json.I = i strVal = json.StringOf("pins[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.user.changePermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.user.changePermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.user.unblockPermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.user.unblockPermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.admin.changePermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.admin.changePermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.role3.changePermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.role3.changePermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.role3.unblockPermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.role3.unblockPermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("pin.role4.changePermission") Do While i < count_i json.I = i strVal = json.StringOf("pin.role4.changePermission[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("importSupport") Do While i < count_i json.I = i strVal = json.StringOf("importSupport[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("algorithms") Do While i < count_i json.I = i strVal = json.StringOf("algorithms[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("paddingSchemes") Do While i < count_i json.I = i strVal = json.StringOf("paddingSchemes[i]") i = i + 1 Loop i = 0 count_i = json.SizeOfArray("chainingModes") Do While i < count_i json.I = i strVal = json.StringOf("chainingModes[i]") i = i + 1 Loop ' Delete the context when finished with the card. success = scmd.DeleteContext() If (success = 0) Then outFile.WriteLine(scmd.LastErrorText) End If outFile.Close |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.