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