DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSecrets
Variant vJsonMatch
Handle hoJsonMatch
Variant vResults
Handle hoResults
String sAppName
String sService
String sDomain
String sUsername
String sTargetName
String sKeyChainService
String sKeyChainAccount
Integer i
Integer iCount_i
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatSecrets)) To hoSecrets
If (Not(IsComObjectCreated(hoSecrets))) Begin
Send CreateComObject of hoSecrets
End
// On Windows, this is the Windows Credentials Manager
// On MacOS/iOS, it is the Apple Keychain
Set ComLocation Of hoSecrets To "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.
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonMatch
If (Not(IsComObjectCreated(hoJsonMatch))) Begin
Send CreateComObject of hoJsonMatch
End
Get ComUpdateString Of hoJsonMatch "appName" "Test*" To iSuccess
Get ComUpdateString Of hoJsonMatch "service" "*" To iSuccess
Get ComUpdateString Of hoJsonMatch "domain" "*" To iSuccess
Get ComUpdateString Of hoJsonMatch "username" "Starfish*" To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoResults
If (Not(IsComObjectCreated(hoResults))) Begin
Send CreateComObject of hoResults
End
Set ComEmitCompact Of hoResults To False
Get pvComObject of hoJsonMatch to vJsonMatch
Get pvComObject of hoResults to vResults
Get ComListSecrets Of hoSecrets vJsonMatch vResults To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSecrets To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComEmit Of hoResults To sTemp1
Showln sTemp1
// 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.
Move 0 To i
Get ComSizeOfArray Of hoResults "secrets" To iCount_i
While (i < iCount_i)
Set ComI Of hoResults To i
Get ComStringOf Of hoResults "secrets[i].appName" To sAppName
Get ComStringOf Of hoResults "secrets[i].service" To sService
Get ComStringOf Of hoResults "secrets[i].domain" To sDomain
Get ComStringOf Of hoResults "secrets[i].username" To sUsername
// Information field for Windows Credentials Manager.
Get ComStringOf Of hoResults "secrets[i].targetName" To sTargetName
// Informational fields if on MacOS using the Apple Keychain.
Get ComStringOf Of hoResults "secrets[i].keyChainService" To sKeyChainService
Get ComStringOf Of hoResults "secrets[i].keyChainAccount" To sKeyChainAccount
Move (i + 1) To i
Loop
End_Procedure