805 lines
20 KiB
C
805 lines
20 KiB
C
/*++
|
|
|
|
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"
|
|
|
|
//
|
|
// Exponentiation Offload Entry Point Prototype
|
|
//
|
|
|
|
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
|
|
|
|
typedef BOOL (WINAPI *PFN_OFFLOAD_MOD_EXPO)(
|
|
IN PBYTE pbBase,
|
|
IN PBYTE pbExponent,
|
|
IN DWORD cbExponent,
|
|
IN PBYTE pbModulus,
|
|
IN DWORD cbModulus,
|
|
OUT PBYTE pbResult,
|
|
IN OPTIONAL PVOID pvOffloadPrivateKey,
|
|
IN DWORD dwFlags);
|
|
|
|
//
|
|
// 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,
|
|
IN OUT LPDWORD pcbDataLen,
|
|
IN DWORD dwFlags);
|
|
|
|
|
|
/*
|
|
- CPExportKey
|
|
-
|
|
* Purpose:
|
|
* Export cryptographic keys out of a CSP in a secure manner
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the CSP user
|
|
* IN hKey - Handle to the key to export
|
|
* IN hPubKey - Handle to exchange public key value of
|
|
* the destination user
|
|
* IN dwBlobType - Type of key blob to be exported
|
|
* IN dwFlags - Flags values
|
|
* OUT pbData - Key blob data
|
|
* IN OUT pdwDataLen - Length of key blob in bytes
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPExportKey(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTKEY hKey,
|
|
IN HCRYPTKEY hPubKey,
|
|
IN DWORD dwBlobType,
|
|
IN DWORD dwFlags,
|
|
OUT LPBYTE pbData,
|
|
IN OUT LPDWORD pcbDataLen);
|
|
|
|
|
|
/*
|
|
- CPImportKey
|
|
-
|
|
* Purpose:
|
|
* Import cryptographic keys
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the CSP user
|
|
* IN pbData - Key blob data
|
|
* IN dwDataLen - Length of the key blob data
|
|
* IN hPubKey - Handle to the exchange public key value of
|
|
* the destination user
|
|
* IN dwFlags - Flags values
|
|
* OUT phKey - Pointer to the handle to the key which was
|
|
* Imported
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPImportKey(
|
|
IN HCRYPTPROV hProv,
|
|
IN CONST BYTE *pbData,
|
|
IN DWORD cbDataLen,
|
|
IN HCRYPTKEY hPubKey,
|
|
IN DWORD dwFlags,
|
|
OUT HCRYPTKEY *phKey);
|
|
|
|
|
|
/*
|
|
- CPEncrypt
|
|
-
|
|
* Purpose:
|
|
* Encrypt data
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the CSP user
|
|
* IN hKey - Handle to the key
|
|
* IN hHash - Optional handle to a hash
|
|
* IN Final - Boolean indicating if this is the final
|
|
* block of plaintext
|
|
* IN dwFlags - Flags values
|
|
* IN OUT pbData - Data to be encrypted
|
|
* IN OUT pdwDataLen - Pointer to the length of the data to be
|
|
* encrypted
|
|
* IN dwBufLen - Size of Data buffer
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPEncrypt(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTKEY hKey,
|
|
IN HCRYPTHASH hHash,
|
|
IN BOOL fFinal,
|
|
IN DWORD dwFlags,
|
|
IN OUT LPBYTE pbData,
|
|
IN OUT LPDWORD pcbDataLen,
|
|
IN DWORD cbBufLen);
|
|
|
|
|
|
/*
|
|
- CPDecrypt
|
|
-
|
|
* Purpose:
|
|
* Decrypt data
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the CSP user
|
|
* IN hKey - Handle to the key
|
|
* IN hHash - Optional handle to a hash
|
|
* IN Final - Boolean indicating if this is the final
|
|
* block of ciphertext
|
|
* IN dwFlags - Flags values
|
|
* IN OUT pbData - Data to be decrypted
|
|
* IN OUT pdwDataLen - Pointer to the length of the data to be
|
|
* decrypted
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPDecrypt(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTKEY hKey,
|
|
IN HCRYPTHASH hHash,
|
|
IN BOOL fFinal,
|
|
IN DWORD dwFlags,
|
|
IN OUT LPBYTE pbData,
|
|
IN OUT LPDWORD pcbDataLen);
|
|
|
|
|
|
/*
|
|
- CPCreateHash
|
|
-
|
|
* Purpose:
|
|
* initate the hashing of a stream of data
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hUID - Handle to the user identifcation
|
|
* IN Algid - Algorithm identifier of the hash algorithm
|
|
* to be used
|
|
* IN hKey - Optional handle to a key
|
|
* IN dwFlags - Flags values
|
|
* OUT pHash - Handle to hash object
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPCreateHash(
|
|
IN HCRYPTPROV hProv,
|
|
IN ALG_ID Algid,
|
|
IN HCRYPTKEY hKey,
|
|
IN DWORD dwFlags,
|
|
OUT HCRYPTHASH *phHash);
|
|
|
|
|
|
/*
|
|
- CPHashData
|
|
-
|
|
* Purpose:
|
|
* Compute the cryptograghic hash on a stream of data
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN hHash - Handle to hash object
|
|
* IN pbData - Pointer to data to be hashed
|
|
* IN dwDataLen - Length of the data to be hashed
|
|
* IN dwFlags - Flags values
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPHashData(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash,
|
|
IN CONST BYTE *pbData,
|
|
IN DWORD cbDataLen,
|
|
IN DWORD dwFlags);
|
|
|
|
|
|
/*
|
|
- CPHashSessionKey
|
|
-
|
|
* Purpose:
|
|
* Compute the cryptograghic hash on a key object.
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN hHash - Handle to hash object
|
|
* IN hKey - Handle to a key object
|
|
* IN dwFlags - Flags values
|
|
*
|
|
* Returns:
|
|
* CRYPT_FAILED
|
|
* CRYPT_SUCCEED
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPHashSessionKey(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash,
|
|
IN HCRYPTKEY hKey,
|
|
IN DWORD dwFlags);
|
|
|
|
|
|
/*
|
|
- CPSignHash
|
|
-
|
|
* Purpose:
|
|
* Create a digital signature from a hash
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN hHash - Handle to hash object
|
|
* IN dwKeySpec - Key pair to that is used to sign with
|
|
* IN sDescription - Description of data to be signed
|
|
* IN dwFlags - Flags values
|
|
* OUT pbSignature - Pointer to signature data
|
|
* IN OUT dwHashLen - Pointer to the len of the signature data
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPSignHash(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash,
|
|
IN DWORD dwKeySpec,
|
|
IN LPCWSTR szDescription,
|
|
IN DWORD dwFlags,
|
|
OUT LPBYTE pbSignature,
|
|
IN OUT LPDWORD pcbSigLen);
|
|
|
|
|
|
/*
|
|
- CPDestroyHash
|
|
-
|
|
* Purpose:
|
|
* Destroy the hash object
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN hHash - Handle to hash object
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPDestroyHash(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash);
|
|
|
|
|
|
/*
|
|
- CPVerifySignature
|
|
-
|
|
* Purpose:
|
|
* Used to verify a signature against a hash object
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN hHash - Handle to hash object
|
|
* IN pbSignture - Pointer to signature data
|
|
* IN dwSigLen - Length of the signature data
|
|
* IN hPubKey - Handle to the public key for verifying
|
|
* the signature
|
|
* IN sDescription - String describing the signed data
|
|
* IN dwFlags - Flags values
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPVerifySignature(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash,
|
|
IN CONST BYTE *pbSignature,
|
|
IN DWORD cbSigLen,
|
|
IN HCRYPTKEY hPubKey,
|
|
IN LPCWSTR szDescription,
|
|
IN DWORD dwFlags);
|
|
|
|
|
|
/*
|
|
- CPGenRandom
|
|
-
|
|
* Purpose:
|
|
* Used to fill a buffer with random bytes
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN dwLen - Number of bytes of random data requested
|
|
* IN OUT pbBuffer - Pointer to the buffer where the random
|
|
* bytes are to be placed
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPGenRandom(
|
|
IN HCRYPTPROV hProv,
|
|
IN DWORD cbLen,
|
|
OUT LPBYTE pbBuffer);
|
|
|
|
|
|
/*
|
|
- CPGetUserKey
|
|
-
|
|
* Purpose:
|
|
* Gets a handle to a permanent user key
|
|
*
|
|
*
|
|
* Parameters:
|
|
* IN hProv - Handle to the user identifcation
|
|
* IN dwKeySpec - Specification of the key to retrieve
|
|
* OUT phUserKey - Pointer to key handle of retrieved key
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPGetUserKey(
|
|
IN HCRYPTPROV hProv,
|
|
IN DWORD dwKeySpec,
|
|
OUT HCRYPTKEY *phUserKey);
|
|
|
|
|
|
/*
|
|
- CPDuplicateHash
|
|
-
|
|
* Purpose:
|
|
* Duplicates the state of a hash and returns a handle to it.
|
|
* This is an optional entry. Typically it only occurs in
|
|
* SChannel related CSPs.
|
|
*
|
|
* Parameters:
|
|
* IN hUID - Handle to a CSP
|
|
* IN hHash - Handle to a hash
|
|
* IN pdwReserved - Reserved
|
|
* IN dwFlags - Flags
|
|
* IN phHash - Handle to the new hash
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPDuplicateHash(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTHASH hHash,
|
|
IN LPDWORD pdwReserved,
|
|
IN DWORD dwFlags,
|
|
OUT HCRYPTHASH *phHash);
|
|
|
|
|
|
/*
|
|
- CPDuplicateKey
|
|
-
|
|
* Purpose:
|
|
* Duplicates the state of a key and returns a handle to it.
|
|
* This is an optional entry. Typically it only occurs in
|
|
* SChannel related CSPs.
|
|
*
|
|
* Parameters:
|
|
* IN hUID - Handle to a CSP
|
|
* IN hKey - Handle to a key
|
|
* IN pdwReserved - Reserved
|
|
* IN dwFlags - Flags
|
|
* IN phKey - Handle to the new key
|
|
*
|
|
* Returns:
|
|
*/
|
|
|
|
extern BOOL WINAPI
|
|
CPDuplicateKey(
|
|
IN HCRYPTPROV hProv,
|
|
IN HCRYPTKEY hKey,
|
|
IN LPDWORD pdwReserved,
|
|
IN DWORD dwFlags,
|
|
OUT HCRYPTKEY *phKey);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // _CSPDK_H_
|
|
|