Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Windows Credentials Manager / Apple Keychain - List Matching SecretsSee more Secrets ExamplesList secrets matching one or more wildcarded names for app, service, domain, and username. Note: This example requires Chilkat v10.1.0 or later. For more information, see https://cknotes.com/chilkat-secrets-class-added-in-version-10-1-0/
IncludeFile "CkJsonObject.pb" IncludeFile "CkSecrets.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. secrets.i = CkSecrets::ckCreate() If secrets.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; On Windows, this is the Windows Credentials Manager ; On MacOS/iOS, it is the Apple Keychain CkSecrets::setCkLocation(secrets, "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. jsonMatch.i = CkJsonObject::ckCreate() If jsonMatch.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(jsonMatch,"appName","Test*") CkJsonObject::ckUpdateString(jsonMatch,"service","*") CkJsonObject::ckUpdateString(jsonMatch,"domain","*") CkJsonObject::ckUpdateString(jsonMatch,"username","Starfish*") results.i = CkJsonObject::ckCreate() If results.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::setCkEmitCompact(results, 0) success.i = CkSecrets::ckListSecrets(secrets,jsonMatch,results) If success = 0 Debug CkSecrets::ckLastErrorText(secrets) CkSecrets::ckDispose(secrets) CkJsonObject::ckDispose(jsonMatch) CkJsonObject::ckDispose(results) ProcedureReturn EndIf Debug CkJsonObject::ckEmit(results) ; 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. appName.s service.s domain.s username.s targetName.s keyChainService.s keyChainAccount.s i.i = 0 count_i.i = CkJsonObject::ckSizeOfArray(results,"secrets") While i < count_i CkJsonObject::setCkI(results, i) appName = CkJsonObject::ckStringOf(results,"secrets[i].appName") service = CkJsonObject::ckStringOf(results,"secrets[i].service") domain = CkJsonObject::ckStringOf(results,"secrets[i].domain") username = CkJsonObject::ckStringOf(results,"secrets[i].username") ; Information field for Windows Credentials Manager. targetName = CkJsonObject::ckStringOf(results,"secrets[i].targetName") ; Informational fields if on MacOS using the Apple Keychain. keyChainService = CkJsonObject::ckStringOf(results,"secrets[i].keyChainService") keyChainAccount = CkJsonObject::ckStringOf(results,"secrets[i].keyChainAccount") i = i + 1 Wend CkSecrets::ckDispose(secrets) CkJsonObject::ckDispose(jsonMatch) CkJsonObject::ckDispose(results) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.