Sorumum, iOS'taki (iPhone, iPad, ...) anahtarlıklar ile ilgilidir. Bence (ama emin değilim) Mac OS X'in altındaki anahtarlıkların uygulanmasının aynı soruyu aynı soruyla gündeme getirdiğini düşünüyorum.Anahtarlık öğesini benzersiz yapan (iOS'ta) nedir?
iOS, beş tür (sınıf) anahtarlık öğesi sağlar. Sen türünü belirlemek için anahtar kSecClass
için o beş değerden birini seçti gerekir: elma belgelerine, bloglar ve forum-girişlerini okuma uzun zaman sonra
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)
, ben tip kSecClassGenericPassword
bir anahtarlık öğesi alır öğrendim Öznitelikler kSecAttrAccessGroup
, kSecAttrAccount
ve kSecAttrService
'dan farklıdır.
İstek 1'deki bu üç öznitelik, istek 2'dekiyle aynıysa, başka özniteliklere bakılmaksızın, aynı genel parola anahtarlık öğesini alırsınız. Bu özelliklerden biri (veya ikisi veya tamamı) değerini değiştirirse, farklı öğeler alırsınız.
Ancak kSecAttrService
yalnızca kSecClassGenericPassword
türündeki öğeler için kullanılabilir, bu nedenle başka türdeki bir öğenin "benzersiz anahtarının" bir parçası olamaz ve benzersiz olarak hangi nitelikleri açıkça işaret eden bir belge yok gibi görünüyor bir anahtarlık öğesi belirler.
"GenericKeychain" sınıfındaki "KeychainItemWrapper" sınıfındaki örnek kod, bir öğeyi benzersiz yapmak için kSecAttrGeneric
özniteliğini kullanır, ancak bu bir hatadır. Bu örnekte yer alan iki giriş yalnızca iki ayrı giriş olarak saklanır, çünkü kSecAttrAccessGroup
onlarınki farklıdır (biri erişim grubu kümesine sahiptir, diğeri serbest bırakır). Apple'ın KeychainItemWrapper
'u kullanarak erişim grubu olmayan 2. şifreyi eklemeyi denerseniz, başarısız olursunuz.
Yani, benim sorulara cevap verin:
- o
kSecAttrAccessGroup
,kSecAttrAccount
vekSecAttrService
kombinasyonu kSecClasskSecClassGenericPassword
bir anahtarlık öğenin "eşsiz anahtar" olduğu doğru mu? kSecClass
kSecClassGenericPassword
değilse, hangi özellikler anahtarlık öğesini benzersiz kılar? aşağıdaki gibi
Bu konuda bir [blog girişi] var (http://useyourloaf.com/blog/2010/04/28/keychain-duplicate-item-when-adding-password.html). – bobobobo