8

.NET 3.0 C# アプリで CAPICOM を使用して、exe ファイルの Authenticode 署名を確認しています。証明書が信頼できる発行元としてリストされていることを確認する必要があります。を使用signedCode.Verify(true)すると、証明書がまだ信頼されていない場合にダイアログが表示されるため、ユーザーは信頼するかどうかを選択できます。ただし、signedCode.Verify(false)信頼できる発行元からのものでなくても署名を検証しています。おそらく、これは証明書が有効であることを確認しているだけです。

UI を使用せずに、ファイルの署名が有効で信頼できる証明書からのものであることを確認するにはどうすればよいですか?

4

3 に答える 3

2

まず、StrongNameSignatureVerificationExはアセンブリ署名の検証用であり、Authenticode 署名の検証用ではありません。したがって、これは元の投稿者の質問の文脈とは関係ありません。

最初の質問に関しては、次のコードを使用して、GUI を使用せずに、署名者証明書が信頼できるルートに正しくチェーンされていることを手動で確認できます。

ICertificateStatus certStatus = signedCode.Signer.Certificate.IsValid();

アイデアは、署名者の証明書を取得し、CAPICom に正しい信頼チェーンがあるかどうかを確認するように指示することです。

これが役立つことを願っています。乾杯、

Mounir IDRASSI、IDRIX、http: //www.idrix.fr

于 2011-04-25T17:58:59.883 に答える
0

おそらくあなたがする必要があるのはStrongNameSignatureVerificationEx、P/Invokeでmscoree.dll関数を介して公開されたものを使用することです。

[DllImport("mscoree.dll", CharSet=CharSet.Unicode)]
static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification, ref bool  pfWasVerified);
于 2011-04-13T03:27:26.810 に答える
0

ここに示すように、WinVerifyTrust を使用できます。Windows XP/Vista/2008/7 で美しく動作します。失効リストセットも確認​​したい場合

RevocationChecks = WinTrustDataRevocationChecks.WholeChain;
于 2011-05-05T06:27:10.170 に答える