Удалить все ключи из цепочки для ключей - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно удалить все ключи, хранящиеся в цепочке для ключей. Проблема в том, что они не являются статическими строками (я создаю их, используя «имя пользователя + статическая строка»), и мне нужно реализовать что-то вроде опции приложения сброса.

На момент реализации приложения (пару лет назад) я использовал библиотеку FXKeychain для доступа к цепочке для ключей, но, похоже, такой опции не было.

Есть ли другой способ сделать это?

Я работаю с Objective-C.

Я нашел этот код в поиске:

NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                              (__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes,
                              (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit,
                              nil];
NSArray *secItemClasses = [NSArray arrayWithObjects:
                           (__bridge id)kSecClassGenericPassword,
                           (__bridge id)kSecClassInternetPassword,
                           (__bridge id)kSecClassCertificate,
                           (__bridge id)kSecClassKey,
                           (__bridge id)kSecClassIdentity,
                           nil];

for (id secItemClass in secItemClasses) {
    [query setObject:secItemClass forKey:(__bridge id)kSecClass];

    CFTypeRef result = NULL;
    SecItemCopyMatching((__bridge CFDictionaryRef)query, &result);
    NSLog(@"%@", (__bridge id)result);
    if (result != NULL) CFRelease(result);
}

Но я не совсем понимаю это и думаю, что это не работает (может быть, это связано с библиотекой, которую я использовал?)

1 Ответ

0 голосов
/ 25 марта 2019

Чтобы удалить элементы цепочки для ключей, добавленные из вашего приложения, это должно работать нормально: KeychainItemWrapper * keychain = [[KeychainItemWrapper alloc] initWithIdentifier: [[NSBundle mainBundle] bundleIdentifier] accessGroup: nil];

[keychain resetKeychainItem];

вы уже пробовали?

...