codesign在OSX上存储签名文本文件的签名在哪里?

时间:2016-01-26 11:39:40

标签: macos code-signing codesign code-signing-certificate

我有一个简单的应用包,其结构如下:

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

答案 0 :(得分:4)

对于非mach-o二进制文件,codesign将签名存储在名为HFS +扩展属性的每个文件元数据中:

ls -l@ 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附加到文件名(例如{{1}来获取Resource Fork(也是扩展属性),但它似乎不是用于访问属性的shell简写。 }})。

相关问题