当试图向errSecDuplicateItem密钥链中添加证书标识时,我试图弄清楚SecItemAdd方法的状态代码iOS到底意味着什么。
阅读iOS文档时,它只说明此状态代码意味着该项在密钥链中重复,但是确定标识是否为重复的标准是什么?发行人的名字?到期日?两者都有?
如果您阅读Mac文档,类似的方法的讨论部分说明如下:
如果证书已经添加到指定的密钥链中,则函数将返回errSecDuplicateItem,而不会向密钥链添加另一个副本。该函数查看证书数据,而不是证书对象,以确定证书是否为副本。如果两个证书具有相同的主键属性,则认为它们是重复的。
我知道这是有区别的,我试图在密钥链中保存证书标识,本文讨论的是保存证书的SecCertificateAddToKeychain方法;但我相信有一个连接。
"primary keys attributes"的含义是什么
我尝试了两次添加相同的标识,当然我得到了errSecDuplicateItem,但是如果用户想要以我不考虑的方式更新证书,恐怕会出现错误。
有什么想法吗?
提前感谢
发布于 2013-07-26 23:10:18
据我所知,密钥链的主要键属性没有文档化。但是,根据肯恩McLeod发来的消息,证书由证书类型、颁发者和序列号标识。密钥链将拒绝接受对这些属性具有完全相同值的多个证书。
证书颁发机构必须不颁发两个序列号相同的证书,因此您的用户不太可能出现此错误。如果您自己正在生成证书,则还必须确保不会意外地重用序列化。
https://stackoverflow.com/questions/17816094
复制相似问题