我需要在 Linux 上对 PE 文件(实际上是 EFI)进行数字签名和时间戳记。我找到了 3 个用于签署 PE 文件的工具:pesign
和osslsigncode
( signcode
mono),但似乎没有一个完全符合我的需求。问题是,密钥位于硬件令牌上,无法导出。因此我必须创建一个证书数据库,在那里添加令牌驱动程序条目并通过这个数据库工作。只pesign
允许这样做,但不支持时间戳。osslsigncode
并signcode
支持时间戳,但他们不能使用数据库。
Windowssignttool.exe
可以将签名和时间戳作为单独的步骤执行。所以我想,我可能会用它pesign
来签署文件,然后只用另一个工具给它加上时间戳。但是正如我发现的那样,osslsigncode
并且signcode
不支持单独的时间戳(在osslsigncode
项目中它在文件中列出TODO
,但在存储库中还没有迹象)。
我错过了一些工具吗?是否有不太低级的库可以让我自己编写这样的程序?(最好是 C/C++/Perl/Python。)我试图从 获取时间戳代码osslsigncode
,但未能轻松地将其与前面的步骤(删除现有签名并添加新签名)分离。
PS 我也尝试signtool.exe
在 wine 下运行,但 1) 未能使其正常工作,以及 2) 我不确定它是否合法(我不擅长分析 EULA)。