次の方法で共有


関数ポインター CRYPT_VERIFY_IMAGE

FuncVerifyImage コールバック関数は、DLL の署名を検証するために暗号化サービス プロバイダー (CSP) によって使用されます。

CSP が関数呼び出しを行うすべての補助 DLL は、プライマリ CSP DLL と同じ方法 (および同じキーを使用) で署名する必要があります。 この署名を確実に行うには、 LoadLibrary 関数を使用して補助 DLL を動的に読み込む必要があります。 ただし、DLL が読み込まれる前に、DLL の署名を検証する必要があります。 次の例に示すように、CSP は FuncVerifyImage 関数を呼び出してこの検証を実行します。

構文

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

パラメーター

lpszImage [in]

署名を検証する DLL のパスとファイル名を含む null で終わる文字列のアドレス。

pbSigData [in]

署名を含むバッファーのアドレス。

戻り値

関数が成功した場合は TRUE 、失敗した場合は FALSE を 返します。

次の例は、 FuncVerifyImage コールバック関数を使用して、CSP によって読み込まれる前に 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