В моем приложении 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
, однако никакой информации об использовании этого для данного исполняемого файла не было.