📄 cspdk.h
字号:
/*++
Copyright (C) Microsoft Corporation, 2000
Module Name:
cspdk
Abstract:
This header file contains the definitions and references that every CSP
needs to know.
Author:
Doug Barlow (dbarlow) 1/27/2000
--*/
#ifndef _CSPDK_H_
#define _CSPDK_H_
#ifdef __cplusplus
extern "C" {
#endif
#define CRYPT_PROVSTRUC_VERSION_V3 3
#define CRYPT_MAX_PROVIDER_ID 999
#define CRYPT_SIG_RESOURCE_VERSION 0x00000100
#define CRYPT_EXTERNAL_SIGNATURE_LENGTH 136
#define CRYPT_SIG_RESOURCE_NUMBER 0x29A
#define CRYPT_SIG_RESOURCE TEXT("#666")
#define CRYPT_MAC_RESOURCE_NUMBER 0x29B
#define CRYPT_MAC_RESOURCE TEXT("#667")
// Exponentiation Offload Reg Location
#define EXPO_OFFLOAD_REG_VALUE "ExpoOffload"
#define EXPO_OFFLOAD_FUNC_NAME "OffloadModExpo"
typedef struct _OFFLOAD_PRIVATE_KEY
{
DWORD dwVersion;
DWORD cbPrime1;
DWORD cbPrime2;
PBYTE pbPrime1; // "p"
PBYTE pbPrime2; // "q"
} OFFLOAD_PRIVATE_KEY, *POFFLOAD_PRIVATE_KEY;
#define CUR_OFFLOAD_VERSION 1
//
// Callback prototypes
//
typedef BOOL (WINAPI *CRYPT_VERIFY_IMAGE_A)(LPCSTR szImage, CONST BYTE *pbSigData);
typedef BOOL (WINAPI *CRYPT_VERIFY_IMAGE_W)(LPCWSTR szImage, CONST BYTE *pbSigData);
typedef void (*CRYPT_RETURN_HWND)(HWND *phWnd);
//
// Structures for CSPs
//
typedef struct _VTableProvStruc {
DWORD Version;
CRYPT_VERIFY_IMAGE_A FuncVerifyImage;
CRYPT_RETURN_HWND FuncReturnhWnd;
DWORD dwProvType;
BYTE *pbContextInfo;
DWORD cbContextInfo;
LPSTR pszProvName;
} VTableProvStruc, *PVTableProvStruc;
typedef struct _VTableProvStrucW {
DWORD Version;
CRYPT_VERIFY_IMAGE_W FuncVerifyImage;
CRYPT_RETURN_HWND FuncReturnhWnd;
DWORD dwProvType;
BYTE *pbContextInfo;
DWORD cbContextInfo;
LPWSTR pszProvName;
} VTableProvStrucW, *PVTableProvStrucW;
typedef struct {
DWORD dwVersion;
DWORD dwCrcOffset;
BYTE rgbSignature[88]; // 1024-bit key, plus 2 DWORDs of padding.
} InFileSignatureResource;
//
// ===========================================================================
// CSP Entry points.
// ===========================================================================
//
/*
- CPAcquireContext
-
* Purpose:
* The CPAcquireContext function is used to acquire a context
* handle to a cryptographic service provider (CSP).
*
*
* Parameters:
* OUT phProv - Handle to a CSP
* IN szContainer - Pointer to a string which is the
* identity of the logged on user
* IN dwFlags - Flags values
* IN pVTable - Pointer to table of function pointers
*
* Returns:
*/
extern BOOL WINAPI
CPAcquireContext(
OUT HCRYPTPROV *phProv,
IN LPCSTR szContainer,
IN DWORD dwFlags,
IN PVTableProvStruc pVTable);
/*
- CPAcquireContextW
-
* Purpose:
* The CPAcquireContextW function is used to acquire a context
* handle to a cryptographic service provider (CSP). using
* UNICODE strings. This is an optional entry point for a CSP.
* It is not used prior to Whistler. There it is used if
* exported by the CSP image, otherwise any string conversions
* are done, and CPAcquireContext is called.
*
*
* Parameters:
* OUT phProv - Handle to a CSP
* IN szContainer - Pointer to a string which is the
* identity of the logged on user
* IN dwFlags - Flags values
* IN pVTable - Pointer to table of function pointers
*
* Returns:
*/
extern BOOL WINAPI
CPAcquireContextW(
OUT HCRYPTPROV *phProv,
IN LPCWSTR szContainer,
IN DWORD dwFlags,
IN PVTableProvStrucW pVTable);
/*
- CPReleaseContext
-
* Purpose:
* The CPReleaseContext function is used to release a
* context created by CryptAcquireContext.
*
* Parameters:
* IN phProv - Handle to a CSP
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPReleaseContext(
IN HCRYPTPROV hProv,
IN DWORD dwFlags);
/*
- CPGenKey
-
* Purpose:
* Generate cryptographic keys
*
*
* Parameters:
* IN hProv - Handle to a CSP
* IN Algid - Algorithm identifier
* IN dwFlags - Flags values
* OUT phKey - Handle to a generated key
*
* Returns:
*/
extern BOOL WINAPI
CPGenKey(
IN HCRYPTPROV hProv,
IN ALG_ID Algid,
IN DWORD dwFlags,
OUT HCRYPTKEY *phKey);
/*
- CPDeriveKey
-
* Purpose:
* Derive cryptographic keys from base data
*
*
* Parameters:
* IN hProv - Handle to a CSP
* IN Algid - Algorithm identifier
* IN hBaseData - Handle to base data
* IN dwFlags - Flags values
* OUT phKey - Handle to a generated key
*
* Returns:
*/
extern BOOL WINAPI
CPDeriveKey(
IN HCRYPTPROV hProv,
IN ALG_ID Algid,
IN HCRYPTHASH hHash,
IN DWORD dwFlags,
OUT HCRYPTKEY *phKey);
/*
- CPDestroyKey
-
* Purpose:
* Destroys the cryptographic key that is being referenced
* with the hKey parameter
*
*
* Parameters:
* IN hProv - Handle to a CSP
* IN hKey - Handle to a key
*
* Returns:
*/
extern BOOL WINAPI
CPDestroyKey(
IN HCRYPTPROV hProv,
IN HCRYPTKEY hKey);
/*
- CPSetKeyParam
-
* Purpose:
* Allows applications to customize various aspects of the
* operations of a key
*
* Parameters:
* IN hProv - Handle to a CSP
* IN hKey - Handle to a key
* IN dwParam - Parameter number
* IN pbData - Pointer to data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPSetKeyParam(
IN HCRYPTPROV hProv,
IN HCRYPTKEY hKey,
IN DWORD dwParam,
IN CONST BYTE *pbData,
IN DWORD dwFlags);
/*
- CPGetKeyParam
-
* Purpose:
* Allows applications to get various aspects of the
* operations of a key
*
* Parameters:
* IN hProv - Handle to a CSP
* IN hKey - Handle to a key
* IN dwParam - Parameter number
* OUT pbData - Pointer to data
* IN pdwDataLen - Length of parameter data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPGetKeyParam(
IN HCRYPTPROV hProv,
IN HCRYPTKEY hKey,
IN DWORD dwParam,
OUT LPBYTE pbData,
IN OUT LPDWORD pcbDataLen,
IN DWORD dwFlags);
/*
- CPSetProvParam
-
* Purpose:
* Allows applications to customize various aspects of the
* operations of a provider
*
* Parameters:
* IN hProv - Handle to a CSP
* IN dwParam - Parameter number
* IN pbData - Pointer to data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPSetProvParam(
IN HCRYPTPROV hProv,
IN DWORD dwParam,
IN CONST BYTE *pbData,
IN DWORD dwFlags);
/*
- CPGetProvParam
-
* Purpose:
* Allows applications to get various aspects of the
* operations of a provider
*
* Parameters:
* IN hProv - Handle to a CSP
* IN dwParam - Parameter number
* OUT pbData - Pointer to data
* IN OUT pdwDataLen - Length of parameter data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPGetProvParam(
IN HCRYPTPROV hProv,
IN DWORD dwParam,
OUT LPBYTE pbData,
IN OUT LPDWORD pcbDataLen,
IN DWORD dwFlags);
/*
- CPSetHashParam
-
* Purpose:
* Allows applications to customize various aspects of the
* operations of a hash
*
* Parameters:
* IN hProv - Handle to a CSP
* IN hHash - Handle to a hash
* IN dwParam - Parameter number
* IN pbData - Pointer to data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPSetHashParam(
IN HCRYPTPROV hProv,
IN HCRYPTHASH hHash,
IN DWORD dwParam,
IN CONST BYTE *pbData,
IN DWORD dwFlags);
/*
- CPGetHashParam
-
* Purpose:
* Allows applications to get various aspects of the
* operations of a hash
*
* Parameters:
* IN hProv - Handle to a CSP
* IN hHash - Handle to a hash
* IN dwParam - Parameter number
* OUT pbData - Pointer to data
* IN pdwDataLen - Length of parameter data
* IN dwFlags - Flags values
*
* Returns:
*/
extern BOOL WINAPI
CPGetHashParam(
IN HCRYPTPROV hProv,
IN HCRYPTHASH hHash,
IN DWORD dwParam,
OUT LPBYTE pbData,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -