备份恢复后,SecItemCopyMatching返回-26276

Ram*_*mis 5 security objective-c keychain ios swift

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

按"使用受保护的密钥"返回-26276(AAPLKeychainTestsViewController.m @ 288函数 - > SecItemCopyMatching)

通过按"删除受保护的密钥"重新加速-4(AAPLKeychainTestsViewController.m @ 326功能 - > SecItemDelete)

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


我在这里找到:errSecInternal = - 26276,/*安全框架中发生内部错误.*/

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

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

我确实将这个问题发布给了Apple团队,但是超过1个月没有答案.

dga*_*ood 1

我会将问题重新发布到安全列表上。也就是说,根据我遥远的记忆,这些密钥可能标有 ACL,阻止它们备份,因此您遇到的相当于钥匙串中的悬空指针。如果您重新添加具有匹配名称或其他内容的项目,它将替换该项目,并且从那时起它应该可以工作。

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