有没有办法可以为我的iPhone应用程序清除钥匙串?清除命令或所有键列表,以便我自己删除它们。
答案 0 :(得分:9)
没有清除命令这样的东西 无论如何,由于您的应用程序可以访问的密钥链专用于您的应用程序,因此您可以轻松地跟踪您在其中写入的内容并将其删除。
您可以实现自己的清除方法,只需逐个删除可以保存在钥匙串中的所有可能的数据类型。以下是我清除所有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 值调用此方法。
注意,不同的数据类型需要设置不同的字典标记。
问候