Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let secrets = CkoSecrets()!
// 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.
let jsonMatch = CkoJsonObject()!
jsonMatch.updateString(jsonPath: "appName", value: "Test*")
jsonMatch.updateString(jsonPath: "service", value: "*")
jsonMatch.updateString(jsonPath: "domain", value: "*")
jsonMatch.updateString(jsonPath: "username", value: "Starfish*")
let results = CkoJsonObject()!
results.emitCompact = false
success = secrets.list(json: jsonMatch, jsonOut: results)
if success == false {
print("\(secrets.lastErrorText!)")
return
}
print("\(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.
var appName: String?
var service: String?
var domain: String?
var username: String?
var targetName: String?
var keyChainService: String?
var keyChainAccount: String?
var i: Int = 0
var count_i: Int = results.size(ofArray: "secrets").intValue
while i < count_i {
results.i = i
appName = results.string(of: "secrets[i].appName")
service = results.string(of: "secrets[i].service")
domain = results.string(of: "secrets[i].domain")
username = results.string(of: "secrets[i].username")
// Information field for Windows Credentials Manager.
targetName = results.string(of: "secrets[i].targetName")
// Informational fields if on MacOS using the Apple Keychain.
keyChainService = results.string(of: "secrets[i].keyChainService")
keyChainAccount = results.string(of: "secrets[i].keyChainAccount")
i = i + 1
}
}