3

Mac OS X キーチェーンにクエリを実行して、セッション アイテムのみを取得するにはどうすればよいですか?

このようなすべてのアイテムを取得しようとすると:

[SSKeychain accountsForService:nil];

セッション アイテムとシステム アイテムは、キーの属性がまったく同じです: acct、cdat、class、crtr、labl、mdat、svce

キーチェーンをクエリして、セッション アイテムのみを取得したり、それらを区別したりするにはどうすればよいですか?

ご協力ありがとうございました !

4

2 に答える 2

0

次のようにセッション パスワードを照会できます (すべてのパスワードが必要な場合は に置き換えkSecMatchLimitOneますkSecMatchLimitAll。この場合attributesCFArrayRef型があります)。

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;
 }
于 2013-08-08T15:55:16.127 に答える