Files
OpenVPNAdapter/OpenVPN Tunnel Provider/KeychainAccess+Reference.swift
T
2017-03-07 22:20:50 +03:00

46 lines
1.1 KiB
Swift

//
// KeychainAccess+Reference.swift
// OpenVPN iOS Client
//
// Created by Sergey Abramchuk on 07.03.17.
//
//
import Foundation
import KeychainAccess
extension Keychain {
public func get(ref: Data) throws -> String? {
guard let data = try getData(ref: ref) else {
return nil
}
return String(data: data, encoding: .utf8)
}
public func getData(ref: Data) throws -> Data? {
let query: [String: Any] = [
String(kSecClass): itemClass.rawValue,
String(kSecReturnData): kCFBooleanTrue,
String(kSecValuePersistentRef): ref as CFData
]
var result: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &result)
switch status {
case errSecSuccess:
guard let data = result as? Data else {
throw Status.unexpectedError
}
return data
case errSecItemNotFound:
return nil
default:
throw Status(status: status)
}
}
}