カタログ ファイルとデジタル署名

デジタル署名されたカタログ ファイル (.cat) は、ファイルの任意のコレクションのデジタル署名として使用できます。 カタログ ファイルには、暗号法のハッシュまたは拇印のコレクションが含まれています。 各拇印は、コレクションに含まれるファイルに対応します。

プラグ アンド プレイ (PnP) デバイスのインストールでは、ドライバー パッケージの署名付きカタログ ファイルがドライバー パッケージのデジタル署名として認識されます。カタログ ファイル内の各拇印が、ドライバー パッケージによってインストールされるファイルに対応します。 目的のオペレーティング システムに関係なく、暗号化テクノロジが使用されて、カタログ ファイルにデジタル署名します。

PnP デバイスのインストールでは、ドライバー パッケージの署名後にドライバー パッケージ内のファイルが変更された場合、ドライバー パッケージのデジタル署名は無効と見なされます。 このようなファイルには、INF ファイル、カタログ ファイル、および INF CopyFiles ディレクティブによって コピーされるすべてのファイルが含まれます。 たとえば、スペルミスを修正するために 1 バイトの変更を行っても、デジタル署名は無効になります。 デジタル署名が無効な場合、新しい署名のためにドライバー パッケージを Windows Hardware Quality Labs (WHQL) に再送信するか、ドライバー パッケージ用の新しい Authenticode 署名を生成する必要があります。

同様に、デバイスのハードウェアまたはファームウェアを変更するには、システムが更新されたデバイスを検出して、正しいドライバーをインストールできるように、更新されたデバイス ID 値が必要です。 変更後のデバイス ID の値は INF ファイルに表示される必要があるため、新しい署名のためにパッケージを WHQL に再送信するか、ドライバー パッケージの新しい Authenticode 署名を生成する必要があります。 ドライバー バイナリが変更されない場合でも、これを行う必要があります。

ドライバーの INF ファイルの INF Version セクションのCatalogFile ディレクティブは、ドライバー パッケージのカタログ ファイルの名前を指定します。 ドライバーのインストール中、オペレーティング システムは CatalogFile ディレクティブを使用して、カタログ ファイルを識別して検証します。 システムは、GetSystemDirectory によって返されたシステム ディレクトリの CatRoot ディレクトリ (たとえば、%SystemRoot%\System32\CatRoot) にカタログ ファイルをインストールします。 カタログ ファイルを、そのディレクトリに手動で追加したり、そのディレクトリから削除したりしないでください。 ドライバー パッケージの場合、ドライバー パッケージがドライバー ストアにステージングされると、カタログ ファイルは CatRoot に自動的にインストールされ、ドライバー パッケージがドライバー ストアから削除されると、CatRoot から自動的にアンインストールされます。 ドライバー パッケージ以外の理由でカタログ ファイルを CatRoot にインストールする必要がある場合は、「SignTool を使用したカタログ ファイルのインストール」「CryptCATAdminAddCatalog を使用したカタログ ファイルのインストール」 を参照してください。

カタログ ファイルに関するガイドライン

Windows 2000 以降、ドライバー パッケージによってすべてのバージョンの Windows に同じバイナリがインストールされる場合、INF ファイルは単一の非修飾の CatalogFile ディレクティブを含むことができます。 ただし、パッケージが Windows のバージョンごとに異なるバイナリをインストールする場合、INF ファイルは修飾された CatalogFile ディレクティブを含む必要があります。 CatalogFile ディレクティブの詳細については、「INF Version セクション」を参照してください。

複数のドライバー パッケージがある場合は、ドライバー パッケージごとに個別のカタログ ファイルを作成し、各カタログ ファイルに一意のファイル名を付ける必要があります。 関連付けられていない 2 つのドライバー パッケージは、1 つのカタログ ファイルを共有できません。 ただし、複数のデバイスをサポートする 1 つのドライバー パッケージに必要なカタログ ファイルは 1 つだけです。