-
Notifications
You must be signed in to change notification settings - Fork 24
Ошибка очистки данных пользователя в keychain #29
Description
Возможно дубликат #26
В методе WMKeychainWrapper::removeObject(key: String) -> OSStatus происходит попытка удаления по переданному ключу.
static func removeObject(key: String) -> OSStatus{
let query: [String: Any] = [kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject]
return SecItemDelete(query as CFDictionary)
}
Тем не менее в методе WMKeychainWrapper::save(key: String, data: Data?) -> OSStatus
имена формируются с использованием префикса. Отсюда removeObject не удаляет объекты созданные через save. Это приводит в частности к ошибке очистки данных пользователя через destroyWithClearVisitorData сессии.
class func save(key: String, data: Data?) -> OSStatus {
let secureStringKey = webimKeyPrefix + key
let query = [
kSecClass as String : kSecClassGenericPassword as String,
kSecAttrAccount as String : secureStringKey,
kSecValueData as String : data as Any,
kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject] as [String : Any]
SecItemDelete(query as CFDictionary)
return SecItemAdd(query as CFDictionary, nil)
}