関数ポインター 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 [デスクトップ アプリのみ] |
ヘッダー |
|
関連項目