My .NET exe è stato firmato utilizzando signtool. Utilizzando questo codice, posso verificare la validità del certificato stesso:Controllo firma digitale su EXE
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Tuttavia, questo controlla solo il certificato stesso, e non la firma del file EXE. Pertanto, se l'EXE viene manomesso, questo metodo non lo rileva.
Come posso verificare la firma?
'X509Certificate.CreateFromSignedFile (""). Verificare()'? – Sinatr
.CreateFromSignedFile restituisce un'istanza di X509Certificate e non ha un metodo .Verify. – LTR
Ok, allora un'altra stupida idea: costruire 'X509Certificate2' usando' X509Certificate', non 'Handle'. Sto indovinando: il metodo 'Verify' * dovrebbe * controllare anche il file o il certificato genererà un'eccezione (in caso di istanziazione?) Se il file exe è stato manomesso. Forse è necessario implementare la propria convalida [catena] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain.aspx). – Sinatr