Чтение онлайн

ЖАНРЫ

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Решение

Создайте файл manifest.json в том же каталоге, где находятся файл pass.json и изображения для талона. Файл описания будет написан в формате JSON. Его корневой объект — это словарь. Ключами в этом словаре являются имена файлов (имена всех изображений плюс имя файла pass.json). Значение каждого ключа представляет собой SHA1-хеш соответствующего файла.

Обсуждение

Просто создайте файл manifest.json с ключами для всех изображений, а значения пока оставьте пустыми. Содержимое вашего файла manifest.json должно выглядеть примерно так:

{

«background.png»: "",

«background@2x.png»: "",

«background-568@2x.png»: "",

«icon.png»: "",

«icon@2x.png»: "",

«logo.png»: "",

«logo@2x.png»: "",

«pass.json»: "",

«thumbnail.png»: "",

«thumbnail@2x.png»: ""

}

А

теперь начинается самое интересное. Нужно рассчитывать SHA1-хеши всех этих файлов. Учтите, что теперь при каждом изменении файлов (например, вы нашли ошибку в файле pass.json и исправили ее) потребуется также пересчитывать SHA1-хеш и записывать новое значение этого хеша в файле manifest.json. Чтобы рассчитать значение SHA1-хеша для любого файла в операционной системе OS X, просто выполните следующие шаги.

1. Откройте окно терминала и перейдите в каталог, где находится целевой файл (для этого используется команда cd).

2. Выполните в окне терминала команду openssl. В качестве ее первого аргумента сообщите sha1, в качестве второго — имя файла.

Например, в каталоге с моим проектом есть подкаталог pass. В этот каталог я поместил мой файл pass.json, полупустой файл manifest.json, а также все изображения для талона (фоновое изображение, логотип и т. д.). Теперь в окне терминала я рассчитаю значения SHA1-хешей для всех этих файлов и запишу полученные значения в файл описания. Итак, в первой строке следующего листинга идет команда openssl, а все остальные строки — это значения хешей, полученные в качестве вывода:

openssl sha1 *.png *.json

SHA1(background-568h@2x.png)= e2aaf36f4037b2a4008240dc2d13652aad6a15bb

SHA1(background.png)= b21a92dedb89f8b731adabc299b054907de2347d

SHA1(background@2x.png)= 6abab0f77fd89f1a213940fd5c36792b4cc6b264

SHA1(icon.png)= ed698ab24c5bd7f0e7496b2897ec054bbd4 26747

SHA1(icon@2x.png)= 90381c84cfea22136c951ddb3b368ade71f49eef

SHA1(logo.png)= c3bd8c5533b6c9f500bbadbdd957b9eac8a6bfe9

SHA1(logo@2x.png)= 1a56a5564dec5e8742ad65dc47aa9bd64c39222f

SHA1(thumbnail.png)= 58883d22196eb73f33ea556a4b7ea735f90a6213

SHA1(thumbnail@2x.png)= 0903df90165ef1a8909a15b4f652132c273 68560

SHA1(manifest.json)= 894f795b991681de8b12101afb8c2984bf8d0f65

SHA1(pass.json)= c5acddbab742f488867c34882c55ca14efff0de9

Мы рассчитали SHA1-хеши всех файлов, в том числе хеш manifest.json. Однако SHA1-хеш файла manifest.json нам не понадобится, так как он содержит хеши всех остальных файлов, а своего собственного хеша не имеет. Поэтому мы просто игнорируем хеш файла manifest.json.

Итак, теперь требуется заполнить файл manifest.json значениями SHA1 всех остальных файлов — эти хеши

мы только что рассчитали:

{

«background.png»: «b21a92dedb89f8b731adabc299b054907de2347d»,

«background@2x.png»: «6abab0f77fd89f1a213940fd5c36792b4cc6b264»,

«background-568@2x.png»: «e2aaf36f4037b2a4008240dc2d13652aad6a15bb»,

«icon.png»: «ed698ab24c5bd7f0e7496b2897ec054bbd4 26747»,

«icon@2x.png»: «90381c84cfea22136c951ddb3b368ade71f49eef»,

«logo.png»: «c3bd8c5533b6c9f500bbadbdd957b9eac8a6bfe9»,

«logo@2x.png»: «1a56a5564dec5e8742ad65dc47aa9bd64c39222f»,

«pass.json»: «c5acddbab742f488867c34882c55ca14efff0de9»,

«thumbnail.png»: «58883d22196eb73f33ea556a4b7ea735f90a6213»,

«thumbnail@2x.png»: «0903df90165ef1a8909a15b4f652132c273 68560»

}

Пока все понятно. Переходим к следующему этапу: нам нужно снабдить талон цифровой подписью.

См. также

Раздел 19.1.

19.5. Цифровое подписывание талонов

Постановка задачи

Вы подготовили каталог pass с файлом описания и файлом pass.json, а также все изображения. Теперь вы хотите снабдить цифровой подписью каталог с талоном и его содержимое. Это требуется для создания файла талона, готового к распространению.

Решение

Для подписывания талонов используйте OpenSSL.

Обсуждение

Каждый талон требуется подписывать с помощью сертификата, созданного в разделе 19.1. Для подписывания талонов мы вновь будем использовать команду openssl в окне терминала. Перед тем как читать дальше, убедитесь в том, что создали каталог pass и поместили в него файлы pass.json, manifest.json и все изображения. Этот каталог не обязательно должен называться pass. Тем не менее, чтобы было удобнее читать этот раздел и оставшиеся разделы этой главы, лучше не импровизировать и назвать этот каталог с файлами именно pass.

Некоторые читатели могли запутаться в том, куда относятся некоторые ключи и для чего нужны те или иные сертификаты. Надеюсь, в этом разделе ситуация прояснится. Когда вы запрашиваете новый сертификат на портале инициализации iOS, в связке ключей на вашем компьютере создается закрытый ключ, а также файл запроса на подпись сертификата (CSR). Сертификат будет сгенерирован Apple. Когда вы скачаете файл сертификата, он будет иметь расширение. cer. Это просто сертификат! Когда вы импортируете его в связку ключей, результирующий файл будет иметь расширение. p12. В этом файле будут содержаться и сертификат, и закрытый ключ к нему.

Прежде чем мы вплотную займемся процессом подписывания, нам потребуется экспортировать созданный сертификат из связки ключей. Не забывайте, что сертификат, полученный вами на портале инициализации iOS, — это не тот самый сертификат, который экспортируется из связки ключей. Поэтому при экспорте сертификата для идентификатора типа талона обязательно выполните следующие шаги.

1. Откройте на Mac программу для доступа к связке ключей (Keychain Access).

2. В левой верхней части окна в области Keychains (Связки ключей) убедитесь, что вы выбрали связку ключей для входа в систему (Login Keychain).

Поделиться с друзьями: