Поделиться через


указатель на функцию CRYPT_VERIFY_IMAGE

Функция обратного вызова FuncVerifyImage используется поставщиком служб шифрования (CSP) для проверки подписи библиотеки DLL.

Все вспомогательные библиотеки DLL, в которые CSP выполняет вызовы функций, должны быть подписаны тем же способом (и с тем же ключом), что и основная библиотека DLL CSP. Чтобы обеспечить эту сигнатуру, вспомогательные библиотеки DLL должны загружаться динамически с помощью функции LoadLibrary . Но перед загрузкой библиотеки DLL необходимо проверить подпись библиотеки DLL. CSP выполняет эту проверку, вызывая функцию FuncVerifyImage , как показано в примере ниже.

Синтаксис

typedef BOOL ( WINAPI *CRYPT_VERIFY_IMAGE)(
  _In_       LPCTSTR lpszImage,
  _In_ const BYTE    *pbSigData
);

Параметры

lpszImage [in]

Адрес строки с пустым завершением, содержащей путь и имя файла библиотеки DLL для проверки подписи.

pbSigData [in]

Адрес буфера, содержащего сигнатуру.

Возвращаемое значение

Возвращает значение TRUE , если функция выполнена успешно, и FALSE , если функция завершается ошибкой.

Примеры

В следующем примере показано, как использовать функцию обратного вызова FuncVerifyImage для проверки подписи библиотеки DLL перед ее загрузкой поставщиком служб конфигурации.

BOOL (FARPROC *ProvVerifyImage)(LPCSTR lpszImage, BYTE *pSigData);


//  "ProvVerifyImage" has been set to "pVTable->FuncVerifyImage"
//  within the CPAcquireContext function.

//  bSignature is a previously assigned BYTE array that contains the
//  signature that is stored in the C:\Winnt40\System32\signature.sig
//  file. During development, this file is created with the 
//  Sign.exe tool.
...


//  Verify the signature in the
//  C:\Winnt40\System32\Signature.dll file.
if(RCRYPT_FAILED(ProvVerifyImage
    ("c:\\winnt40\\system32\\signature.dll",
        bSignature)) {
    SetLastError(NTE_BAD_SIGNATURE);
    return CRYPT_FAILED;
}

//  Load the DLL with the LoadLibrary function, then acquire pointers 
//  to the functions with the GetProcAddress function.
//...

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Заголовок
Cspdk.h

См. также раздел

CPAcquireContext

VTableProvStruc