GTA*_*E86 5 macos code-signing-entitlements macos-catalina macos-system-extension driverkit
我有一个用于 USB 设备驱动程序的 macOS 系统扩展。当我禁用 SIP 并使用我的 cosign 身份(使用终端的“安全查找身份”从我的 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>
Run Code Online (Sandbox Code Playgroud)
右旋
<?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>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
更新:
应用程序的 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
更新 2:
这是我生成配置文件的过程:
注册新的配置文件 - 我在最底部的“分发”下选择“开发人员 ID”。这也是我生成的证书的用途。
生成供应配置文件 - 配置文件类型“Mac”,我选择一个 App ID。
选择证书 - 选择与分发模式兼容的证书。
附加权利 - 选择权利“DriverKit and System Extension Template for Mac Dev ID profile/Mac Direct Dist Profile”这会导致“扩展权利”显示为“com.apple.developer.driverkit”设置为“true”
查看、命名和生成。- 配置文件名称 - 选择一个名称并生成,然后下载并安装。
更新 3:
我提交了支持请求,最后得到了回复“我们已联系 DriverKit 权利筛选器更新您的权利模板以包含 USB 传输权利”希望这是进展!
Xcode 可以自行下载配置文件,但我另外建议将它们下载到本地文件中。这是因为您可以在配置配置文件上使用“QuickLook”来检查它们是否包含您期望的权利!在 Finder 中选择文件并按空格键。我强烈建议您在进行任何其他故障排除之前检查所有配置配置文件是否与相关目标的权利相匹配。权利文件中列出的每项权利(以 开头的权利除外com.apple.security.)都必须存在于配置文件中,否则将不起作用。
嵌入您的 dext 的应用程序需要包含以下权利:
\n<key>com.apple.developer.system-extension.install</key>\n<true/>\nRun Code Online (Sandbox Code Playgroud)\n我被告知(在 WWDC 实验室预约中)\xc2\xa0您还应该包含com.apple.application-identifier权利并将其设置为您在上面生成的应用程序 ID,这是 10 个字符的前缀,后跟一个点,然后是捆绑包ID。(前缀通常是您的团队ID)
dext 将需要基本 DriverKit 权利,以及您的驱动程序使用的任何其他 driverkit 子系统的权利等。dext 也是沙箱化的。例如
\n<key>com.apple.developer.driverkit</key>\n<true/>\n<key>com.apple.developer.driverkit.transport.usb</key>\n<array>\n    <dict>\n        <key>idVendor</key>\n        <integer>1452</integer>\n    </dict>\n</array>\n<key>com.apple.security.app-sandbox</key>\n<true/>\nRun Code Online (Sandbox Code Playgroud)\n同样,您显然com.apple.application-identifier也应该包括在内。
由于问题现已更新为权利文件和配置文件的具体内容,我可以发现以下问题:
\n
com.apple.developer.system-extension.uninstall权利的原始来源是什么,但它似乎出现在网络上的很多地方。但这实际上似乎没有必要,而且苹果也不同意。我不确定为什么您的应用程序启动时包含它,您是否已amfi_get_out_of_my_way=1在您的应用程序中启用了它boot-args?如果修复所有问题后仍然遇到问题,我建议尝试在错误发生时捕获一些更详细的日志记录。以下命令行可能会有所帮助:
\nlog stream --info --predicate=\'process=="taskgated-helper" || process=="kernel" || process=="trustd" || process=="syspolicyd" || process=="amfid" || process=="sysextd"\'\nRun Code Online (Sandbox Code Playgroud)\n请随意使用您获得的任何看起来有用的诊断信息来更新问题,我将尽力帮助找出问题所在。
\n以下内容也可能有帮助:
\n|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1418 次  |  
        
|   最近记录:  |