2013-07-23 63 views
0

我想知道在嘗試向iOS鑰匙串中添加證書身份時,SecItemAdd方法的狀態碼errSecDuplicateItem的確切含義。在iOS Keychain中保存證書身份時的重複項

閱讀iOS文檔時,它只是說這個狀態碼錶示該項目在鑰匙串中是重複的,但是確定身份是否重複的標準是什麼?發行人姓名?截止日期?都?

如果你讀了Mac OSX的文件,爲a similar方法的討論部分說以下內容:

如果證書已經被添加到指定的鑰匙圈, 該函數返回errSecDuplicateItem和不添加另一個拷貝 到鑰匙串。該功能查看證書數據,而不是 的證書對象,以確定證書是否爲 重複。它認爲兩個證書是重複的,如果它們的 具有相同的主鍵屬性。

我知道有一個區別,我試圖將證書標識保存在鑰匙串中,並且這個討論是針對保存證書的SecCertificateAddToKeychain方法的;但我相信有一個聯繫。

"primary keys attributes"是什麼意思?

我試過兩次添加相同的身份,當然我得到的是errSecDuplicateItem,但是我恐怕如果用戶想在某種程度上更新證書,我不會考慮用戶可能會收到錯誤。

有什麼想法?

在此先感謝

+0

從keychain值中刪除dublicate證書!錯誤發生,因爲你使用相同的身份保存另一個證書,嘗試更改身份名稱,然後安全地刪除舊的! – iphonemaclover

回答

0

據我所知,鑰匙串的主鍵屬性沒有記載。但是,根據message from Ken McLeod,證書通過其證書類型,頒發者和序列號來標識。鑰匙串將拒絕接受多個具有這些屬性的完全相同值的證書。

證書頒發機構不需要頒發兩個具有相同序列號的證書,因此這個錯誤不太可能發生在您的用戶身上。如果您自己生成證書,則還必須確保您不會意外重複使用連續出版物。