Как понять удаленное подписывание кода расширения ядра? - PullRequest
0 голосов
/ 11 мая 2018

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

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

Я настраиваю удаленную сборку для моего клиента. Я получил все, кроме подписи кода на работу. Если я вхожу в GUI, а затем запускаю сценарий «build_all», codeSign представляет GUI, который запрашивает мой пароль. Если я ssh в, кодовый знак потерпит неудачу.

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

$ 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 `('

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

1 Ответ

0 голосов
/ 11 мая 2018

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

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

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