作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用
签署一个 dot net exesigncode.exe with an spc/pvk combo
文件需要在运行时读取自己的Public Key,以验证一些数据。我走了很多不同的路。
我试过了
X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe);
executingCert 然后为空。我猜 signcode 不会创建 X509 签名文件,但如果有一个改变的开关,我很乐意那样做。
已编辑事实证明上面确实有效......我向后进行了空检查(!=!= ==):)
Assembly asm = Assembly.GetExecutingAssembly();
string exe = asm.Location;
X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe);
if (executingCert != null)
{
Console.WriteLine("Assembly is signed");
byte[] assemblyKey = executingCert.GetPublicKey();
}
最佳答案
SignCode(适用于 .Net 1.0 和 1.1)使用 Authenticode 签名,据我所知,它缺少 .Net Framework 托管接口(interface)。您可能需要使用 P/Invoke 来调用 Win32 API 中的例程,例如在 KB article: How To Get Information from Authenticode Signed Executables 中找到的例程。 .您可能需要使用 CryptQueryObject这会让你证书,然后您可能必须找到另一个例程来从中提取公钥。
查看这个有很多答案的相关 StackOverflow 问题:WinVerifyTrust to check for a specific signature?
关于c# - 如何从签名的 C# exe 中读取公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722610/
我是一名优秀的程序员,十分优秀!