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