2013-07-23 78 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,证书通过其证书类型,颁发者和序列号来标识。钥匙串将拒绝接受多个具有这些属性的完全相同值的证书。

证书颁发机构不需要颁发两个具有相同序列号的证书,因此这个错误不太可能发生在您的用户身上。如果您自己生成证书,则还必须确保您不会意外重复使用连续出版物。