我注意到我能够对任何随机文件进行数字签名:
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
如果是捆绑包,则代码签名信息将存储在此处: MyBundle.app/Contents/_CodeSignature /
但是在这种情况下,没有包,文件的校验和没有变化,那么代码签名存储在哪里?
答案 0 :(得分:2)
这是一个很棒的问题!
如果您触摸该文件并使用ls
查看该文件,您会看到以下内容:
$ ls -la test
-rw-r--r-- 1 User staff 0 17 Oct 09:42 test
对文件进行编码并再次列出
$ ls -la test
-rw-r--r--@ 1 User staff 0 17 Oct 09:42 test
您会看到第二个商家信息在权限末尾有一个@
,告诉我们有一个或多个扩展属性。
我们可以通过调用xattr
$ xattr -l test
这将显示代码签名数据,该数据存储为文件的扩展属性。