3

我正在为已经发布的 mac 应用程序开发应用程序扩展。我需要在应用程序和扩展程序之间共享钥匙串项。在阅读项目方面,我能够成功地在应用程序和扩展程序之间“共享”钥匙串项目。问题是当我尝试从应用程序中删除钥匙串项目时。

应用程序和扩展程序都在权利中指定了 keychain-access-group,并在调用 SecItemCopyMatching、SecItemAdd 和 SecItemDelete 时使用应用程序前缀指定访问组。

基本上,钥匙串项目是从应用程序中创建和删除的。该扩展仅通过 SecItemCopyMatching 读取钥匙串项。问题是扩展读取的任何项目以后都不能被应用程序删除,因为 SecItemDelete 失败并出现以下错误。

SecItemDelete returns -25244, which is "Invalid attempt to change the owner of this item"

我找不到任何有关此错误含义的文档,或者为什么调用 SecItemCopyMatching 会将钥匙串项的“所有者”更改为扩展名。

仅供参考,我正在使用 UIKeyChainStore 与钥匙串进行交互,但目前我不认为这是问题的原因。

4

0 回答 0