0

我试图弄清楚在尝试将证书身份添加到 iOS 钥匙串时errSecDuplicateItem该方法的状态代码到底意味着什么。SecItemAdd

阅读iOS文档,它只说这个状态码意味着该项目在钥匙串中重复,但是确定身份是否重复的标准是什么?发行人名称?截止日期?两个都?

如果您阅读 Mac OSX 文档,类似方法的讨论部分会说明以下内容:

如果证书已添加到指定的钥匙串,则该函数返回 errSecDuplicateItem 并且不会将另一个副本添加到钥匙串。该函数查看证书数据,而不是证书对象,以确定证书是否为副本。如果两个证书具有相同的主键属性,则认为它们是重复的。

我知道有区别,我正在尝试将证书身份保存在钥匙串中,此讨论是针对SecCertificateAddToKeychain保存证书的方法;但我相信有联系。

是什么意思"primary keys attributes"

我尝试两次添加相同的身份,当然我得到了errSecDuplicateItem,但我担心如果用户想以某种我不考虑的方式更新证书,他们可能会遇到错误。

有什么想法吗?

提前致谢

4

1 回答 1

0

据我所知,钥匙串的主键属性没有记录。但是,根据来自 Ken McLeod 的消息,证书由其证书类型、颁发者和序列号标识。钥匙串将拒绝接受多个具有这些属性值完全相同的证书。

证书颁发机构不得颁发具有相同序列号的两个证书,因此您的用户不太可能发生此错误。如果您自己生成证书,您还必须确保不会意外重复使用序列号。

于 2013-07-26T23:10:18.837 回答