Keychain.swift 906 B

1234567891011121314151617181920212223242526
  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
  13. func setData(_ value: Data, forKey key: String) -> Result<Void, KeychainError>
  14. @discardableResult
  15. func setValue<T: Encodable>(_ maybeValue: T?, forKey key: String) -> Result<Void, KeychainError>
  16. func removeObject(forKey key: String) -> Result<Void, KeychainError>
  17. func removeAllKeys() -> Result<Void, KeychainError>
  18. static func wipeKeychain()
  19. }