2009-03-27 26 views
8

Tôi đang sử dụng CAPICOM trong ứng dụng .NET 3.0 C# để kiểm tra chữ ký Authenticode trên tệp exe. Tôi cần đảm bảo rằng chứng chỉ được liệt kê là Nhà xuất bản đáng tin cậy. Sử dụng signedCode.Verify(true) sẽ hiển thị hộp thoại nếu chứng chỉ chưa được tin cậy, vì vậy người dùng có thể chọn có hay không làm như vậy. Tuy nhiên, signedCode.Verify(false) đang xác minh chữ ký ngay cả khi nó không phải từ một nhà xuất bản đáng tin cậy - có lẽ đây chỉ là kiểm tra xem chứng chỉ có hợp lệ hay không.CAPICOM - Xác minh SignedCode là từ một Nhà xuất bản đáng tin cậy mà không cần giao diện người dùng

Tôi làm cách nào để kiểm tra chữ ký trên tệp là từ chứng chỉ hợp lệ và đáng tin cậy không có giao diện người dùng?

Trả lời

0

Những gì bạn có lẽ sẽ cần phải làm là sử dụng tiếp xúc qua mscoree.dll StrongNameSignatureVerificationEx chức năng với P/Invoke:

[DllImport("mscoree.dll", CharSet=CharSet.Unicode)] 
static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification, ref bool pfWasVerified); 
2

Thứ nhất, StrongNameSignatureVerificationEx là để xác minh chữ ký lắp ráp và không xác minh chữ ký Authenticode. Vì vậy, điều này không liên quan đến bối cảnh của câu hỏi của người đăng ban đầu.

Liên quan đến câu hỏi ban đầu, bạn có thể tự kiểm tra xem giấy chứng nhận người ký được xích một cách chính xác vào một gốc tin cậy mà không cần bất kỳ GUI bằng cách sử dụng đoạn mã sau:

ICertificateStatus certStatus = signedCode.Signer.Certificate.IsValid(); 

Ý tưởng là để lấy giấy chứng nhận và của người ký nói với CAPICom để kiểm tra xem nó có một chuỗi tin cậy đúng không.

Tôi hy vọng điều này sẽ hữu ích. Chúc mừng,

Mounir IDRASSI, IDRIX, http://www.idrix.fr

0

Bạn có thể sử dụng bở WinVerifyTrust như here. Nó hoạt động tốt trên Windows XP/Vista/2008/7. Nếu bạn cũng muốn kiểm tra danh sách thu hồi được đặt

RevocationChecks = WinTrustDataRevocationChecks.WholeChain; 
Các vấn đề liên quan