如何解决macOS催化剂上的钥匙串项目的PersistentRef
背景
我正在尝试构建一个使用本地IKEv2实现连接到VPN的应用。该应用程序应为iOS构建,但也可以通过使用Catalyst平台在macOS上运行。
情况
在iOS / macOS中使用本地IKEv2实现连接到VPN时-要使用用户名和密码身份验证,应用必须将持久性钥匙串引用传递给包含密码的钥匙串项。 (Reference)
问题
在iOS上,它可以完美运行,但是在Catalyst平台上启动VPN连接时,VPN服务无法使用给定的持久引用来检索密码。控制台打印:
[] (null): Failed to copy content,SecKeychainItemCopyContent returned The contents of this item cannot be retrieved.
钥匙串项存储在钥匙串中,持久引用不是nil
,但是由于某种原因,操作系统的VPN服务无法检索密码。
如果我尝试使用相同的持久引用来检索密码-一切都会按预期进行,并且会检索到密码。
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,kSecAttrPersistentReference as String: persistentRef,kSecReturnData as String: true
]
var item: CFTypeRef?
let status = SecItemCopyMatching(query as CFDictionary,&item)
任何信息将不胜感激。将密码保存到钥匙串时,也许应该添加一些标志?尤其是在Catalyst平台上从钥匙串检索持久引用时,也许应该添加一些标志?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。