ドライバーの Authenticode 署名を検証するための SetupAPI の使用
次の手順を使用して、ドライバー パッケージに有効な Authenticode デジタル署名があることを確認できます。 これらの手順は、Microsoft Windows Server 2003 以降でサポートされています。
ドライバーに有効な Authenticode 署名があるか確認するには
DNF_AUTHENTICODE_SIGNED フラグを確認します。
ドライバー パッケージに有効な Authenticode 署名がある場合、Windows はドライバー ノードの SP_DRVINSTALL_PARAMS 構造体の Flags メンバーにこのフラグを設定します。 (また、ドライバーに WHQL release signature がある場合、システム提供のドライバーである場合、Authenticode 署名がある場合には、Windows によって DNF_INF_IS_SIGNED フラグが設定されることにもご留意ください。)
INF ファイルに有効な Authenticode 署名があることを確認するには
SetupVerifyInfFile を呼び出します。
関数によって返されたエラー コードを確認します。
システム提供の INF ファイルではない場合、ファイルに有効な WHQL デジタル署名がなく、かつ有効な Authenticode 署名はある場合には、SetupVerifyInfFile は FALSE を返し、GetLastError は次のいずれかのエラー コードを返します。
ERROR_AUTHENTICODE_TRUSTED_PUBLISHER
発行元証明書が信頼された発行元の証明書ストアにインストールされているため、 発行元が信頼されていることを示します。ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED
発行元の署名証明書が信頼された発行元証明書ストアにインストールされていないため、信頼を自動的に確立できないことを示します。 ただし、これは必ずしもエラーを示すものではありません。 このコードが示すのは、呼び出し元が発行元の信頼を確立するために呼び出し元固有のポリシーを適用する必要があることです。
INF ファイルに有効な Authenticode 署名がある場合、SetupVerifyInfFile は、SP_INF_SIGNER_INFO 出力構造で次の情報も返します。
DigitalSigner メンバーは署名者の名前に設定されます。
CatalogFile メンバーは、対応する署名済みカタログ ファイルの完全パスに設定されます。
ただし、SetupVerifyInfFile は DigitalSignerVersion メンバーのバージョンを返さないことにご留意ください。
ファイルに有効な Authenticode 署名があることを確認するには
SPQ_SCAN_U Standard Edition_CALLBACK_SIGNERINFO フラグを使用して SetupAPI 関数 SetupScanFileQueue を呼び出します。
SetupScanFileQueue は、呼び出し元のコールバック ルーチンに SPFILENOTIFY_QUEUESCAN_SIGNERINFO 要求を送信し、FILEPATHS_SIGNERINFO 構造体へのポインターを渡します。 ファイルが有効な Authenticode 署名で署名済みの場合、この関数は、ファイルのコールバック ルーチンを呼び出す前に、エラー コードを適切な ERROR_AUTHENTICODE_Xxx 値に設定します。 この関数は、FILEPATHS_SIGNERINFO 構造体に次の情報も設定します。
DigitalSigner メンバーは署名者の名前に設定されます。
CatalogFile メンバーは、対応する署名済みカタログ ファイルの完全パスに設定されます。
ただし、Version メンバーでバージョンは設定されないことにご留意ください。
SetupScanFileQueue は、上記の SetupVerifyInfFile についての説明と同様に、ERROR_AUTHENTICODE_Xxx エラー コードを設定します。