Nella mia applicazione C#
/.NET
devo di controllo se un dato eseguibile viene firmato digitalmente(preferibilmente senza Exception
test.)Verificare se un determinato file eseguibile è firmato digitalmente e valido?
poi ho bisogno di verificare se il suo certificato è valido(sulla base degli certificati root installati) e se il contenuto dei file è valido per la firma.
Ci sono così tante classi nel BCL
, non so da dove cominciare & cosa utilizzare, e tutto ciò che ho trovato finora non elimina la mia confusione ...
mi piacerebbe piacerebbe fare qualcosa di simile, senza P/Invoke
se possibile:
bool IsSignedFile(string path);
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);
Aggiunto chiarimento:
Il grosso problema che ho attualmente è che non trovo un modo per ottenere la firma di tale file in un modo semplice. Speriamo ancora che ci sia una soluzione fornita, gestita, BCL
come sarei sorpreso se esattamente quella parte è mancante. (Per il certificato è possibile farlo solo con X509Certificate.CreateFromSignedFile
, è possibile anche convalidare)
Preferirei non mischiare il 50% di lavoro eseguito con il codice P/Invoke
o una libreria diversa.
Ho trovato una classe AuthenticodeSignatureInformation
, nessuna informazione sull'utilizzo di quello per un determinato file eseguibile.
Eventuali duplicati di http://stackoverflow.com/questions/7622732/c-how-to-detect-tampering-of- authenticode-signed-file – DeCaf
Spero che questo non sia un duplicato di una domanda non risposta;) – ordag
La domanda collegata a tre risposte da quello che posso vedere. (Nessuno di questi è stato accettato, ma questo non vuol dire che non siano rilevanti). Ce n'è un'altra simile a http: // StackOverflow.it/questions/301024/validate-authenticode-signature-on-exe-c-without-capicom ma tutto rimanda all'utilizzo di p/invoke essendo richiesto sfortunatamente. – DeCaf