Мой .NET exe подписан с использованием знака signtool. Используя этот код, я могу проверить действительность самого сертификата:Проверка цифровой подписи на EXE
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Однако, это только проверяет сам сертификат, а не подписи EXE-файла. Поэтому, если EXE подделан, этот метод не обнаруживает его.
Как я могу проверить подпись?
'X509Certificate.CreateFromSignedFile (" "). Verify()'? – Sinatr
.CreateFromSignedFile возвращает экземпляр X509Certificate и не имеет метода .Verify. – LTR
Хорошо, тогда еще одна глупая идея: постройте 'X509Certificate2', используя' X509Certificate', а не 'Handle'. Я предполагаю: метод 'Verify' * должен * проверить файл также или сертификат будет генерировать исключение (при создании экземпляра?), Если файл exe-файла подделан. Возможно, вам нужно реализовать собственную проверку [цепочку] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain.aspx). – Sinatr