2009-03-27 21 views
8

Używam CAPICOM w aplikacji .NET 3.0 C# do sprawdzania podpisu Authenticode w pliku exe. Muszę się upewnić, że certyfikat jest wymieniony jako Zaufany wydawca. Użycie signedCode.Verify(true) wyświetli okno dialogowe, jeśli certyfikat nie jest jeszcze zaufany, więc użytkownik może wybrać, czy ma to zrobić, czy nie. Jednak signedCode.Verify(false) weryfikuje podpis, nawet jeśli nie pochodzi od zaufanego wydawcy - prawdopodobnie sprawdza tylko, czy certyfikat jest ważny.CAPICOM - Sprawdź, czy kod SignedCode pochodzi od zaufanego wydawcy bez interfejsu użytkownika

Jak mogę sprawdzić, czy podpis na pliku pochodzi z ważnego i zaufanego certyfikatu bez interfejsu użytkownika?

Odpowiedz

0

Co byś prawdopodobnie trzeba zrobić jest użycie wystawiony przez Mscoree.dll StrongNameSignatureVerificationEx z funkcji P/Invoke:

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

Najpierw StrongNameSignatureVerificationEx jest do weryfikacji podpisu montaż, a nie weryfikacji podpisu Authenticode. Nie dotyczy to zatem kontekstu pytania oryginalnego plakatu.

dotyczące początkowego pytanie, można ręcznie sprawdzić, czy certyfikat podpisujący jest właściwie przykuty do zaufanego korzenia bez GUI za pomocą następującego kodu:

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

Chodzi o to, aby pobrać certyfikat podpisującego oraz do powiedz CAPICom, aby sprawdził, czy ma prawidłowy łańcuch zaufania.

Mam nadzieję, że to pomoże. Cheers,

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

0

Można użyć WinVerifyTrust jak pokazano here. Działa pięknie na Windows XP/Vista/2008/7. Jeśli chcesz również sprawdzić listę odwołania zestaw

RevocationChecks = WinTrustDataRevocationChecks.WholeChain;