为不在捆绑中的文件存储的编码信息在哪里?

时间:2016-10-16 16:56:50

标签: macos codesign

我注意到我能够对任何随机文件进行数字签名:

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 个答案:

答案 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

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