|
|
/*++
Copyright (C) Microsoft Corporation, 1996 - 1999
Module Name:
cspDirect
Abstract:
This header file provides direct linkage to a CSP, so it does not have to be in a separate DLL. This facilitates code generation and debugging.
Author:
Doug Barlow (dbarlow) 5/8/1996
Environment:
Win32
Notes:
?Notes?
--*/
#ifdef CSP_DIRECT
#ifndef _CSPDIRECT_H_
#define _CSPDIRECT_H_
#ifdef __cplusplus
extern "C" { #endif
#define CSPBOOL BOOL WINAPI
#undef CryptAcquireContext
#ifdef UNICODE
#define CryptAcquireContext CSPAcquireContextW
#else
#define CryptAcquireContext CSPAcquireContextA
#endif
#define CryptReleaseContext CSPReleaseContext
#define CryptGenKey CSPGenKey
#define CryptDeriveKey CSPDeriveKey
#define CryptDestroyKey CSPDestroyKey
#define CryptSetKeyParam CSPSetKeyParam
#define CryptGetKeyParam CSPGetKeyParam
#define CryptSetHashParam CSPSetHashParam
#define CryptGetHashParam CSPGetHashParam
#define CryptSetProvParam CSPSetProvParam
#define CryptGetProvParam CSPGetProvParam
#define CryptGenRandom CSPGenRandom
#define CryptGetUserKey CSPGetUserKey
#define CryptExportKey CSPExportKey
#define CryptImportKey CSPImportKey
#define CryptEncrypt CSPEncrypt
#define CryptDecrypt CSPDecrypt
#define CryptCreateHash CSPCreateHash
#define CryptHashData CSPHashData
#define CryptHashSessionKey CSPHashSessionKey
// #define CryptGetHashValue CSPGetHashValue
#define CryptDestroyHash CSPDestroyHash
#undef CryptSignHash
#ifdef UNICODE
#define CryptSignHash CSPSignHashW
#else
#define CryptSignHash CSPSignHashA
#endif
#undef CryptVerifySignature
#ifdef UNICODE
#define CryptVerifySignature CSPVerifySignatureW
#else
#define CryptVerifySignature CSPVerifySignatureA
#endif
#undef CryptSetProvider
#ifdef UNICODE
#define CryptSetProvider CSPSetProviderW
#else
#define CryptSetProvider CSPSetProviderA
#endif
extern CSPBOOL CSPAcquireContextA( HCRYPTPROV *phProv, LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags);
extern CSPBOOL CSPAcquireContextW( HCRYPTPROV *phProv, LPCWSTR pszContainer, LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags);
extern CSPBOOL CSPReleaseContext( HCRYPTPROV hProv, DWORD dwFlags);
extern CSPBOOL CSPGenKey( HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey);
extern CSPBOOL CSPDeriveKey( HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey);
extern CSPBOOL CSPDestroyKey( HCRYPTKEY hKey);
extern CSPBOOL CSPSetKeyParam( HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
extern CSPBOOL CSPGetKeyParam( HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
extern CSPBOOL CSPSetHashParam( HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
extern CSPBOOL CSPGetHashParam( HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
extern CSPBOOL CSPSetProvParam( HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
extern CSPBOOL CSPGetProvParam( HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
extern CSPBOOL CSPGenRandom( HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
extern CSPBOOL CSPGetUserKey( HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey);
extern CSPBOOL CSPExportKey( HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
extern CSPBOOL CSPImportKey( HCRYPTPROV hProv, CONST BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey);
extern CSPBOOL CSPEncrypt( HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen);
extern CSPBOOL CSPDecrypt( HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
extern CSPBOOL CSPCreateHash( HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash);
extern CSPBOOL CSPHashData( HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen, DWORD dwFlags);
extern CSPBOOL CSPHashSessionKey( HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags);
/*
extern CSPBOOL CSPGetHashValue( HCRYPTHASH hHash, DWORD dwFlags, BYTE *pbHash, DWORD *pdwHashLen); */
extern CSPBOOL CSPDestroyHash( HCRYPTHASH hHash);
extern CSPBOOL CSPSignHashA( HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
extern CSPBOOL CSPSignHashW( HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
extern CSPBOOL CSPVerifySignatureA( HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCSTR sDescription, DWORD dwFlags);
extern CSPBOOL CSPVerifySignatureW( HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags);
extern CSPBOOL CSPSetProviderA( LPCSTR pszProvName, DWORD dwProvType);
extern CSPBOOL CSPSetProviderW( LPCWSTR pszProvName, DWORD dwProvType);
//
// CSP Entry points.
//
extern BOOL WINAPI CPAcquireContext( OUT HCRYPTPROV *phProv, LPCTSTR pszContainer, IN DWORD dwFlags, IN PVTableProvStruc pVTable);
extern BOOL WINAPI CPAcquireContextEx( OUT HCRYPTPROV *phProv, LPCTSTR pszContainer, IN DWORD dwFlags, IN LPCVOID pvParams, IN PVTableProvStruc pVTable);
extern BOOL WINAPI CPReleaseContext( IN HCRYPTPROV hProv, IN DWORD dwFlags);
extern BOOL WINAPI CPGenKey( IN HCRYPTPROV hProv, IN ALG_ID Algid, IN DWORD dwFlags, OUT HCRYPTKEY *phKey);
extern BOOL WINAPI CPDeriveKey( IN HCRYPTPROV hProv, IN ALG_ID Algid, IN HCRYPTHASH hHash, IN DWORD dwFlags, OUT HCRYPTKEY * phKey);
extern BOOL WINAPI CPDestroyKey( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey);
extern BOOL WINAPI CPSetKeyParam( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey, IN DWORD dwParam, IN BYTE *pbData, IN DWORD dwFlags);
extern BOOL WINAPI CPGetKeyParam( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey, IN DWORD dwParam, OUT BYTE *pbData, IN DWORD *pdwDataLen, IN DWORD dwFlags);
extern BOOL WINAPI CPSetProvParam( IN HCRYPTPROV hProv, IN DWORD dwParam, IN BYTE *pbData, IN DWORD dwFlags);
extern BOOL WINAPI CPGetProvParam( IN HCRYPTPROV hProv, IN DWORD dwParam, IN BYTE *pbData, IN OUT DWORD *pdwDataLen, IN DWORD dwFlags);
extern BOOL WINAPI CPSetHashParam( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN DWORD dwParam, IN BYTE *pbData, IN DWORD dwFlags);
extern BOOL WINAPI CPGetHashParam( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN DWORD dwParam, OUT BYTE *pbData, IN DWORD *pdwDataLen, IN DWORD dwFlags);
extern BOOL WINAPI CPExportKey( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey, IN HCRYPTKEY hPubKey, IN DWORD dwBlobType, IN DWORD dwFlags, OUT BYTE *pbData, IN OUT DWORD *pdwDataLen);
extern BOOL WINAPI CPImportKey( IN HCRYPTPROV hProv, IN CONST BYTE *pbData, IN DWORD dwDataLen, IN HCRYPTKEY hPubKey, IN DWORD dwFlags, OUT HCRYPTKEY *phKey);
extern BOOL WINAPI CPEncrypt( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey, IN HCRYPTHASH hHash, IN BOOL Final, IN DWORD dwFlags, IN OUT BYTE *pbData, IN OUT DWORD *pdwDataLen, IN DWORD dwBufLen);
extern BOOL WINAPI CPDecrypt( IN HCRYPTPROV hProv, IN HCRYPTKEY hKey, IN HCRYPTHASH hHash, IN BOOL Final, IN DWORD dwFlags, IN OUT BYTE *pbData, IN OUT DWORD *pdwDataLen);
extern BOOL WINAPI CPCreateHash( IN HCRYPTPROV hProv, IN ALG_ID Algid, IN HCRYPTKEY hKey, IN DWORD dwFlags, OUT HCRYPTHASH *phHash);
extern BOOL WINAPI CPHashData( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN CONST BYTE *pbData, IN DWORD dwDataLen, IN DWORD dwFlags);
extern BOOL WINAPI CPHashSessionKey( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN HCRYPTKEY hKey, IN DWORD dwFlags);
extern BOOL WINAPI CPSignHash( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN DWORD dwKeySpec, IN LPCTSTR sDescription, IN DWORD dwFlags, OUT BYTE *pbSignature, IN OUT DWORD *pdwSigLen);
/*
extern BOOL WINAPI CPGetHashValue( IN HCRYPTPROV g_hProv, IN HCRYPTHASH hHash, IN DWORD dwFlags, OUT BYTE *pbHash, IN OUT DWORD *pdwHashLen); */
extern BOOL WINAPI CPDestroyHash( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash);
extern BOOL WINAPI CPSignHash( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN DWORD dwKeySpec, IN LPCTSTR sDescription, IN DWORD dwFlags, OUT BYTE *pbSignature, IN OUT DWORD *pdwSigLen);
extern BOOL WINAPI CPVerifySignature( IN HCRYPTPROV hProv, IN HCRYPTHASH hHash, IN CONST BYTE *pbSignature, IN DWORD dwSigLen, IN HCRYPTKEY hPubKey, IN LPCTSTR sDescription, IN DWORD dwFlags);
extern BOOL WINAPI CPGenRandom( IN HCRYPTPROV hProv, IN DWORD dwLen, IN OUT BYTE *pbBuffer);
extern BOOL WINAPI CPGetUserKey( IN HCRYPTPROV hProv, IN DWORD dwKeySpec, OUT HCRYPTKEY *phUserKey);
#ifdef __cplusplus
} #endif
#endif
#endif // _CSPDIRECT_H_
|