2016-01-26 11 views
1

У меня есть простое приложение сверток со следующей структурой:Где копирует код для хранения подписанного текстового файла на 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

Для не macho-бинарников, codesign хранит подпись в расчете файла метаданных называется HFS + расширенные атрибуты:

ls [email protected] 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 

но инструмент, похоже, напоминает демпинг в шестнадцатеричном формате. Кажется, что для доступа к атрибутам нет стенограммы оболочки, хотя вы использовали возможность получить в витке ресурсов (также расширенный атрибут), добавив /rsrc к имени файла (например, cat blah/rsrc).