Файлы каталога и цифровые подписи

Файл каталога с цифровой подписью (CAT) можно использовать в качестве цифровой подписи для произвольной коллекции файлов. Файл каталога содержит коллекцию криптографических хэшей или отпечатков. Каждый отпечаток соответствует файлу, который входит в коллекцию.

Plug and Play установка устройства (PnP) распознает подписанный файл каталога пакета драйверов как цифровую подпись пакета драйверов, где каждый отпечаток в файле каталога соответствует файлу, установленному пакетом драйверов. Независимо от предполагаемой операционной системы, криптографическая технология используется для цифровой подписи файла каталога.

Установка устройства PnP считает, что цифровая подпись пакета драйвера является недопустимой, если какой-либо файл в пакете драйверов изменяется после подписания пакета драйверов. К таким файлам относятся INF-файл, файл каталога и все файлы, скопированные директивами INF CopyFiles. Например, даже однобайтовое изменение для исправления ошибки делает цифровую подпись недействительной. Если цифровая подпись недопустимая, необходимо повторно отправить пакет драйвера в Лаборатории качества оборудования Windows (WHQL) для новой подписи или создать новую подпись Authenticode для пакета драйверов.

Аналогичным образом, изменения оборудования или встроенного ПО устройства требуют изменения значения идентификатора устройства , чтобы система я обнаружила обновленное устройство и установила правильный драйвер. Так как измененное значение идентификатора устройства должно отображаться в INF-файле, необходимо повторно отправить пакет в WHQL для новой сигнатуры или создать новую подпись Authenticode для пакета драйвера. Это необходимо сделать, даже если двоичные файлы драйвера не изменяются.

Директива CatalogFile в разделе INF-версииINF-файла драйвера указывает имя файла каталога для пакета драйвера. Во время установки драйвера операционная система использует директиву CatalogFile для идентификации и проверки файла каталога. Система устанавливает файл каталога в каталог CatRoot в системный каталог, возвращенный GetSystemDirectory, например %SystemRoot%\System32\CatRoot. Обратите внимание, что файлы каталога не следует добавлять в этот каталог или удалять из него вручную. Для пакетов драйверов файл каталога будет автоматически установлен в CatRoot, когда пакет драйвера будет размещен в хранилище драйверов, и будет автоматически удален из CatRoot при удалении пакета драйверов из хранилища драйверов. Если вам нужно установить файл каталога в CatRoot по причинам, не входящим в пакет драйверов, см. статьи Установка файла каталога с помощью SignTool и Установка файла каталога с помощью CryptCATAdminAddCatalog.

Рекомендации по файлам каталога

Начиная с Windows 2000, если пакет драйвера устанавливает одни и те же двоичные файлы во всех версиях Windows, INF-файл может содержать одну директиву CatalogFile без кодирования. Однако если пакет устанавливает разные двоичные файлы для разных версий Windows, INF-файл должен содержать декорированные директивы CatalogFile . Дополнительные сведения о директиве CatalogFile см. в разделе о версии INF.

Если у вас несколько пакетов драйверов, необходимо создать отдельный файл каталога для каждого пакета драйверов и присвоить каждому файлу каталога уникальное имя. Два несвязанных пакета драйверов не могут совместно использовать один файл каталога. Однако для одного пакета драйверов, который обслуживает несколько устройств, требуется только один файл каталога.