2008-11-19 8 views
15

Piszę funkcję dla biblioteki DLL instalatora, aby zweryfikować podpis Authenticode plików EXE już zainstalowanych w systemie.Sprawdź poprawność podpisu Authenticode na EXE - C++ bez CAPICOM

Funkcja musi:

A) sprawdza, czy podpis jest ważny.
B) sprawdź, czy osoba podpisująca jest naszą organizacją.

Ponieważ jest w instalatorze, a ponieważ to musi uruchomić na starszych instalacjach Win2k, ja nie chcą polegać na CAPICOM.DLL, gdyż nie może być w systemie docelowym.

Interfejs API WinVerifyTrust doskonale nadaje się do rozwiązania (A).

Potrzebuję znaleźć sposób na porównanie znanego certyfikatu (lub jego właściwości) z tym, który podpisał dany EXE.

+0

+1 ... jeśli ktoś mogę wymyślić bibliotekę, która zrobi to nawet na platformie innej niż Windows, będę szczęśliwy. Chciałbym móc sprawdzić .EXE jest podpisany przez Microsoft z poziomu systemu Linux. – bobince

+2

@bobince, Mono posiada zarówno narzędzia ** signcode **, jak i ** chturust **, które działają (jeśli instalujesz wymagane certyfikaty główne) na każdej platformie obsługiwanej przez Mono (S390x jeśli chcesz ;-) – poupou

Odpowiedz

0

Jeśli podpis jest ważny, jego łańcuch certyfikatów będzie zawierać certyfikat. CertGetCertificateChain dostanie ten łańcuch.

+1

Czy masz na myśli to struktura WINTRUST_DATA zawiera certyfikat? A może CertGetCertificateChain może być użyty bezpośrednio na pliku - po prostu nie wiem, jak to zrobić. Muszę pominąć coś oczywistego. Z góry dzięki za więcej szczegółów. –

Powiązane problemy