Как понять подписывание кода удаленного расширения ядра?

Подписание расширения ядра сложнее, чем подписание исполняемого файла в пользовательском пространстве. Apple выдала мне сертификат подписи kext. Он работает, когда я создаю из графического интерфейса Xcode или с помощью xcodebuild.

Чтение «Прекрасного руководства» могло бы привести меня туда, где я хочу быть, но всякий раз, когда я пытаюсь подписать свой водитель, у меня кружится голова.

Я настраиваю ящик удаленной сборки для своего клиента. У меня есть все, кроме подписи кода, чтобы работать. Если я вхожу в графический интерфейс, а затем запускаю свой сценарий "build_all", codeign представляет графический интерфейс, который запрашивает мой пароль. Если я подключусь по ssh, codeign не удастся.

Я думаю, что мне нужно сделать:

$ security unlock-keychain ...
$ codesign ...
$ security lock-keychain ...

Я могу понять, как заблокировать и разблокировать свой брелок; меня смущает командная строка кода.

Вот что делает xcodebuild:

/usr/bin/codesign --force --sign 84208E9C30B70E303186BAF330554E82E1891492 --requirements =designated\ =>\ anchor\ apple\ generic\ \ and\ identifier\ \"$self.identifier\"\ and\ ((cert\ leaf[field.1.2.840.113635.100.6.1.9]\ exists)\ or\ (\ certificate\ 1[field.1.2.840.113635.100.6.2.6]\ exists\ and\ certificate\ leaf[field.1.2.840.113635.100.6.1.13]\ exists\ \ and\ certificate\ leaf[subject.OU]\ =\ \"444JK52Q93\"\ )) --timestamp=none /Users/build/BuildBox/FL2000/trunk/IOProxyVideoFamily/Release/IOProxyFramebuffer.kext

Я попытался скопировать указанную выше командную строку, а затем вставить ее в Терминал, но из-за большого количества скобок команда завершилась ошибкой:

Command-C
Command-V
-bash: syntax error near unexpected token `('

Возможно, все, что мне нужно, это добавить кавычки или обратную косую черту в командную строку codeign.


person Mike Crawford    schedule 10.05.2018    source источник


Ответы (1)


В строке требований отсутствует ".

Измените его на:

/usr/bin/codesign --force --sign 84208E9C30B70E303186BAF330554E82E1891492 --requirements "=designated => anchor apple generic  and identifier \"$self.identifier\" and ((cert leaf[field.1.2.840.113635.100.6.1.9] exists) or ( certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists  and certificate leaf[subject.OU] = \"444JK52Q93\" ))"--timestamp=none /Users/build/BuildBox/FL2000/trunk/IOProxyVideoFamily/Release/IOProxyFramebuffer.kext
person B.J.    schedule 10.05.2018
comment
Ты мой мастер сценариев оболочки. Я принял твой ответ. - person Mike Crawford; 11.05.2018
comment
Можем ли мы обернуть строку и добавить к ней \? :-) - person halfer; 11.05.2018
comment
Это довольно сложно, так как то, что вы хотели бы обернуть, - это фактическая строка в кавычках, в которой не должно быть переводов строки ... - person B.J.; 12.05.2018