Удалить все ключи из цепочки для ключей

#ios #objective-c #keychain

#iOS #objective-c #связка ключей

Вопрос:

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

На момент внедрения приложения (пару лет назад) Я использовал библиотеку под названием 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, amp;result);
    NSLog(@"%@", (__bridge id)result);
    if (result != NULL) CFRelease(result);
}
  

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

Ответ №1:

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

[keychain resetKeychainItem];

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