2010-09-15 6 views
6

mir ein dot net exeWie las ich den öffentlichen Schlüssel aus einem signierten C# exe

signcode.exe with an spc/pvk combo 

Die Datei benötigt einen eigenen Public-Key zur Laufzeit zu lesen, um einige Daten zu überprüfen, mit der Unterzeichnung. Ich bin verschiedene Wege gegangen.

Ich habe versucht,

X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 

executingCert ist dann null. Ich nehme an, dass signcode keine signierte X509-Datei erstellt, aber wenn es einen Wechsel zum Ändern gibt, bin ich froh, so zu gehen.

bearbeitet aus Schaltet die oben funktioniert .... Ich hatte meine NULL-Prüfung nach hinten (= = ==!) :)

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(); 
} 

Antwort

3

SignCode (für .Net 1.0 und 1.1) verwendet Authenticode Signierung, die soweit ich weiß, fehlt eine .Net Framework Managed Interface. Sie müssen wahrscheinlich P/Invoke verwenden, um Routinen in der Win32-API aufzurufen, wie sie in diesem KB article: How To Get Information from Authenticode Signed Executables gefunden werden. Wahrscheinlich müssen Sie verwenden, die Sie das Zertifikat erhalten, das Sie dann wahrscheinlich eine andere Routine finden müssen, um den öffentlichen Schlüssel aus zu ziehen.

prüfen diese im Zusammenhang Frage Stackoverflow aus, die eine Menge Antworten hat: WinVerifyTrust to check for a specific signature?

+0

Danke sieht aus wie das sollte funktionieren, wenn ich alle p/Aufruf – Fiacc

+0

abziehen kann Dies hat eine C# Antwort http://stackoverflow.com/a/28835034/82410 – Rohit

0

Probieren Sie etwas wie folgt aus:

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

Ich habe GetEntryAssembly in diesem Fall verwendet, aber natürlich können Sie die Methode auf jeder geladenen Assembly aufrufen.

+2

dass der öffentliche Schlüssel von einem starken Namen nicht von einer digitalen Signatur auf Zertifikaten basiert Lesen! –

Verwandte Themen