我有一个数字签名的二进制文件 app.exe,证书由商业CA颁发。在文件属性(Windows上),数字签名信息显示“此数字签名有效”。如果我以某种方式修改二进制文件(例如通过 Resource Hacker 更改资源),数字签名信息会显示“此数字签名无效”。
我尝试通过编程验证证书,但 X509Certificate2.Verify() 返回 true,无论我使用哪个文件-原始文件(app.exe)还是篡改后的文件(app-modified.exe)。
这个函数为什么在两种情况下都返回true?这是验证文件数字签名的适当方式吗?
string filename = "app.exe"; // "app-modified.exe"
X509Certificate cert1 = X509Certificate.CreateFromSignedFile(filename);
X509Certificate2 cert2 = new X509Certificate2(cert1);
bool isValid = cert2.Verify();
这个函数为什么在两种情况下都返回true?这是验证文件数字签名的适当方式吗?