我試圖獲取鑰匙串項目的屬性。這個代碼應該查找所有可用的屬性,然後打印出他們的標籤和內容。獲取鑰匙串項目的屬性
根據the docs我應該看到'cdat'這樣的標籤,但是它們看起來像一個索引(即第一個標籤爲0,下一個爲1)。這使得它非常無用,因爲我無法確定哪個屬性是我正在尋找的屬性。
SecItemClass itemClass;
SecKeychainItemCopyAttributesAndData(itemRef, NULL, &itemClass, NULL, NULL, NULL);
SecKeychainRef keychainRef;
SecKeychainItemCopyKeychain(itemRef, &keychainRef);
SecKeychainAttributeInfo *attrInfo;
SecKeychainAttributeInfoForItemID(keychainRef, itemClass, &attrInfo);
SecKeychainAttributeList *attributes;
SecKeychainItemCopyAttributesAndData(itemRef, attrInfo, NULL, &attributes, 0, NULL);
for (int i = 0; i < attributes->count; i ++)
{
SecKeychainAttribute attr = attributes->attr[i];
NSLog(@"%08x %@", attr.tag, [NSData dataWithBytes:attr.data length:attr.length]);
}
SecKeychainFreeAttributeInfo(attrInfo);
SecKeychainItemFreeAttributesAndData(attributes, NULL);
CFRelease(itemRef);
CFRelease(keychainRef);
感謝您解釋如何處理通用項目類。 `SecKeychainAttributeInfoForItemID`的文檔有很多不足之處。 – 2011-06-14 12:46:35