objective-c - 区分 Mac OS X 钥匙串(keychain)中的 session 和系统项目

标签 objective-c macos cocoa keychain sskeychain

如何查询 Mac OS X 钥匙串(keychain)以仅检索 session 项目?

当我尝试获取这样的所有项目时:

[SSKeychain accountsForService:nil];

session 项和系统项具有完全相同的键属性:acct、cdat、class、crtr、labl、mdat、svce

如何查询钥匙串(keychain)以仅获取 session 项或区分它们?

感谢您的帮助!

最佳答案

您可以像这样查询 session 密码(如果需要所有密码,请将 kSecMatchLimitOne 替换为 kSecMatchLimitAllattributes 将具有 在本例中为 CFArrayRef 类型):

NSDictionary* passwordQuery = @{
    (__bridge id)kSecAttrService : sessionServiceName,
    (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
    (__bridge id)kSecReturnAttributes: (__bridge id)kCFBooleanTrue,
    (__bridge id)kSecReturnData: (__bridge id)kCFBooleanTrue,
    (__bridge id)kSecMatchLimit : (__bridge id)kSecMatchLimitOne
};

CFTypeRef attributes = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)passwordQuery, &attributes);
if (status != 0){
    return nil;
 }

关于objective-c - 区分 Mac OS X 钥匙串(keychain)中的 session 和系统项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18076785/

相关文章:

objective-c - Mac OS X 程序提供 EXC_BAD_ACCESS

ios - 使用两个以上的参数在 Objective-C 中执行动态类方法调用

ios - 使 block 与屏幕边界碰撞

macos - 我如何知道我的 OS X 应用程序使用哪个 Gatekeeper 签名?

java - 如何在 Ant 中使用带有 loadproperties 的 Base64 编码?

c# - 是否可以从 Visual Studio 编译 C# 程序以在 Mac 上运行?

cocoa - 如何让我的(非基于文档的)应用程序响应打开文件 :withApplication:?

ios - 在IOS中创建两个并发队列有用吗?

ios - 我可以使用 XCTest 测试应用程序中某一部分的性能吗?

macos - 捆绑到 Cocoa 应用程序中的 Git 无法在 bundle 中找到帮助程序