2019-06-25 22:44:19 +02:00
|
|
|
//
|
|
|
|
|
// AppKeychain.swift
|
|
|
|
|
// passKit
|
|
|
|
|
//
|
|
|
|
|
// Created by Danny Moesch on 25.06.19.
|
|
|
|
|
// Copyright © 2019 Bob Sun. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import KeychainAccess
|
|
|
|
|
|
2019-07-20 23:36:44 +02:00
|
|
|
public class AppKeychain: KeyStore {
|
2019-07-20 23:31:13 +02:00
|
|
|
public static let shared = AppKeychain()
|
2020-06-28 21:25:40 +02:00
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
private let keychain = Keychain(service: Globals.bundleIdentifier, accessGroup: Globals.groupIdentifier)
|
2019-06-25 22:44:19 +02:00
|
|
|
.accessibility(.whenUnlockedThisDeviceOnly)
|
|
|
|
|
.synchronizable(false)
|
|
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
public func add(string: String?, for key: String) {
|
2019-06-25 22:44:19 +02:00
|
|
|
keychain[key] = string
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
public func contains(key: String) -> Bool {
|
2020-06-28 21:25:40 +02:00
|
|
|
(try? keychain.contains(key)) ?? false
|
2019-07-02 20:28:47 +02:00
|
|
|
}
|
|
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
public func get(for key: String) -> String? {
|
2020-06-28 21:25:40 +02:00
|
|
|
try? keychain.getString(key)
|
2019-06-25 22:44:19 +02:00
|
|
|
}
|
|
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
public func removeContent(for key: String) {
|
2019-06-25 22:44:19 +02:00
|
|
|
try? keychain.remove(key)
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-20 23:31:13 +02:00
|
|
|
public func removeAllContent() {
|
2019-06-25 22:44:19 +02:00
|
|
|
try? keychain.removeAll()
|
|
|
|
|
}
|
2020-04-13 19:15:52 -07:00
|
|
|
|
|
|
|
|
public func removeAllContent(withPrefix prefix: String) {
|
2020-09-20 15:07:18 +02:00
|
|
|
keychain.allKeys()
|
|
|
|
|
.filter { $0.hasPrefix(prefix) }
|
|
|
|
|
.forEach { try? keychain.remove($0) }
|
2020-04-13 19:15:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static func getPGPKeyPassphraseKey(keyID: String) -> String {
|
|
|
|
|
Globals.pgpKeyPassphrase + "-" + keyID
|
|
|
|
|
}
|
2019-06-25 22:44:19 +02:00
|
|
|
}
|