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