Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSecrets
LOCAL loJsonMatch
LOCAL loResults
LOCAL lcAppName
LOCAL lcService
LOCAL lcDomain
LOCAL lcUsername
LOCAL lcTargetName
LOCAL lcKeyChainService
LOCAL lcKeyChainAccount
LOCAL i
LOCAL lnCount_i

lnSuccess = 0

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

loSecrets = CreateObject('Chilkat.Secrets')

* On Windows, this is the Windows Credentials Manager
* On MacOS/iOS, it is the Apple Keychain
loSecrets.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.
loJsonMatch = CreateObject('Chilkat.JsonObject')
loJsonMatch.UpdateString("appName","Test*")
loJsonMatch.UpdateString("service","*")
loJsonMatch.UpdateString("domain","*")
loJsonMatch.UpdateString("username","Starfish*")

loResults = CreateObject('Chilkat.JsonObject')
loResults.EmitCompact = 0

lnSuccess = loSecrets.ListSecrets(loJsonMatch,loResults)
IF (lnSuccess = 0) THEN
    ? loSecrets.LastErrorText
    RELEASE loSecrets
    RELEASE loJsonMatch
    RELEASE loResults
    CANCEL
ENDIF

? loResults.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.

i = 0
lnCount_i = loResults.SizeOfArray("secrets")
DO WHILE i < lnCount_i
    loResults.I = i
    lcAppName = loResults.StringOf("secrets[i].appName")
    lcService = loResults.StringOf("secrets[i].service")
    lcDomain = loResults.StringOf("secrets[i].domain")
    lcUsername = loResults.StringOf("secrets[i].username")
    * Information field for Windows Credentials Manager.
    lcTargetName = loResults.StringOf("secrets[i].targetName")
    * Informational fields if on MacOS using the Apple Keychain.
    lcKeyChainService = loResults.StringOf("secrets[i].keyChainService")
    lcKeyChainAccount = loResults.StringOf("secrets[i].keyChainAccount")
    i = i + 1
ENDDO

RELEASE loSecrets
RELEASE loJsonMatch
RELEASE loResults