Moje pytanie dotyczy breloczków w iOS (iPhone, iPad, ...). Myślę (ale nie jestem pewien), że implementacja breloków pod Mac OS X rodzi to samo pytanie z tą samą odpowiedzią.Co sprawia, że element z pękiem kluczy jest wyjątkowy (w iOS)?
System iOS udostępnia pięć typów (klas) artykułów z pękiem kluczy. Musisz wybrać jedną z tych pięciu wartości dla klucza kSecClass
do określenia typu:
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)
Po długim czasie czytania dokumentacji jabłka, blogi i forum-wpisy, dowiedziałem się, że brelok poz typu kSecClassGenericPassword
dostaje swoją wyjątkowość z atrybutów kSecAttrAccessGroup
,i kSecAttrService
.
Jeśli te trzy atrybuty w żądaniu 1 są takie same jak w żądaniu 2, otrzymasz ten sam ogólny brelok z hasłem hasła, niezależnie od innych atrybutów. Jeśli jeden (lub dwa lub wszystkie) z tych atrybutów zmienia swoją wartość, otrzymujesz różne przedmioty.
Ale pozycja kSecAttrService
jest dostępna tylko dla elementów typu kSecClassGenericPassword
, więc nie może być częścią "klucza niepowtarzalnego" elementu dowolnego innego typu i wydaje się, że nie ma dokumentacji, która jasno wskazywałaby, które atrybuty są unikatowe. określić element pęku kluczy.
Przykładowy kod w klasie "KeychainItemWrapper" z "GenericKeychain" używa atrybutu kSecAttrGeneric
, aby uczynić przedmiot wyjątkowym, ale jest to błąd. Dwa wpisy w tym przykładzie są przechowywane tylko jako dwa odrębne wpisy, ponieważ ich kSecAttrAccessGroup
jest inny (jeden ma zestaw grup dostępu, a drugi pozwala na uwolnienie). Jeśli spróbujesz dodać drugie hasło bez grupy dostępu, używając urządzenia Apple KeychainItemWrapper
, to się nie powiedzie.
Więc, proszę odpowiedzieć na moje pytania:
- Czy to prawda, że kombinacja
kSecAttrAccessGroup
,kSecAttrAccount
ikSecAttrService
jest „unikalny klucz” z pęku kluczy elementu, którego kSecClass jestkSecClassGenericPassword
? - Jakie atrybuty powodują, że element keychain jest unikalny, jeśli jego
kSecClass
nie jestkSecClassGenericPassword
?
Tutaj znajduje się [wpis na blogu] (http://useyourloaf.com/blog/2010/04/28/keychain-duplicate-item-when-adding-password.html). – bobobobo