En mi solicitud C#
/.NET
tengo que verificación si un ejecutable dado está firmado digitalmente(preferiblemente sin Exception
pruebas.)Verifica si un ejecutable dado tiene firma digital y es válido?
entonces necesito de verificación si el certificado es válido(basado en la certificados raíz instalados) y si el contenido de los archivos es válido para la firma.
Hay tantas clases en el BCL
, no sé por dónde empezar & lo de usar, y todo lo que he encontrado hasta ahora no elimina mi confusión ...
que había gustaría hacer algo como esto, sin P/Invoke
si es posible: la clarificación
bool IsSignedFile(string path);
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);
Agregado:
El gran problema que tengo actualmente es que no encuentro una manera de obtener la firma de dicho archivo de una manera fácil. Todavía espero que haya una solución provista, administrada, BCL
, ya que me sorprendería si esa parte falta exactamente. (Para el certificado esto se puede hacer con sólo X509Certificate.CreateFromSignedFile
, validando que es posible, también)
prefiero no mezclar que el 50% trabajo hecho con P/Invoke
código o una biblioteca de gran diferentes.
He encontrado una clase AuthenticodeSignatureInformation
, sin embargo, no hay información sobre el uso de eso para un ejecutable dado.
duplicado Posible de http://stackoverflow.com/questions/7622732/c-how-to-detect-tampering-of- authenticode-signed-file – DeCaf
Espero que esto no sea un duplicado de una pregunta no respondida;) – ordag
La pregunta relacionada con tiene tres respuestas de lo que puedo ver. (Ninguno de ellos fue aceptado, pero eso no quiere decir que no sean relevantes). Hay otro similar en http: // stackoverflow.com/questions/301024/validate-authenticode-signature-on-exe-c-without-capicom pero todo indica que el uso de p/invoke es obligatorio, por desgracia. – DeCaf