#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];
вы уже пробовали?