![]() |
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • Unicode C++ • VB.NET • VBScript • Visual Basic 6.0 • Visual FoxPro • Xojo Plugin
(Tcl) List Keys in a Microsoft Storage ProviderDemonstrates how to list the keys found in a Microsoft CNG Storage Provider, or a Legacy CryptoAPI Storage Provider. Important: This example requires Chilkat v9.5.0.83 or greater.
load ./chilkat.dll # This example requires Chilkat v9.5.0.83 or greater. set keyCon [new_CkKeyContainer] set json [new_CkJsonObject] CkJsonObject_put_EmitCompact $json 0 set success [CkKeyContainer_GetKeys $keyCon "Microsoft Software Key Storage Provider" $json] if {$success != 1} then { puts [CkKeyContainer_lastErrorText $keyCon] delete_CkKeyContainer $keyCon delete_CkJsonObject $json exit } puts [CkJsonObject_emit $json] # Sample JSON returned by GetKeys # If the storage provider is CNG, then each key has an "algId". # If the storage provider is legacy CryptoAPI, then each key has a "provType" (see below) # If the storage provider is CNG: # { # "storageProvider": "Microsoft Software Key Storage Provider", # "key": [ # { # "name": "cn=Chilkat Admin,ou=Persona Not Verified,ou=For Test Purposes Only Decryption Key", # "machineKey": false, # "algId": "ECDH_P384" # }, # { # "name": "CD1CC265-0DA0-4230-8419-CB6F808FE688", # "machineKey": false, # "algId": "SP800_108_CTR_HMAC" # }, # { # "name": "{FF14487C-0AED-471E-8FAD-4BF757C2195C}", # "machineKey": false, # "algId": "ECDH_P256" # }, # { # "name": "{869FD9A6-D815-44FD-A916-4D4A708CD949}", # "machineKey": false, # "algId": "ECDH_P256" # }, # { # "name": "D530ECA9-FF5A-4A6A-AAB3-6EC1870F2CC3", # "machineKey": false, # "algId": "SP800_108_CTR_HMAC" # }, # { # "name": "{F524771E-93C0-4D56-8DE7-2FE3CB5BD837}", # "machineKey": false, # "algId": "RSA" # }, # { # "name": "Microsoft Connected Devices Platform device certificate", # "machineKey": false, # "algId": "ECDSA_P256" # } # ] # } # If the storage provider is legacy CryptoAPI: # { # "storageProvider": "Microsoft Base Cryptographic Provider v1.0", # "key": [ # { # "name": "{48D7FF88-A52E-41E2-9EBD-0CC7E880DC65}", # "machineKey": false, # "provType": "PROV_RSA_FULL" # }, # { # "name": "{CBF7A33A-F9CF-4C30-8A06-94A5C7981058}", # "machineKey": false, # "provType": "PROV_RSA_FULL" # } # ] # } # Use this online tool to generate parsing code from sample JSON: # Generate Parsing Code from JSON set storageProvider [CkJsonObject_stringOf $json "storageProvider"] set i 0 set count_i [CkJsonObject_SizeOfArray $json "key"] while {$i < $count_i} { CkJsonObject_put_I $json $i set name [CkJsonObject_stringOf $json "key[i].name"] set machineKey [CkJsonObject_BoolOf $json "key[i].machineKey"] if {[CkJsonObject_HasMember $json "key[i].algId"] == 1} then { set algId [CkJsonObject_stringOf $json "key[i].algId"] } if {[CkJsonObject_HasMember $json "key[i].provType"] == 1} then { set provType [CkJsonObject_stringOf $json "key[i].provType"] } set i [expr $i + 1] } delete_CkKeyContainer $keyCon delete_CkJsonObject $json |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.