Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _CSPDEFS_H_
#define _CSPDEFS_H_
#include <windows.h>
#include <wincrypt.h>
#include "carddefs.h"
#include "cspcache.h"
/*
CSP Specific entry points. Wrappers for card-specific entry points.
CSPQueryCapabilities CSPEnumContainers CSPDeleteContainer CSPCreateContainer CSPGetContainerInfo CSPSubmitPin CSPChangePin CSPReadFile CSPWriteFile CSPDeleteFile CSPEnumFiles CSPQueryFreeSpace CSPRsaDecrypt CSPEnumKeySizes */
//
// Type: CSP_PROV_CTX
//
// Purpose: This is the HCRYPTPROV struct for the MS SmartCard CSP
//
typedef struct _CSP_PROV_CTX { // hProv disposition - VERIFYCONTEXT, MACHINE_CONTEXT, etc.
// Used to verify correct access per-call as appropriate.
DWORD dwCtxDisposition;
// Associate this prov handle with a specific card
CHAR rgszCardSerialNumber[cchCARD_SERIAL_NUMBER];
// Redirect calls to this context to the software CSP
BOOL fRedirect;
PCARD_CACHE pCardCache; LPSTR pszContName; //CONTAINER_INFO ContInfo;
//PBYTE pbCertData;
// Context data from advapi
PBYTE pbContextInfo; DWORD cbContextInfo; LPSTR pszProvName; } CSP_PROV_CTX, *PCSP_PROV_CTX;
//
// Type: CSP_KEY_CTX
//
// Purpose: This is the HCRYPTKEY struct for the MS SmartCard CSP
//
typedef struct _CSP_KEY_CTX { PCSP_PROV_CTX pProvCtx; HCRYPTKEY hRedirectKey; } CSP_KEY_CTX, *PCSP_KEY_CTX;
//
// Type: CSP_HASH_CTX
//
// Purpose: This is the HCRYPTHASH struct for the MS SmartCard CSP
//
typedef struct _CSP_HASH_CTX { PCSP_PROV_CTX pProvCtx; HCRYPTHASH hRedirectHash; } CSP_HASH_CTX, *PCSP_HASH_CTX;
//
// Type: CARD_CACHE_ITEM
//
// Purpose: For card data to be stored in a Cache List, this struct
// is the data type to be cached with each key.
//
typedef struct _CARD_CACHE_ITEM { DWORD dwCacheStamp; PBYTE pbData; DWORD cbData; } CARD_CACHE_ITEM, *PCARD_CACHE_ITEM;
//
// Type: CARD_CACHE
//
// Purpose: This is the process-wide cache containing data from
// the SmartCard currently in use.
//
typedef struct _CARD_CACHE {
// Increment each time this instance is referenced
// by a new hProv. Decrement each time a referring
// context is released.
DWORD dwRefCount;
// Cached data for this card
PCARD_CAPABILITIES pCardCapabilities; DWORD dwCardCapabilitiesCacheStamp;
PCARD_FREE_SPACE pCardFreeSpace; DWORD dwCardFreeSpaceCacheStamp; CACHE_HANDLE hCardFileCache; CACHE_HANDLE hCardContainerCache; //PINCACHE_HANDLE hPinCache;
CHAR rgszCardSerialNumber[cchCARD_SERIAL_NUMBER]; LPSTR pszDefContName; DWORD dwDefContNameCacheStamp;
PCARD_DATA pCardData; PCARD_KEY_SIZES pSignatureKeySizes; PCARD_KEY_SIZES pExchangeKeySizes; HCRYPTPROV hRedirectCtx; CRITICAL_SECTION CritSec; } CARD_CACHE, *PCARD_CACHE;
//
// Type: CSP_DATA
//
// Purpose: Global CSP data.
//
typedef struct _CSP_DATA { HCRYPTPROV hRedirectCtx; DWORD dwInitRedirectCtx;
// This critsec is used to protect hCachedCards
CRITICAL_SECTION CritSec;
// Each item in the hCachedCards cache list
// is cached as type CARD_CACHE.
CACHE_HANDLE hCachedCards; } CSP_DATA, *PCSP_DATA;
#endif
|