問題タブ [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.
c++ - WinVerifyTrust は、メモリ BLOB ではなくファイルを使用している場合にのみ機能します
WinVerifyTrust
msiの署名を検証する機能を試しています。
これはファイルシステム上のファイルでは機能しますが、メモリブロブでは機能しません。
問題を示すための私の例のこの基礎は、マイクロソフトのサンプルプログラムです
上記の例では、 は機能しWINTRUST_FILE_INFO
ますが、WINTRUST_BLOB_INFO
は機能しません。メモリブロブで発生するエラーは常にTRUST_E_PROVIDER_UNKNOWN
.
問題はWIN_TRUST_SUBJTYPE_RAW_FILE
件名の種類にあると思いますが、msi ファイルにどちらを使用すればよいかわかりません。msiファイルのメモリブロブで符号チェックがまったく可能かどうか疑問に思っています。
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 が行う検証はこれに含まれていません。チェックします (例: ファイルが署名されてから改ざんされていないかどうかをチェックします)。