2016-10-16 3 views
2

я заметил, что я могу поставить цифровую подпись любой случайный файл:Где хранится информация о кодах, хранящихся для файлов, которые не находятся в комплекте?

touch ~/test 
md5 ~/test 
    -> MD5 (~/test) = d41d8cd98f00b204e9800998ecf8427e 
codesign -vv ~/test 
    -> code object is not signed at all 
codesign -s <Developer ID Certificate Hash> ~/test 
md5 ~/test 
    -> MD5 (~/test) = d41d8cd98f00b204e9800998ecf8427e 
codesign -vv ~/test 
    -> valid on disk 
    -> satisfies its Designated Requirement 

Если это был комок, то CodeSign информация будет храниться здесь: MyBundle.app/Contents/_CodeSignature/

Но в этом случае нет пакета, и контрольная сумма файла не изменяется, поэтому, где сохраняется подпись кода?

ответ

1

Какой замечательный вопрос!

Если вы касаетесь файл и посмотреть на него с ls вы увидите что-то вроде этого:

$ ls -la test 
-rw-r--r-- 1 User staff 0 17 Oct 09:42 test 

CodeSign файл и перечислить его снова

$ ls -la test 
[email protected] 1 User staff 0 17 Oct 09:42 test 

Вы увидите, что Второй листинг имеет @ в конце разрешений, в котором говорится, что существует один или несколько расширенных атрибутов.

Мы можем просмотреть данные там с вызовом xattr

$ xattr -l test 

И что будет отображать данные код подписи, который хранится в виде расширенного атрибута файла.

+1

Спасибо! Имеет смысл. –