Проверить, имеет ли данный исполняемый файл цифровую подпись и действителен ли?

В моем приложении 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 / Вызовите код или другую большую библиотеку.

Я нашел класс AuthenticodeSignatureInformation , но никакой информации об его использовании для данного исполняемого файла нет.

12
задан ordag 16 October 2011 в 16:29
поделиться