2016-10-16 30 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 

如果它被捆绑,协同设计信息,将存储在这里: MyBundle.app/Contents/_CodeSignature/

但在这种情况下,没有包,并且文件的校验和没有变化,所以代码签名存储在哪里?

回答

1

真是个好问题!

如果触摸文件,看看它与ls,你会看到这样的内容:

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

协同设计文件并再次列出它

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

你会看到第二个列表在权限末尾有一个@,它告诉我们有一个或多个扩展属性。

我们可以用一个呼叫存在查看数据到xattr

$ xattr -l test 

这将显示代码签名数据,其被存储为文件的扩展属性。

+1

谢谢!说得通。 –

相关问题