Информация о версии подписывания кода для семени WWDC

Содержание:

Обзор

Этот файл описывает то, что изменилось с Подписыванием кода начиная с Leopard выпуск GM. Обратите внимание на то, что некоторые из этих изменений были также реализованы в 10.5.2 и 10.5.3 обновлениях программного обеспечения до Leopard, и что в некоторых случаях код Обновления Leopard может показать немного отличающееся поведение.

Общедоступный API

Главные части Подписывания кода API теперь общедоступны в SnowLeopard и доступны для использования разработчика. В частности статическая и динамическая проверка APIs, APIs для управления требованиями кода и хостинга API включена.

Подписание API остается частным. Если Вы полагаете, что необходимо подписать код путем вызова API (вместо того, чтобы выполнить элемент кода (1) команда), сообщите нам.

Так всегда сохраните пальцы от всех недокументированных битов и ключей словаря, интригуя, как они могут быть.

Подписывание кода API не в настоящее время доступно в iOS SDK.

Новые возможности

Подписывание кода может теперь подписать мелкие пакеты (вид, где все находится в одном каталоге). Чтобы быть распознанным Подписыванием кода, Info.plist должен содержать ключ CFBundleResourceSpecification, указывающий на допустимый файл спецификации ресурса в пакете. Нет никакой спецификации ресурса по умолчанию для мелких пакетов, так как у них есть недостаточная структура для выведения той.

Подписи кода могут теперь встроить дающую право конфигурацию. Это используется на iPhone, но также доступно на OS X. (OS X в настоящее время делает нет смысла в правах.)

Язык требования расширился:

Неявные Определяемые Требования теперь пересекают цепочку сертификата от подписывающегося (лист) сертификат к привязке (корень) до Организационной части подчиненных изменений. Это означает, что, если Вы сделали свой собственный центр сертификации и дали всем сертификатам ту же Организацию (т.е. Ваш), Определяемое Требование укажет на Вашу привязку, не Ваш лист, и таким образом будет намного более полезным по умолчанию.

Ошибки фиксируют и улучшения

Файлы, добавленные к пакету во время подписания, теперь помещаются в a _CodeSignature подкаталог, а не помещенный непосредственно в каталог (Contents) поддержки. Символьные ссылки помещаются в Содержание для упрощения любых проблем перехода, но будут в конечном счете удалены. Это не должно влиять на Вас, если Вы так или иначе явно не адресовали такие файлы.

Объекты кода, полученные из рабочего кода теперь динамично, выбирают правильную Мужественную архитектуру путем выяснения у ядра его. В Leopard это включило эвристику, иногда понимавшую его превратно, когда 32-разрядные и 64-разрядные программы попытались обсудить законность друг друга.

Система теперь сравнивает подпись, поднятую с диска с используемым ядром, и отклоняет проверку, если они отличаются. Это правильно отклоняет любую ситуацию, где основная исполнимая программа изменилась, так как ядро начало выполнять его. Это означает, что от пространства пользователя, любая рабочая программа, основной исполняемый файл которой изменился на диске, будет (правильно) казаться недопустимой.

Система генерирует корректные неявные Определяемые Требования для программ, подписанных с идентификационными данными, выпущенными Apple разработчикам iPhone.

Преобразование требования для строкового представления (источник) формы выполняет лучшую работу при заключении в кавычки строковых констант при необходимости.

Во время подписания Мужественные программы автоматически встраивают внутренние требования библиотеки для динамических библиотек, они соединяются с в подготовке к автоматической проверке библиотеки в будущем.

Элемент кода (1) более вероятно, будет, теперь отображать (-d) содержание, и позволять уходить в отставку (-f-s) кода с плохо поврежденными подписями, а не просто жаловаться на это.

- продолжаются, опция теперь работает на все операции в элементе кода (1), а не просто проверки.

Элемент кода (1) сообщения диагностики теперь лучше описывают ситуацию, где некоторые идентификационные данные подписания доступны, но все являются неподходящими для подписывания кода. (Об этом ранее не сообщили как никакие идентификационные данные подписания вообще быть найденным.)

Элемент кода (1) теперь предпочитает точное соответствие имени для сертификата подписания по соответствиям подстроки. Необходимо быть в состоянии указать любой сертификат с его точным подчиненным общим названием, пока это уникально в пути поиска цепочки для ключей.

Новое - опция сертификатов выдержки позволяет элементу кода (1) получать встроенную цепочку сертификата подписи кода для подробной проверки.

Совместимость

Код вошел в систему, Leopard должен проверить без проблемы в SnowLeopard.

Код вошел в систему, SnowLeopard будет обычно проверять в Leopard 10.5.3 или позже. Leopard 10.5.2 и 10.5.3 содержит улучшения, учащие Leopard иметь дело с большинством SnowLeopard-специфичных новинок. Версии 10.5.0 и 10.5.1 Leopard могут отклонить некоторый код, вошедший в систему SnowLeopard как недопустимый, хотя будут работать общие падежи.

Известные проблемы

Пакеты, основные исполняемые файлы которых имеют имена, содержащие метасимволы регулярного выражения (+, *, [], и т.д.) не могут быть подписаны или проверены. Как обходное решение, переименуйте основную исполнимую программу, чтобы не содержать эти символы и обновить Info.plist для соответствия. Вы не должны переименовывать фактический пакет или программу. Это не влияет на однофайловый (несвязанный) код.

Сертификат [поле...] оператор требования не распознает некоторые фактически присутствующие расширения. Это включает некоторые расширения, используемые логикой подписания iPhone, которая может вызвать должным образом подписанные приложения для iPhone, кажется, не соответствуют их определяемые требования. Эта ошибка только влияет на SnowLeopard.

Хостинг заголовок API (SecCodeHost.h) был непреднамеренно опущен от семени. Это будет общедоступно в будущем семени.

В некоторых ситуациях компилятор требования инвертирует относительный приоритет и и или операторы. Если Вы объединяетесь и и или в выражении требования, используйте явные круглые скобки.

Не возможно надежно подписать или проверить целую платформу. Чтобы подписать и проверить платформы, адресуйтесь (обычно) определенная версия, например.

codesign -v .../Frobozz.framework/Versions/A