备份恢复后 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的主要内容,如果未能解决你的问题,请参考以下文章

MySQL通过物理备份恢复后,配置主从复制报错案例

mysql 开发进阶篇系列 47 xtrabackup (完全备份恢复,恢复后重启失败总结)

Redis数据库备份、迁移、恢复实践

日常工作--测试环境备份恢复后简单处理

如何备份系统,如何恢复系统。

Oracle VM VirtualBox虚拟机怎么用快照功能,备份后怎么恢复?