reconoce pudo programa predeterminado por lotes interno firmar externo error ejecutable descargar debug crear como comando certificado archivo app c# .net cryptography code-signing authenticode

c# - programa - no se pudo crear el certificado predeterminado



Compruebe si un ejecutable determinado está firmado digitalmente y es válido. (2)

Puedes hacer esto usando solo código administrado. El proyecto mono tiene sus propias herramientas de código de signo y chktrust que le permite firmar y verificar firmas de Authenticode (tm).

Ambos usan el ensamblado Mono.Security.dll , que funciona bien en Windows, y todo el código está licenciado bajo la licencia MIT.X11 (para que pueda hacer prácticamente lo que quiera con él).

Sin embargo, necesitará un poco de lógica adicional para verificar el certificado raíz, ya que Mono usa sus propias tiendas, no la de Windows. Eso no debería ser un gran problema ya que .NET (desde v2) proporciona clases que consultan / acceden a los almacenes de certificados de usuario / máquina.

Descargo de responsabilidad: escribí la mayor parte del código anterior ;-)

En mi aplicación C# / .NET tengo que verificar si un ejecutable dado está firmado digitalmente (preferiblemente sin la prueba de Exception ).

Entonces necesito verificar si su certificado es válido (basado en 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 y qué usar, y todo lo que he encontrado hasta ahora no elimina mi confusión ...

Me gustaría hacer algo como esto, sin P/Invoke si es posible:

bool IsSignedFile(string path); Cert GetCertificateFromSignedFile(string path); bool IsValidCertificate(Cert cert) Sig GetSignatureFromSignedFile(string path); bool IsValidSignature(string path, Sig sig, Cert cert);

Clarificación agregada:

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 BCL administrada y provista, ya que me sorprendería si exactamente faltara esa parte. (Para el certificado esto se puede hacer con solo X509Certificate.CreateFromSignedFile , validando eso también)
Preferiría no mezclar el 50% del trabajo realizado con el código P/Invoke o una biblioteca grande diferente.

He encontrado una clase AuthenticodeSignatureInformation , sin embargo, no hay información sobre el uso de eso para un ejecutable dado.