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
(PHP ActiveX) ScMinidriver - Get Smartcard PropertiesSee more ScMinidriver ExamplesGets information about the smart card currently inserted in the reader (or USB token).
<?php // 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 new COM('Chilkat_9_5_0.Chilkat.ScMinidriver') $scmd = new COM("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) { print $scmd->LastErrorText . "\n"; exit; } // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $json = new COM("Chilkat.JsonObject"); $json->EmitCompact = 0; $success = $scmd->GetCardProperties($json); if ($success == 0) { print $scmd->LastErrorText . "\n"; exit; } 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->I = $i; $strVal = $json->stringOf('pins[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.user.changePermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.user.changePermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.user.unblockPermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.user.unblockPermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.admin.changePermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.admin.changePermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.role3.changePermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.role3.changePermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.role3.unblockPermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.role3.unblockPermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('pin.role4.changePermission'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('pin.role4.changePermission[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('importSupport'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('importSupport[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('algorithms'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('algorithms[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('paddingSchemes'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('paddingSchemes[i]'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('chainingModes'); while ($i < $count_i) { $json->I = $i; $strVal = $json->stringOf('chainingModes[i]'); $i = $i + 1; } // Delete the context when finished with the card. $success = $scmd->DeleteContext(); if ($success == 0) { print $scmd->LastErrorText . "\n"; } ?> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.