Keychain.swift 898 B

123456789101112131415161718192021222324
  1. import Foundation
  2. enum KeychainError: Error {
  3. case darwinError(OSStatus)
  4. case codingError(Error)
  5. }
  6. protocol Keychain: KeyValueStorage {
  7. func allKeys() -> Set<String>
  8. func hasValue(forKey key: String) -> Result<Bool, KeychainError>
  9. func accessibilityOfKey(_ key: String) -> Result<KeychainItemAccessibility, KeychainError>
  10. func getData(forKey key: String) -> Result<Data?, KeychainError>
  11. func getValue<T: Decodable>(_ type: T.Type, forKey key: String) -> Result<T?, KeychainError>
  12. @discardableResult func setData(_ value: Data, forKey key: String) -> Result<Void, KeychainError>
  13. @discardableResult func setValue<T: Encodable>(_ maybeValue: T?, forKey key: String) -> Result<Void, KeychainError>
  14. func removeObject(forKey key: String) -> Result<Void, KeychainError>
  15. func removeAllKeys() -> Result<Void, KeychainError>
  16. static func wipeKeychain()
  17. }