Я пытаюсь получить атрибуты элемента keychain. Этот код должен искать все доступные атрибуты, а затем распечатывать их теги и содержимое.Получение атрибутов объектов связки ключей
Согласно 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' оставляет желать лучшего. –