我有一个用于 USB 设备驱动程序的 macOS 系统扩展。当我禁用 SIP 并使用我的代码签名身份(使用终端的“安全查找身份”从我的 Apple ID 生成)手动签名时,它可以工作 - 如此处所述:https ://github.com/knightsc/USBApp/issues/1
我可以激活和停用 dext,并在激活时将其与设备一起使用 - 我所做的和最终得到的示例如下:
和这里:
激活无代码 DEXT 后获取 OSSystemExtensionErrorCodeSignatureInvalid
我获得了 Apple 的授权,并按照他们概述的步骤创建了一个配置文件,然后下载并安装了它。然后,我按照 Apple 授权电子邮件中提到的步骤手动签署应用程序:https ://help.apple.com/xcode/mac/current/#/dev1bf96f17e
我重建了我的应用程序并停用了我的驱动程序的所有现有实例。当我尝试激活新驱动程序时,激活请求失败并出现权利错误:“Error Domain=OSSystemExtensionErrorDomain Code=8”,我知道这是权利/签名问题的指示。
使用 Apple 的配置文件签署我的应用程序和驱动程序的正确方法是什么?
我需要更新我的权利文件吗?这是我现有的文件:
应用程序
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.developer.system-extension.install</key>
<true/>
<key>com.apple.developer.system-extension.uninstall</key>
<true/>
</dict>
</plist>
右旋
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.driverkit</key>
<true/>
<key>com.apple.developer.driverkit.transport.usb</key>
<array>
<dict>
<key>idVendor</key>
<integer>LEGACY VID</integer>
<key>idProductArray</key>
<array>
<integer>PID1</integer>
<integer>PID2</integer>
<integer>PID3</integer>
<integer>PID4</integer>
<integer>PID5</integer>
</array>
</dict>
<dict>
<key>idVendor</key>
<integer>NEW VID</integer>
<key>idProductArray</key>
<array>
<integer>PID6</integer>
</array>
</dict>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
任何帮助,将不胜感激。
更新:
应用程序的 App ID 具有系统扩展能力,但没有额外的 DriverKit 能力。
dext 的 App ID 具有额外的 DriverKit 功能。
该应用程序的配置文件具有
- com.apple.developer.driverkit set true
- com.apple.application-identifier set to <Team ID>.<App Bundle Identifier>
- keychain-access-groups set to <Team ID>.*
- com.apple.developer.system-extension.install set to true
- com.apple.developer.team-identifier set to Team ID
Dext 的配置文件有
- com.apple.developer.driverkit set true
- com.apple.application-identifier set to <Team ID>.<Driver Bundle Identifier>
- keychain-access-groups set to <Team ID>.*
- com.apple.developer.team-identifier set to Team ID
更新 2:
这是我生成配置文件的过程:
注册一个新的配置文件 - 我在最底部的“分发”下选择“开发人员 ID”。这也是我生成的证书的用途。
生成配置文件 - 配置文件类型“Mac”,我选择一个 App ID。
选择证书 - 选择与分发模式兼容的证书。
附加权利 - 选择权利“Mac Dev ID 配置文件/Mac Direct Dist 配置文件的 DriverKit 和系统扩展模板”,这会导致“扩展权利”显示为“com.apple.developer.driverkit”设置为“true”
审查、命名和生成。- 供应配置文件名称 - 选择一个名称并生成,然后下载并安装。
更新 3:
我提交了一个支持请求,最后得到了回复“我们已联系 DriverKit 权利筛选器以更新您的权利模板以包含 USB 传输权利”希望这是进展!