Как получить право «com.apple.developer.driverkit.userclient-access»?

#macos #code-signing #entitlements #driverkit

#macos #подписание кода #права #набор драйверов #driverkit

Вопрос:

Мы запросили все права, связанные с DriverKit. То, что мы получили, приведено ниже:

  • com.apple.developer.driverkit
  • com.apple.developer.driverkit.transport.hid
  • com.apple.developer.driverkit.family.hid.device
  • com.apple.developer.driverkit.family.hid.eventservice
  • com.apple.developer.driverkit.family.hid.virtual.device

Мы только что узнали, что если мы хотим распространять приложение, способное взаимодействовать с DriverKit, требуется право com.apple.developer.driverkit.userclient-access . Однако мы не знаем, как создать профиль предоставления, содержащий это право. Мы что-то упускаем при отправке прав запроса в Apple? Или это право готово для определенного элемента, когда мы выбираем соответствующие возможности?

Ответ №1:

Мы что-то упускаем при отправке прав запроса в Apple?

Форма не запрашивает об этом, но, к сожалению, вы должны запросить это явно в текстовом поле произвольной формы. Убедитесь, что вы также указали все идентификаторы пакетов dext, с которыми должны взаимодействовать ваши приложения, поскольку право предоставляется для каждого dext индивидуально. (Или, по крайней мере, это было несколько недель назад.)

Вы можете повторно отправить форму или попытаться ответить на электронное письмо, касающееся вашего первоначального предоставления прав. Убедитесь, что вы явно запрашиваете, с какими каналами распространения (разработка, идентификатор разработчика, App Store) вы будете использовать это право (и убедитесь, что все существующие права были предоставлены для необходимых вам каналов), поскольку один мой клиент получил некоторые права, предоставленные только для разработки, а не для распространения, потому что мы явно не запрашивали иное.

В целях разработки, пока вам не будет предоставлено право, вы можете включить следующий boot-args параметр ядра, чтобы система игнорировала отсутствие права в вашем профиле подготовки (но приложению все еще требуется указанное право) — таким образом, приложение все еще может запускаться, и право доступа к пользовательскому клиенту на стороне ядра будет передано. Как правило, приложение будет немедленно удалено AMFI, если в нем указано право, которого нет в профиле подготовки.

 nvram boot-args="amfi_get_out_of_my_way=1"
  

(Это можно настроить только из среды восстановления; убедитесь, что вы не перезаписываете какие-либо существующие boot-args , просто добавьте его к существующим, если необходимо)

Наконец, если вы планируете взаимодействовать с dext из изолированного приложения (например, любого приложения, распространяемого через App Store), я думаю, что вам дополнительно необходимо подать заявку на временное исключение класса IOKit User Client из изолированной среды. Это com.apple.security.temporary-exception.iokit-user-client-class право, и его необходимо будет предоставить для IOUserUserClient класса. Я не знаю подробностей о том, как это работает, но я бы обязательно упомянул это вместе с вашим правом доступа driverkit userclient, если оно применимо к вам.

Комментарии:

1. Спасибо, Фил! Мы повторно отправили запрос в Apple после просмотра вашего сообщения. В настоящее время наш проект доступен только под SIP off…it это очень беспокоит.

2. Таким образом nvram boot-args="amfi_get_out_of_my_way=1" могу ли я протестировать свою программу под SIP on? Если да, то это будет здорово!

3. Просто попробовал эту команду nvram boot-args="amfi_get_out_of_my_way=1" в режиме восстановления и csrutil enable , мое приложение все еще killed…my среда тестирования — 10.15.6

4. Наконец-то мы получили некоторые права для нашего приложения с идентификатором пакета com.company.app для связи с нашим драйвером с идентификатором пакета com.company.driver , но описание прав в выпадающем списке, которое отображается при создании профиля, показывает, что для него com.company.driver установлено значение true и com.apple.developer.driverkit.userclient-access установлено значение true. Я ожидал, что com.apple.developer.driverkit.userclient-access это будет массив с идентификатором пакета для драйвера. Я что-то упустил или мы получили неправильные права?