Чистка iPhone брелок - PullRequest
       10

Чистка iPhone брелок

4 голосов
/ 27 мая 2010

Есть ли способ очистки цепочки для ключей для моего приложения для iphone? Либо команда очистки, либо список всех ключей, чтобы я мог удалить их сам.

1 Ответ

9 голосов
/ 30 декабря 2010

Нет такой вещи как команда очистки.
В любом случае, поскольку цепочка для ключей, к которой имеет доступ ваше приложение, предназначена только для вашего приложения, вы можете легко отслеживать, что вы в ней написали, и удалить ее.

Вы можете реализовать свой собственный метод очистки, который будет просто удалять один за другим все возможные типы данных, которые вы можете сохранить в связке ключей. Ниже описан порядок очистки всех записей GenericPassword:

- (BOOL)deleteKeychainData
{
    /* delete custom data */
    NSMutableDictionary *searchData = [NSMutableDictionary new];
    [searchData setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
    [searchData setObject:kTagKeychainService forKey:(id)kSecAttrService];

    OSStatus statusData = SecItemDelete((CFDictionaryRef)searchData);
    [searchData release];

    CHECK_CONDITION1(statusData == errSecSuccess
                     || statusData == errSecItemNotFound,
                     @"Error while deleting keychain data, OSStatus == %d", statusData);

    /* delete assymetric keys*/
    return [self deleteKeyPair];
}

Итак, вам нужно вызвать этот метод для всех возможных kSecClass значений.
ПРИМЕЧАНИЕ , что для разных типов данных необходимо установить разные флаги словаря.

привет

...