yan*_*kun 0 macos cocoa objective-c keychain core-foundation
我正在编写一个用于同步密码的小工具。我为此使用自己的KeyChain。在保存之前,我想清除此KeyChain。但是,似乎我不明白如何使用SecItemDelete函数。
NSMutableDictionary *deleteQuery = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
kSecClassGenericPassword, kSecClass,
kSecMatchLimit, kSecMatchLimitAll, nil];
OSStatus status = SecItemDelete((__bridge CFDictionaryRef)deleteQuery);
NSLog(@"%@", SecCopyErrorMessageString(status, NULL));
Run Code Online (Sandbox Code Playgroud)
到目前为止,这就是我写的内容,但是不幸的是,我的项目(称为Root.Foo和Root.Bar)仍保留在KeyChain中。我也想知道,该函数如何知道应该搜索哪个KeyChain?我喜欢的大多数示例都是关于iOS的,默认情况下每个应用程序都有自己的KeyChain。
谢谢你的帮助 :)
解决了:
我错过了传递一系列KeyChains寻找的机会!似乎在iOS上,始终使用应用程序的默认KeyChain,但在Mac OS上,您需要将KeyChain指定为包含SecKeychainRefs的数组:
NSMutableDictionary *q = [NSMutableDictionary dictionary];
[q setObject:kSecClassGenericPassword forKey:kSecClass];
[q setObject:[NSArray arrayWithObject:(__bridge id)keyChain] forKey:kSecMatchSearchList];
[q setObject:kSecMatchLimitAll forKey:kSecMatchLimit];
SecItemDelete((__bridge CFDictionaryRef)q);
Run Code Online (Sandbox Code Playgroud)
这段代码运行完美。
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |