Нам нужно проверить, что двоичные файлы правильно подписаны с цифровой подписью (Authenticode). Этого можно добиться с помощью signtool.exe довольно легко. Однако нам нужен автоматический способ, который также проверяет имя подписчика и временную метку. Это можно сделать на нативном С++ с API CryptQueryObject()
, как показано в этом замечательном примере: Как получить информацию из подписанных исполняемых файлов Authenticode
Однако мы живем в управляемом мире:), следовательно, ищем решение С# для той же проблемы. Прямым подходом будет pInvoke Crypt32.dll, и все будет сделано. Но в System.Security.Cryptography.X509Certificates
Namespace имеется аналогичный управляемый API. X509Certificate2
Класс, похоже, предоставляет некоторую информацию, но не временную метку. Теперь мы пришли к первому вопросу, как мы можем получить эту метку цифровой подписи в C Sharp?