gpt4 book ai didi

c# - 如何从签名的 C# exe 中读取公钥

转载 作者:太空狗 更新时间:2023-10-29 20:35:21 24 4
gpt4 key购买 nike

我正在使用

签署一个 dot net exe
signcode.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com