問題タブ [winverifytrust]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
208 参照

c++ - WinVerifyTrust は、メモリ BLOB ではなくファイルを使用している場合にのみ機能します

WinVerifyTrustmsiの署名を検証する機能を試しています。

これはファイルシステム上のファイルでは機能しますが、メモリブロブでは機能しません。
問題を示すための私の例のこの基礎は、マイクロソフトのサンプルプログラムです

上記の例では、 は機能しWINTRUST_FILE_INFOますが、WINTRUST_BLOB_INFOは機能しません。メモリブロブで発生するエラーは常にTRUST_E_PROVIDER_UNKNOWN.

問題はWIN_TRUST_SUBJTYPE_RAW_FILE件名の種類にあると思いますが、msi ファイルにどちらを使用すればよいかわかりません。msiファイルのメモリブロブで符号チェックがまったく可能かどうか疑問に思っています。

0 投票する
0 に答える
334 参照

c# - ディスク上のファイルではなく、ファイル ストリーム内の PE ファイルの証明書/デジタル署名の信頼性を検証する方法

ファイルを含むメモリへのポインターを受け取りました。ファイルに証明書 (デジタル署名) が埋め込まれているかどうか、およびそれが有効かどうかを確認する必要があります。過去に、WINTRUST_ACTION_GENERIC_VERIFY_V2 フラグでこれをチェックするために winverifytrust を使用しましたが、これはディスク上のファイルに対してのみです (ディスクに書き込まれる前に、ドライバーからメモリへのポインターを取得しています)。これによると、WINTRUST_BLOB_INFO構造でwinverifytrustを使用することを考えまし:

WinVerifyTrust を呼び出してメモリ BLOB を検証するときに使用されます。

残念ながら、ドキュメントには次のように記載されています。

注: この構造は、現在、次の受信トレイ ファイル形式ではサポートされていません。これら以外にも、サポートされていない形式が存在する場合があります。ポータブル実行可能ファイル (.exe、.dll、.ocx など) Cab ファイル (.cab) カタログ ファイル (.cat)

C# でX509Certificate(byte[])コンストラクターを使用してファイルの証明書を取得し、 X509chain.Build(X509Certificate2)関数を使用してチェーンをチェックすることもできましたが、winverifytrust が行う検証はこれに含まれていません。チェックします (例: ファイルが署名されてから改ざんされていないかどうかをチェックします)。