2010-09-15 11 views
6

estoy firmando un exe punto net usando¿Cómo se lee la clave pública de un C# exe firmado

signcode.exe with an spc/pvk combo 

El archivo tiene que leer su propia clave pública en tiempo de ejecución con el fin de verificar algunos datos. He bajado por varias avenidas diferentes.

He intentado

X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 

executingCert es un valor nulo. Supongo que signcode no está creando un archivo firmado X509, aunque si hay un cambio para cambiar que estoy feliz de ir por ese camino.

editado Resulta que el trabajo anterior .... tuve mi cheque nulo hacia atrás (= = ==!) :)

Assembly asm = Assembly.GetExecutingAssembly(); 
string exe = asm.Location; 
X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 

if (executingCert != null) 
{ 
    Console.WriteLine("Assembly is signed"); 
    byte[] assemblyKey = executingCert.GetPublicKey(); 
} 

Respuesta

3

SignCode (para .Net 1.0 y 1.1) utiliza la firma de Authenticode, que hasta donde yo sé, carece de una interfaz administrada .Net Framework. Es probable que necesite utilizar P/Invoke para llamar a las rutinas en Win32 API, como las que se encuentran en este KB article: How To Get Information from Authenticode Signed Executables. Probablemente necesitará usar CryptQueryObject, que le proporcionará el certificado , que luego tendrá que encontrar otra rutina para extraer la clave pública.

Salida esta pregunta StackOverflow relacionados que tiene una gran cantidad de respuestas: WinVerifyTrust to check for a specific signature?

+0

Gracias parece que debería funcionar si puedo ejecutar todo el p/invocando – Fiacc

+0

Esto tiene una respuesta C# http://stackoverflow.com/a/28835034/82410 – Rohit

0

intentar algo así como que:

Assembly.GetEntryAssembly().GetName().GetPublicKey() 

Usé GetEntryAssembly en ese caso, pero, por supuesto, puede llamar al método en cualquier ensamblaje cargado.

+2

que está leyendo la clave pública de un nombre seguro no de una firma digital basada en certificados! –

Cuestiones relacionadas