W mojej aplikacji C#
/.NET
muszę sprawdzenia, czy dany plik wykonywalny jest podpisany cyfrowo(najlepiej bez Exception
testowania.)Sprawdź, czy dany plik wykonywalny jest podpisany cyfrowo i czy jest ważny?
Wtedy muszę czeku, jeśli jego certyfikat jest ważny(na podstawie zainstalowane certyfikaty główne) i , jeśli treść plików jest ważna dla podpisu.
Istnieje tak wiele klas w BCL
, nie wiem od czego zacząć & co używać i nic znalazłem do tej pory nie eliminuje moje zamieszanie ...
ja jak zrobić coś takiego, bezP/Invoke
jeśli to możliwe:
bool IsSignedFile(string path);
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);
Dodano wyjaśnienia:
Obecnie największym problemem jest to, że nie znajduję sposobu na łatwe uzyskanie podpisu takiego pliku. Nadal mam nadzieję, że istnieje dostarczone, zarządzane, BCL
rozwiązanie, ponieważ byłbym zaskoczony, gdyby dokładnie tej części brakuje. (Dla certyfikatu można to zrobić tylko za pomocą X509Certificate.CreateFromSignedFile
, sprawdzając także, czy jest to możliwe)
Wolałbym nie mieszać tej 50% pracy wykonanej z kodem P/Invoke
lub dużej innej biblioteki.
Znalazłem klasę AuthenticodeSignatureInformation
, brak informacji o tym, że dla danego pliku wykonywalnego.
Możliwy duplikat http://stackoverflow.com/questions/7622732/c-how-to-detect-tampering-of- authentode-signed-file – DeCaf
Mam nadzieję, że nie będzie to duplikat pytania, na które nie ma odpowiedzi;) – ordag
Pytanie, z którym się wiąże, ma trzy odpowiedzi z tego, co widzę. (Żaden z nich nie został przyjęty, ale to nie znaczy, że nie są istotne). Jest inny podobny w http: // stackoverflow.com/questions/301024/validate-authentode-signature-on-exe-c-without-capicom, ale wszystko wskazuje na to, że korzystanie z p/invoke jest niestety wymagane. – DeCaf