备份恢复后,SecItemCopyMatching返回-26276

时间:2016-02-19 09:07:34

标签: ios objective-c swift security keychain

  1. KeychainTouchID app使用Xcode安装并执行。通过按“添加受保护密钥”生成密钥,按“使用受保护密钥”即可使用密钥。密钥是使用Secure Enclave生成的。
  2. 计算机上的加密iPhone备份是使用iTunes制作的。 已删除的所有内容和设置(设置 - >常规 - >重置 - >删除所有内容和设置)。
  3. 加密的iPhone备份已恢复到同一iPhone。
  4. 需要重新安装KeychainTouchID app,因为它是使用Xcode进行的。
  5. KeychainTouchID应用程序已执行。
  6. 那之后:
  7. 按“使用受保护的密钥”返回-26276( AAPLKeychainTestsViewController.m @ 288功能 - > SecItemCopyMatching

    按“删除受保护的密钥”重新加载-4( AAPLKeychainTestsViewController.m @ 326功能 - > SecItemDelete

    按“添加受保护的密钥”返回成功,但无法删除和使用。

    我发现here:errSecInternal = - 26276 ,/ *安全框架中发生内部错误。 * /

    所以在这种情况下我无法访问新添加的密钥。

    • 为什么在备份恢复后SecItemCopyMatching返回-26276?
    • 为什么无法删除此密钥,但可以添加?
    • Dose sombody有这种经历吗?
    • 解决这个问题的方法是什么?

    我确实已将此问题发布给Apple团队,但超过1个月没有答案。

1 个答案:

答案 0 :(得分:1)

我会在安全列表上重新发布这个问题。也就是说,从我远程的记忆中,这些键很可能标有ACL,阻止它们被备份,所以你遇到了等同于钥匙串中的悬空指针。如果您重新添加具有匹配名称或其他内容的项目,它将替换该项目,并且应该从该点开始工作。

但是,如果在重新添加项目后删除它并使用它会失败,那么会发生一些非常奇怪的事情,在这种情况下我会提交一个错误。他们可能会要求您安装配置文件,以便进行调试,重现错误并发送日志。