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
(Ruby) ScMinidriver - Get Smartcard PropertiesSee more ScMinidriver ExamplesGets information about the smart card currently inserted in the reader (or USB token).
require 'chilkat' # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. scmd = Chilkat::CkScMinidriver.new() # 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 == false) print scmd.lastErrorText() + "\n"; exit end json = Chilkat::CkJsonObject.new() json.put_EmitCompact(false) success = scmd.GetCardProperties(json) if (success == false) print scmd.lastErrorText() + "\n"; exit end print json.emit() + "\n"; # 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") while i < count_i json.put_I(i) strVal = json.stringOf("pins[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.user.changePermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.user.changePermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.user.unblockPermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.user.unblockPermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.admin.changePermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.admin.changePermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.role3.changePermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.role3.changePermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.role3.unblockPermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.role3.unblockPermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("pin.role4.changePermission") while i < count_i json.put_I(i) strVal = json.stringOf("pin.role4.changePermission[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("importSupport") while i < count_i json.put_I(i) strVal = json.stringOf("importSupport[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("algorithms") while i < count_i json.put_I(i) strVal = json.stringOf("algorithms[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("paddingSchemes") while i < count_i json.put_I(i) strVal = json.stringOf("paddingSchemes[i]") i = i + 1 end i = 0 count_i = json.SizeOfArray("chainingModes") while i < count_i json.put_I(i) strVal = json.stringOf("chainingModes[i]") i = i + 1 end # Delete the context when finished with the card. success = scmd.DeleteContext() if (success == false) print scmd.lastErrorText() + "\n"; end |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.