私の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
、特定の実行可能ファイルでそれを使用することに関する情報はありません。