Как установить права на `com.apple.developer.driverkit.transport.usb`?

Я не уверен, как установить com.apple.developer.driverkit.transport.usbвведите мой dext-файл прав. Файл Info.plist уже содержитIOKitPersonalities словарь и чтение о com.apple.developer.driverkit.transport.usb словарь, похоже, он должен содержать записи с той же информацией, что и записи IOKitPersonalities.

В файле прав для проекта, который очень похож на то, что показано в видео WWDC о наборе драйверов, задается значение:

<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 ответ

Решение

Насколько я понимаю, вам необходимо составить список критериев соответствия идентификатора поставщика / устройства, то есть использовать один из этих трех шаблонов:

<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>

Чтобы было ясно, это означает, что право должно быть типа массив -> словари.

NB: Apple все еще не утвердила запрос прав моего клиента на DriverKit примерно через 4 недели, поэтому я все еще работаю с подписью разработки и отключенными частями SIP, но, по крайней мере, с указанным выше я не получаю никаких жалоб на недействительность com.apple.developer.driverkit.transport.usb права в системном журнале (что я очень часто делаю с <true/>).

Я предполагаю любой idVendor Перечисленные значения также должны быть встроены в ваш сертификат подписи Apple, когда речь идет о подписании распространения.

Другие вопросы по тегам