Что делает элемент цепочки для ключей уникальным (в iOS)?

Мой вопрос касается брелков в iOS (iPhone, iPad, ...). Я думаю (но не уверен), что реализация цепочек для ключей в Mac OS X поднимает тот же вопрос с тем же ответом.

iOS предоставляет пять типов (классов) элементов цепочки для ключей. Вы должны выбрать одно из этих пяти значений для ключаkSecClass определить тип:

kSecClassGenericPassword  used to store a generic password
kSecClassInternetPassword used to store an internet password
kSecClassCertificate      used to store a certificate
kSecClassKey              used to store a kryptographic key
kSecClassIdentity         used to store an identity (certificate + private key)

После долгого чтения документации яблок, блогов и записей на форумах, я обнаружил, что тип цепочки для ключей типаkSecClassGenericPassword получает свою уникальность от атрибутовkSecAttrAccessGroup, kSecAttrAccount а такжеkSecAttrService.

Если эти три атрибута в запросе 1 такие же, как и в запросе 2, вы получаете один и тот же элемент связки ключей общего пароля независимо от любых других атрибутов. Если один (или два, или все) из этого атрибута изменяет свое значение, то вы получаете разные предметы.

НоkSecAttrService доступно только для предметов типаkSecClassGenericPasswordтаким образом, он не может быть частью «уникального ключа»; элемента любого другого типа, и, похоже, нет документации, которая бы четко указывала, какие атрибуты однозначно определяют элемент цепочки для ключей.

Пример кода в классе & quot; KeychainItemWrapper & quot; из "GenericKeychain" использует атрибутkSecAttrGeneric сделать предмет уникальным, но это ошибка. Две записи только в этом примере хранятся как две разные записи, потому что ихkSecAttrAccessGroup отличается (у одного установлена группа доступа, у другого она свободна). Если вы попытаетесь добавить второй пароль без группы доступа, используя AppleKeychainItemWrapper, ты потерпишь неудачу.

So, please, answer my questions:

Is it true, that the combination of kSecAttrAccessGroup, kSecAttrAccount and kSecAttrService is the "unique key" of a keychain item whose kSecClass is kSecClassGenericPassword? Which attributes makes a keychain item unique if its kSecClass is not kSecClassGenericPassword?

Ответы на вопрос(3)

Ваш ответ на вопрос