备份恢复后 SecItemCopyMatching 返回 -26276
Posted
技术标签:
【中文标题】备份恢复后 SecItemCopyMatching 返回 -26276【英文标题】:After backup restore SecItemCopyMatching returns -26276 【发布时间】:2016-02-19 09:07:34 【问题描述】:-
KeychainTouchID app 是使用 Xcode 安装并执行的。该密钥是通过按“Add protected key”生成的,并通过按“Use protected key”来使用。密钥是使用 Secure Enclave 生成的。
计算机上的加密 iPhone 备份是使用 iTunes 制作的。
删除的所有内容和设置(设置 -> 常规 -> 重置 -> 删除所有内容和设置)。
加密的 iPhone 备份已恢复到同一部 iPhone。
需要重新安装 KeychainTouchID 应用程序,因为它是使用 Xcode 安装的。
KeychainTouchID 应用程序已执行。
那么之后:
按“使用受保护的密钥”返回 -26276(AAPLKeychainTestsViewController.m @ 288 函数 -> SecItemCopyMatching)
按“删除受保护的密钥”返回 -4 (AAPLKeychainTestsViewController.m @ 326 函数 -> SecItemDelete)
按“添加保护键”返回成功,但不能删除和使用。
我发现here: errSecInternal = -26276, /* 安全框架发生内部错误。 */
所以在这种情况下,我无法访问新添加的密钥。
为什么备份恢复后SecItemCopyMatching返回-26276? 为什么不能删除这个键,但可以添加? 有人有过这种经历吗? 有什么办法可以解决这个问题?我确实将此问题发布给 Apple 团队,但超过 1 个月没有答复。
【问题讨论】:
【参考方案1】:我会在安全列表上重新发布问题。也就是说,在我遥远的记忆中,这些键可能标有 ACL 以防止它们被备份,因此您在钥匙串中遇到了相当于悬空指针的情况。如果您重新添加具有匹配名称或其他名称的项目,它将替换该项目,并且它应该从那时起工作。
但是,如果在重新添加项目后删除它并使用它失败,就会发生一些非常奇怪的事情,在这种情况下我会提交一个错误。他们可能会要求您安装一个配置文件,以启用大量调试、重现错误并向他们发送日志。
【讨论】:
我很久以前确实在苹果的bug系统中记录过bug,但是没有任何消息 你也可以看看这个答案:***.com/questions/11670647/…以上是关于备份恢复后 SecItemCopyMatching 返回 -26276的主要内容,如果未能解决你的问题,请参考以下文章