2015-03-11 2 views
-1

Обычно в C#, когда мы хотим получить .net файла цифрового знака имени субъекта, мы просто можем просто использовать:Как получить неуправляемое имя темы подписи цифровой подписи exe или dll?

string Subject = AsseblyObject.GetModules().First().GetSignerCertificate().Subject; 

Но я хочу неуправляемых еха или DLL файлы цифровой подписи имени субъекта. Есть ли другой способ? Благодарю.

ответ

2

Это то, что я использую на цифровой подписи архивных файлов (т.е. они не управляются совсем):

using System.Security.Cryptography; 
using System.Security.Cryptography.X509Certificates; 


var signer = X509Certificate.CreateFromSignedFile("[path to the file]"); 
var cert = new X509Certificate2(signer); 

var certChain = new X509Chain(); 
certChain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot; 
certChain.ChainPolicy.RevocationMode = CheckRevocOffline ? X509RevocationMode.Offline : X509RevocationMode.Online; 
certChain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 0, 0); 
certChain.ChainPolicy.VerificationFlags = VerificationFlags; 

var certChainIsValid = certChain.Build(cert); 

if (!certChainIsValid) 
{ 
    //file is likely to be self signed, revoked or expired 
} 

var subjectName = cert.SubjectName.Name; 

Это урезанная версия, чтобы вы начали - У меня есть куча больше проверки и исключения бросая встроенный, также есть куча вещей, которые нужно искать.

+0

@slugster, спасибо. Я проверяю это. Это хорошо. И еще, спасибо, дайте мне знать больше. – qakmak