在尝试将证书标识添加到iOS钥匙串时,我试图找出errSecDuplicateItem
方法的状态代码SecItemAdd
的确切含义。
阅读iOS文档,它只说这个状态代码意味着该项目在钥匙串中是重复的,但确定身份是否重复的标准是什么?发行人名称?截止日期?都?
如果您阅读Mac OSX文档,a similar方法的讨论部分说明如下:
如果证书已添加到指定的钥匙串, 该函数返回errSecDuplicateItem并且不添加另一个副本 到钥匙串。该函数查看证书数据,而不是 证书对象,以确定证书是否是 重复。它认为两个证书是重复的,如果有的话 相同的主键属性。
我知道存在差异,我正在尝试将证书身份保存在钥匙串中,本讨论针对保存证书的SecCertificateAddToKeychain
方法;但我相信有联系。
"primary keys attributes"
的含义是什么?
我尝试了两次添加相同的身份,当然我得到了errSecDuplicateItem
,但我担心如果用户想要更新证书,我可能会收到错误,我不会考虑。
有什么想法吗?
提前致谢
答案 0 :(得分:0)
据我所知,钥匙串的主要关键属性没有记录。但是,根据message from Ken McLeod,证书由其证书类型,颁发者和序列号标识。钥匙串将拒绝接受多个具有这些属性的完全相同值的证书。
证书颁发机构不得发布具有相同序列号的两个证书,因此您的用户不太可能发生此错误。如果您自己生成证书,还必须确保不会意外地重复使用序列号。