Leaked source code of windows server 2003
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.
 
 
 
 
 
 

225 lines
5.7 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows NT Security
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: scstore.h
//
// Contents: Smart Card Store Provider
//
// History: 11-25-1997 kirtd Created
//
//----------------------------------------------------------------------------
#if !defined(__SCSTORE_H__)
#define __SCSTORE_H__
//
// Store provider open store function name
//
#define SMART_CARD_OPEN_STORE_PROV_FUNC "SmartCardProvOpenStore"
//
// CSmartCardStore. This class implements all callbacks for the Smart Card
// Store provider. A pointer to an instance of this class is used as the
// hStoreProv parameter for the callback functions implemented
//
class CSmartCardStore
{
public:
//
// Construction
//
CSmartCardStore ();
~CSmartCardStore ();
//
// Store functions
//
BOOL OpenStore (
LPCSTR pszStoreProv,
DWORD dwMsgAndCertEncodingType,
HCRYPTPROV hCryptProv,
DWORD dwFlags,
const void* pvPara,
HCERTSTORE hCertStore,
PCERT_STORE_PROV_INFO pStoreProvInfo
);
VOID CloseStore (DWORD dwFlags);
BOOL DeleteCert (PCCERT_CONTEXT pCertContext, DWORD dwFlags);
BOOL SetCertProperty (
PCCERT_CONTEXT pCertContext,
DWORD dwPropId,
DWORD dwFlags,
const void* pvPara
);
BOOL WriteCert (PCCERT_CONTEXT pCertContext, DWORD dwFlags);
BOOL StoreControl (DWORD dwFlags, DWORD dwCtrlType, LPVOID pvCtrlPara);
BOOL Resync ();
private:
//
// Object lock
//
CRITICAL_SECTION m_StoreLock;
//
// Open Store flags
//
DWORD m_dwOpenFlags;
//
// Open filter parameters
//
LPWSTR m_pwszCardName;
LPWSTR m_pwszProvider;
DWORD m_dwProviderType;
LPWSTR m_pwszContainer;
//
// Cache Store
//
HCERTSTORE m_hCacheStore;
//
// Private methods
//
BOOL FillCacheStore (BOOL fClearCache);
BOOL ModifyCertOnCard (PCCERT_CONTEXT pCertContext, BOOL fDelete);
};
//
// Smart Card Store Provider functions
//
BOOL WINAPI SmartCardProvOpenStore (
IN LPCSTR pszStoreProv,
IN DWORD dwMsgAndCertEncodingType,
IN HCRYPTPROV hCryptProv,
IN DWORD dwFlags,
IN const void* pvPara,
IN HCERTSTORE hCertStore,
IN OUT PCERT_STORE_PROV_INFO pStoreProvInfo
);
void WINAPI SmartCardProvCloseStore (
IN HCERTSTOREPROV hStoreProv,
IN DWORD dwFlags
);
BOOL WINAPI SmartCardProvDeleteCert (
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_CONTEXT pCertContext,
IN DWORD dwFlags
);
BOOL WINAPI SmartCardProvSetCertProperty (
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_CONTEXT pCertContext,
IN DWORD dwPropId,
IN DWORD dwFlags,
IN const void* pvData
);
BOOL WINAPI SmartCardProvWriteCert (
IN HCERTSTOREPROV hStoreProv,
IN PCCERT_CONTEXT pCertContext,
IN DWORD dwFlags
);
BOOL WINAPI SmartCardProvStoreControl (
IN HCERTSTOREPROV hStoreProv,
IN DWORD dwFlags,
IN DWORD dwCtrlType,
IN LPVOID pvCtrlPara
);
//
// Smart Card Store Provider Function table
//
static void* const rgpvSmartCardProvFunc[] = {
// CERT_STORE_PROV_CLOSE_FUNC 0
SmartCardProvCloseStore,
// CERT_STORE_PROV_READ_CERT_FUNC 1
NULL,
// CERT_STORE_PROV_WRITE_CERT_FUNC 2
SmartCardProvWriteCert,
// CERT_STORE_PROV_DELETE_CERT_FUNC 3
SmartCardProvDeleteCert,
// CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4
SmartCardProvSetCertProperty,
// CERT_STORE_PROV_READ_CRL_FUNC 5
NULL,
// CERT_STORE_PROV_WRITE_CRL_FUNC 6
NULL,
// CERT_STORE_PROV_DELETE_CRL_FUNC 7
NULL,
// CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8
NULL,
// CERT_STORE_PROV_READ_CTL_FUNC 9
NULL,
// CERT_STORE_PROV_WRITE_CTL_FUNC 10
NULL,
// CERT_STORE_PROV_DELETE_CTL_FUNC 11
NULL,
// CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12
NULL,
// CERT_STORE_PROV_CONTROL_FUNC 13
SmartCardProvStoreControl
};
#define SMART_CARD_PROV_FUNC_COUNT (sizeof(rgpvSmartCardProvFunc) / \
sizeof(rgpvSmartCardProvFunc[0]))
//
// Smart Card Store Helper Functions
//
BOOL WINAPI
SCStoreParseOpenFilter (
IN LPWSTR pwszOpenFilter,
OUT LPWSTR* ppwszCardName,
OUT LPWSTR* ppwszProvider,
OUT DWORD* pdwProviderType,
OUT LPWSTR* ppwszContainer
);
BOOL WINAPI
SCStoreAcquireHandleForCertKeyPair (
IN HCRYPTPROV hContainer,
IN PCCERT_CONTEXT pCertContext,
OUT HCRYPTKEY* phKeyPair
);
BOOL WINAPI
SCStoreWriteCertToCard (
IN OPTIONAL PCCERT_CONTEXT pCertContext,
IN HCRYPTKEY hKeyPair
);
//
// Open filter parsing definitions
//
#define PARSE_ELEM 4
#endif