B4X
B4X
Windows Credentials Manager / Apple Keychain - List All Secrets
See more Secrets Examples
On Windows, lists all secrets in the Windows Credentials Manager.On MacOS or iOS, lists all secrets in the Apple Keychain.
Note: This example requires Chilkat v10.1.0 or later.
Chilkat B4X Downloads
Dim success As Boolean = False
' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.
Dim secrets As ChilkatSecrets
secrets.Initialize("secrets")
' On Windows, this is the Windows Credentials Manager
' On MacOS/iOS, it is the Apple Keychain
secrets.Location = "local_manager"
' Pass an empty JSON object to list all secrets.
Dim json As ChilkatJsonObject
json.Initialize
Dim results As ChilkatJsonObject
results.Initialize
results.EmitCompact = False
success = secrets.ListSecrets(json, results)
If success = False Then
Log(secrets.LastErrorText)
Return
End If
Log(results.Emit)
' Sample output on Windows (listing all secrets contained in the Windows Credentials Manager)
' The "targetName" is purely informational and indicates the raw TargetName of the secret (i.e. Credential) stored in the Credentials Manager.
' Code for parsing (iterating) the JSON results is shown below..
' {
' "secrets": [
' {
' "appName": "Test",
' "service": "MyService",
' "domain": "Xyz",
' "username": "MySecret",
' "targetName": "Test/MyService/Xyz/MySecret"
' },
' {
' "appName": "Chilkat",
' "service": "TestSplit",
' "domain": "local",
' "username": "Matt",
' "targetName": "Chilkat/TestSplit/local/Matt"
' },
' {
' "appName": "Test2",
' "service": "Custom",
' "domain": "Ocean",
' "username": "Starfish20",
' "targetName": "Test2/Custom/Ocean/Starfish20"
' },
' {
' "service": "VS Code Azure",
' "domain": "",
' "username": "Azure",
' "targetName": "VS Code Azure/Azure"
' },
' {
' "appName": "Test2",
' "service": "Custom",
' "domain": "Ocean",
' "username": "Starfish",
' "targetName": "Test2/Custom/Ocean/Starfish"
' },
' {
' "appName": "AA_MyApp",
' "service": "OAuth2",
' "domain": "onedrive",
' "username": "matt",
' "targetName": "AA_MyApp/OAuth2/onedrive/matt"
' }
' ]
' }
' ---------------------------------------------------------------------------------------
' Here's sample output for listing secrets on MacOS
' Some are secrets created using Chilkat's API, others are pre-existing secrets.
' The "keyChainService" and "keyChainAccount" members are purely informational and show the raw Apple Keychain Service and Account information for the secret.
' {
' "secrets": [
' {
' "service": "com.apple.scopedbookmarksagent.xpc",
' "username": "com.apple.scopedbookmarksagent.xpc",
' "keyChainService": "com.apple.scopedbookmarksagent.xpc",
' "keyChainAccount": "com.apple.scopedbookmarksagent.xpc"
' },
' {
' "service": "StandaloneBeacon",
' "username": "searchparty",
' "keyChainService": "StandaloneBeacon",
' "keyChainAccount": "searchparty"
' },
' {
' "service": "BeaconStore",
' "username": "BeaconStoreKey",
' "keyChainService": "BeaconStore",
' "keyChainAccount": "BeaconStoreKey"
' },
' {
' "service": "LocalStorage",
' "username": "findmylocate",
' "keyChainService": "LocalStorage",
' "keyChainAccount": "findmylocate"
' },
' {
' "service": "ProtectedCloudStorage",
' "username": "default",
' "keyChainService": "ProtectedCloudStorage",
' "keyChainAccount": "default"
' },
' {
' "service": "CloudStorage",
' "username": "findmylocate",
' "keyChainService": "CloudStorage",
' "keyChainAccount": "findmylocate"
' },
' {
' "service": "CloudKitCache",
' "username": "FindMyCloudKit",
' "keyChainService": "CloudKitCache",
' "keyChainAccount": "FindMyCloudKit"
' },
' {
' "service": "com.apple.continuity.encryption",
' "username": "handoff-own-encryption-key",
' "keyChainService": "com.apple.continuity.encryption",
' "keyChainAccount": "handoff-own-encryption-key"
' },
' {
' "service": "com.apple.NetworkServiceProxy.ProxyToken",
' "username": "CloudFlare",
' "keyChainService": "com.apple.NetworkServiceProxy.ProxyToken",
' "keyChainAccount": "CloudFlare"
' },
' {
' "appName": "Chilkat",
' "service": "çözツ新",
' "domain": "local",
' "username": "Matt",
' "keyChainService": "Chilkat/çözツ新",
' "keyChainAccount": "local/Matt"
' },
' {
' "service": "AirPort",
' "username": "FP Public WiFi",
' "keyChainService": "AirPort",
' "keyChainAccount": "FP Public WiFi"
' }
' ]
' }
' ---------------------------------------------------------------------------------------
' Here's sample code for parsing the JSON list of secrets.
Dim appName As String
Dim service As String
Dim domain As String
Dim username As String
Dim targetName As String
Dim keyChainService As String
Dim keyChainAccount As String
Dim i As Int = 0
Dim count_i As Int = results.SizeOfArray("secrets")
Do While i < count_i
results.I = i
appName = results.StringOf("secrets[i].appName")
service = results.StringOf("secrets[i].service")
domain = results.StringOf("secrets[i].domain")
username = results.StringOf("secrets[i].username")
targetName = results.StringOf("secrets[i].targetName")
keyChainService = results.StringOf("secrets[i].keyChainService")
keyChainAccount = results.StringOf("secrets[i].keyChainAccount")
i = i + 1
Loop