import Foundation import Security enum KeychainStore { private static let service = "io.github.transui.macos" private static let account = "remote-api-key" static func read() -> String { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, kSecAttrAccount as String: account, kSecReturnData as String: true, kSecMatchLimit as String: kSecMatchLimitOne, ] var item: CFTypeRef? guard SecItemCopyMatching(query as CFDictionary, &item) == errSecSuccess, let data = item as? Data else { return "" } return String(data: data, encoding: .utf8) ?? "" } static func write(_ value: String) { let identity: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, kSecAttrAccount as String: account, ] if value.isEmpty { SecItemDelete(identity as CFDictionary) return } let data = Data(value.utf8) let attributes = [kSecValueData as String: data] if SecItemUpdate(identity as CFDictionary, attributes as CFDictionary) == errSecItemNotFound { var item = identity item[kSecValueData as String] = data SecItemAdd(item as CFDictionary, nil) } } }