Sample code for 30+ languages & platforms
Xojo Plugin

Windows Credentials Manager / Apple Keychain - List Matching Secrets

See more Secrets Examples

List secrets matching one or more wildcarded names for app, service, domain, and username.

Note: This example requires Chilkat v10.1.0 or later.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

Dim secrets As New Chilkat.Secrets

// On Windows, this is the Windows Credentials Manager
// On MacOS/iOS, it is the Apple Keychain
secrets.Location = "local_manager"

// Set wildcarded or exact values for appName, service, domain, and username.
// Omit any members where anything is allowed to match, or alternatively specify "*" to match anything.
Dim jsonMatch As New Chilkat.JsonObject
success = jsonMatch.UpdateString("appName","Test*")
success = jsonMatch.UpdateString("service","*")
success = jsonMatch.UpdateString("domain","*")
success = jsonMatch.UpdateString("username","Starfish*")

Dim results As New Chilkat.JsonObject
results.EmitCompact = False

success = secrets.ListSecrets(jsonMatch,results)
If (success = False) Then
    System.DebugLog(secrets.LastErrorText)
    Return
End If

System.DebugLog(results.Emit())

// Sample output on Windows.
// The "targetName" is purely informational and indicates the raw TargetName of the secret (i.e. Credential) stored in the Credentials Manager.

// {
//   "secrets": [
//     {
//       "appName": "Test2",
//       "service": "Custom",
//       "domain": "Ocean",
//       "username": "Starfish20",
//       "targetName": "Test2/Custom/Ocean/Starfish20"
//     },
//     {
//       "appName": "Test2",
//       "service": "Custom",
//       "domain": "Ocean",
//       "username": "Starfish",
//       "targetName": "Test2/Custom/Ocean/Starfish"
//     }
//   ]
// }

// ---------------------------------------------------------------------------------------
// 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 Int32
i = 0
Dim count_i As Int32
count_i = results.SizeOfArray("secrets")
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")
    // Information field for Windows Credentials Manager.
    targetName = results.StringOf("secrets[i].targetName")
    // Informational fields if on MacOS using the Apple Keychain.
    keyChainService = results.StringOf("secrets[i].keyChainService")
    keyChainAccount = results.StringOf("secrets[i].keyChainAccount")
    i = i + 1
Wend