Как установить права на `com.apple.developer.driverkit.transport.usb`? - PullRequest
2 голосов
/ 06 мая 2020

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

В файле прав для проекта, который очень похож на то, что показано в WWD C видео о комплекте драйверов , устанавливает следующее:

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

3 голосов
/ 06 мая 2020

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

<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/>).

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

...