Tag: x509

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

我正在签署一个dot net exe signcode.exe with an spc/pvk combo 该文件需要在运行时读取自己的公钥以validation某些数据。 我走了很多不同的途径。 我试过了 X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 那么executionCert就是null。 我猜测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(); }

检查EXE上的数字签名

我的.NET exe是使用signtool签名的。 使用此代码,我可以validation证书本身的有效性: var cert = X509Certificate.CreateFromSignedFile(“application.exe”); var cert2 = new X509Certificate2(cert.Handle); bool valid = cert2.Verify(); 但是,这仅检查证书本身,而不检查EXE的签名。 因此,如果EXE被篡改,则此方法不会检测到它。 我该如何查看签名?

检查x509证书的签名

我有: x509证书(Base64); 字符串数据; 字符串数据的签名(Base64)。 是否有可能检查签名? 我的代码: bool valid = false; var signature = Convert.FromBase64String(base64Signature); var data = Encoding.UTF8.GetBytes(stringData); var x509 = new X509Certificate2(Convert.FromBase64String(certificate)); var dsa = x509.PublicKey.Key as DSACryptoServiceProvider; if (dsa!=null) valid = dsa.VerifySignature(data, signature); else { var rsa = x509.PublicKey.Key as RSACryptoServiceProvider; if (rsa!=null) valid = rsa.VerifyHash(data, ???, signature); } 我不知道应该用什么而不是???。 可以从证书中获取哈希算法吗?

如何使用C#以编程方式安装证书

我的学校网页有自己的证书(你必须手动安装),我想创建一个程序,在我点击一个按钮后,会安装一个certificate.cer(从visual studio资源)到本地用户 – “受信任的根证书权限”。你知道如何在Visual C#中编写代码吗?

C#如何validationRoot-CA-Cert证书(x509)链?

假设我有三个证书(Base64格式) Root | — CA | — Cert (client/signing/whatever) 如何在C#中validation证书和证书路径/链? (所有这三个证书可能都不在我的计算机证书库中) 编辑 :BouncyCastle具有validationfunction。 但我试图不使用任何第三方库。 byte[] b1 = Convert.FromBase64String(x509Str1); byte[] b2 = Convert.FromBase64String(x509Str2); X509Certificate cer1 = new X509CertificateParser().ReadCertificate(b1); X509Certificate cer2 = new X509CertificateParser().ReadCertificate(b2); cer1.Verify(cer2.GetPublicKey()); 如果cer1未由cert2(CA或root)签名,则会出现exception。 这正是我想要的。