我想从Autenticode签名的.Net DLL中提取C#中的公钥,而不是公钥令牌?
答案 0 :(得分:5)
要从Autenticode签名的.Net库获取公钥,请使用以下代码:
Assembly assembly = Assembly.LoadFrom("dll_file_name");
X509Certificate certificate = assembly.ManifestModule.GetSignerCertificate();
byte[] publicKey = certificate.GetPublicKey();
但只有在证书安装到受信任的根证书颁发机构中时,这才有效。否则,GetSignerCertificate()
将返回null。
即使第二种方式不在受信任的根证书颁发机构中,也可以获得证书。
X509Certificate executingCert = X509Certificate.CreateFromSignedFile("dll_file_name");
byte[] publicKey = certificate.GetPublicKey();