Где CodeSign хранит подпись для подписанного текстового файла в OSX?
У меня есть простой пакет приложений со следующей структурой:
myapp.app/Contents/
myapp.app/Contents/MacOS/myapp
myapp.app/Contents/Resources/empty.lproj
myapp.app/Contents/Info.plist
myapp.app/Contents/PkgInfo
Если я выполню
codesign -s "Developer ID" myapp.app/Contents/Info.plist
Я могу проверить, что файл подписан
codesign -d -v myapp.app/Contents/Info.plist
который дает следующий вывод
Executable=/pathToApp/quicknanobrowser.app/Contents/Info.plist
Identifier=Info
Format=generic
CodeDirectory v=20100 size=113 flags=0x0(none) hashes=1+2 location=embedded
Signature size=1278
Signed Time=26 Jan 2016 12:31:24
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=80
Где хранятся данные о том, что файл был подписан? Структура папок не изменилась (новых файлов нет), размер файла не изменился. Хранится ли он в некоторых метаданных файловой системы? Можно ли получить доступ / прочитать эти метаданные?
1 ответ
Для не машино-бинарных файлов, codesign
хранит подпись в метаданных для каждого файла, называемых HFS+ расширенные атрибуты:
ls -l@ Info.plist
com.apple.cs.CodeDirectory 142
com.apple.cs.CodeRequirements 180
com.apple.cs.CodeSignature 8551
Вы можете посмотреть содержимое этих атрибутов с помощью xattr
xattr -p com.apple.cs.CodeSignature Info.plist
но инструмент, кажется, любит сброс в шестнадцатеричном формате. Кажется, что нет оболочки для доступа к атрибутам, хотя раньше вы могли получить доступ к Resource Fork (также расширенному атрибуту), добавив /rsrc
к имени файла (например, cat blah/rsrc
).