Skip to content

Ошибка очистки данных пользователя в keychain #29

@s-potam

Description

@s-potam

Возможно дубликат #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)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions