如何设置“ com.apple.developer.driverkit.transport.usb”权利?

时间:2020-05-06 11:35:59

标签: usb iokit entitlements macos-system-extension driverkit

我不确定如何在我的dext授权文件中设置com.apple.developer.driverkit.transport.usb键。 Info.plist文件已经包含IOKitPersonalities字典,并且在阅读com.apple.developer.driverkit.transport.usb字典后,看起来它应该包含与IOKitPersonalities条目具有相同信息的条目。

entitlements file中显示的项目非常相似的项目WWDC video about driver kit设置为:

<key>com.apple.developer.driverkit.transport.usb</key>
<true/>

当我将其设置为<true/>时,系统扩展名开始。在从应用程序中看到日志行之前,我确实看到过这样的行:

...
2020-05-06 12:23:19.229709+0200 0x51ac2    Default     0x0                  0      0    kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)

这种权利应该只反映IOKitPersonalities词典中的内容吗?

在钥匙完全拔出的情况下,我得到:

...
2020-05-06 12:23:19.229709+0200 0x51ac2    Default     0x0                  0      0    kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
2020-05-06 12:23:19.253517+0200 0x51ac2    Default     0x0                  0      0    kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aae)::exit(Entitlements check failed)

..所以我猜钥匙必须在那儿。

我正在使用log stream --source | grep MyUserUSBInterfaceDriver查看与该应用相关的日志行

1 个答案:

答案 0 :(得分:3)

我的理解是,您需要有效地列出您的供应商/设备ID匹配条件-即,使用以下三种模式之一:

<key>com.apple.developer.driverkit.transport.usb</key>
<array>
    <dict>
        <key>idProduct</key>
        <integer>123</integer>
        <key>idVendor</key>
        <integer>1234</integer>
    </dict>
    <dict>
        <key>idProduct</key>
        <integer>1024</integer>
        <key>idProductMask</key>
        <integer>65504</integer>
        <key>idVendor</key>
        <integer>1234</integer>
    </dict>
    <dict>
        <key>idProductArray</key>
        <array>
            <integer>12345</integer>
            <integer>23456</integer>
            <integer>34567</integer>
        </array>
        <key>idVendor</key>
        <integer>1234</integer>
    </dict>
</array>

要清楚,这意味着权利必须为 array -> dictionaries 类型。

注意:Apple仍未在约4周后批准客户的DriverKit权利要求,因此我仍在开发签名和禁用SIP的情况下进行操作,但至少在上述情况下,我没有收到任何投诉有关系统日志中无效的com.apple.developer.driverkit.transport.usb权利的问题(我对<true/>所做的工作非常多)。

我假设列出的任何idVendor值也必须由Apple嵌入到您的签名证书中,以进行分发签名。

相关问题