12

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

4

2 に答える 2

8
于 2011-10-15T20:27:06.150 に答える
4

マネージド ソリューションが見つからない場合に備えて、PInvoke を使用してファイルに有効なデジタル署名があるかどうかを判断する

于 2011-10-15T20:13:09.597 に答える