Files
andros f3c62026b3 Rename app to Dotdenote
Updates project name, bundle ID, display name, Xcode project, entry point struct, and Keychain service identifier.
2026-05-26 11:02:18 +02:00

37 lines
1.3 KiB
Swift

import Foundation
import Security
enum KeychainStore {
private static let service = "dev.andros.dotdenote"
static func set(_ value: String?, for key: String) {
let q: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: service,
kSecAttrAccount as String: key
]
SecItemDelete(q as CFDictionary)
guard let value, let data = value.data(using: .utf8) else { return }
var attrs = q
attrs[kSecValueData as String] = data
attrs[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlock
SecItemAdd(attrs as CFDictionary, nil)
}
static func get(_ key: String) -> String? {
let q: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: service,
kSecAttrAccount as String: key,
kSecReturnData as String: true,
kSecMatchLimit as String: kSecMatchLimitOne
]
var result: AnyObject?
let status = SecItemCopyMatching(q as CFDictionary, &result)
guard status == errSecSuccess,
let data = result as? Data,
let s = String(data: data, encoding: .utf8) else { return nil }
return s
}
}