В моем приложении C#
/ .NET
я должен проверить, имеет ли данный исполняемый файл цифровую подпись (желательно без проверки Exception
.)
Затем мне нужно проверить, действителен ли его сертификат (на основе установленных корневых сертификатов) и , если содержимое файлов действительно для подписи .
В BCL
так много классов, что я не знаю, с чего начать и что использовать, и все, что я нашел до сих пор, не устраняет мою путаницу ...
Я хотел бы сделать что-то вроде этого, без P/Invoke
, если возможно:
bool IsSignedFile(string path);
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);
Добавлено уточнение:
Большая проблемаВ настоящее время у меня есть то, что я не нахожу способ получить подпись такого файла простым способом.Все еще надеюсь, что есть предоставленное управляемое решение BCL
, так как я был бы удивлен, если именно эта часть отсутствует. (Для сертификата это может быть сделано только с помощью X509Certificate.CreateFromSignedFile
, проверка также возможна)
Я бы предпочел не смешивать эти 50% выполненной работыс кодом P/Invoke
или большой другой библиотекой.
Я обнаружил класс AuthenticodeSignatureInformation
, однако никакой информации об использовании этого для данного исполняемого файла.