.NET exe của tôi được ký bằng signtool. Sử dụng mã này, tôi có thể xác minh tính hợp lệ của giấy chứng nhận bản thân:Kiểm tra chữ ký số trên EXE
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Tuy nhiên, điều này chỉ kiểm tra giấy chứng nhận riêng của mình, và không phải là chữ ký của người EXE. Do đó, nếu EXE bị giả mạo, phương pháp này không phát hiện ra nó.
Tôi làm cách nào để kiểm tra chữ ký?
'X509Certificate.CreateFromSignedFile (" "). Xác minh()'? – Sinatr
.CreateFromSignedFile trả về phiên bản X509Certificate và không có phương thức .Verify. – LTR
Ok, sau đó một ý tưởng ngu ngốc khác: xây dựng 'X509Certificate2' bằng cách sử dụng' X509Certificate', không phải là 'Xử lý'. Tôi đoán: 'Verify' phương pháp * nên * kiểm tra các tập tin cũng hoặc chứng chỉ sẽ ném ngoại lệ (khi instantiating?) Nếu có chứa exe-file là giả mạo. Có lẽ bạn phải thực hiện xác nhận riêng [chain] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain.aspx). – Sinatr