Próbuję uzyskać atrybuty elementu z pęku kluczy. Ten kod powinien wyszukać wszystkie dostępne atrybuty, a następnie wydrukować ich tagi i zawartość.Uzyskiwanie atrybutów przedmiotów z pęku kluczy
Powinienem zobaczyć znaczniki, takie jak "cdat", ale zamiast tego po prostu wyglądają jak indeks (tj. Pierwszy znacznik to 0, następny to 1). To czyni go całkiem bezużytecznym, ponieważ nie mogę stwierdzić, który atrybut jest tym, którego szukam.
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);
Dzięki za wyjaśnienie, jak obsługiwać ogólne klasy przedmiotów. Dokumentacja dla 'SecKeychainAttributeInfoForItemID' pozostawia wiele do życzenia. –