/*++ Copyright (c) 1995 Microsoft Corporation Module Name: secinit.h Abstract: Contains prototypes for indirected security functions Author: Sophia Chung (sophiac) 7-Feb-1996 Revision History: --*/ #if !defined(_SECINIT_) #define _SECINIT_ #if defined(__cplusplus) extern "C" { #endif #include #if defined(__cplusplus) } #endif extern CCritSec InitializationSecLock; extern PSecurityFunctionTable GlobalSecFuncTable; extern WIN_VERIFY_TRUST_FN pWinVerifyTrust; extern WT_HELPER_PROV_DATA_FROM_STATE_DATA_FN pWTHelperProvDataFromStateData; #define g_EnumerateSecurityPackages \ (*(GlobalSecFuncTable->EnumerateSecurityPackagesA)) #define g_AcquireCredentialsHandle \ (*(GlobalSecFuncTable->AcquireCredentialsHandleA)) #define g_FreeCredentialsHandle \ (*(GlobalSecFuncTable->FreeCredentialHandle)) #define g_InitializeSecurityContext \ (*(GlobalSecFuncTable->InitializeSecurityContextA)) #define g_DeleteSecurityContext \ (*(GlobalSecFuncTable->DeleteSecurityContext)) #define g_QueryContextAttributes \ (*(GlobalSecFuncTable->QueryContextAttributesA)) #define g_FreeContextBuffer \ (*(GlobalSecFuncTable->FreeContextBuffer)) #define g_SealMessage \ (*((SEAL_MESSAGE_FN)GlobalSecFuncTable->Reserved3)) #define g_UnsealMessage \ (*((UNSEAL_MESSAGE_FN)GlobalSecFuncTable->Reserved4)) LONG WINAPI WinVerifySecureChannel(HWND hwnd, WINTRUST_DATA *pWTD, BOOL fNoRevert); // Don't use WinVerifyTrust directly to verify secure channel connections. // Use the wininet wrapper WinVerifySecureChannel instead. #define g_WinVerifyTrust \ pWinVerifyTrust typedef PSecurityFunctionTable (APIENTRY *INITSECURITYINTERFACE) (VOID); typedef HCERTSTORE (WINAPI *CERT_OPEN_STORE_FN) (IN LPCSTR lpszStoreProvider, IN DWORD dwMsgAndCertEncodingType, IN HCRYPTPROV hCryptProv, IN DWORD dwFlags, IN const void *pvPara ); typedef BOOL (WINAPI *CERT_CLOSE_STORE_FN) (IN HCERTSTORE hCertStore, IN DWORD dwFlags ); typedef PCCERT_CONTEXT (WINAPI *CERT_FIND_CERTIFICATE_IN_STORE_FN) (IN HCERTSTORE hCertStore, IN DWORD dwCertEncodingType, IN DWORD dwFindFlags, IN DWORD dwFindType, IN const void *pvFindPara, IN PCCERT_CONTEXT pPrevCertContext ); typedef DWORD (WINAPI *CERT_NAME_TO_STR_W_FN) (IN DWORD dwCertEncodingType, IN PCERT_NAME_BLOB pName, IN DWORD dwStrType, OUT LPWSTR psz, IN DWORD csz ); typedef BOOL (WINAPI *CERT_CONTROL_STORE_FN) (IN HCERTSTORE hCertStore, IN DWORD dwFlags, IN DWORD dwCtrlType, IN void const *pvCtrlPara ); typedef BOOL (WINAPI * CERT_GET_CERT_PROPERTY) ( PCCERT_CONTEXT pCertContext, DWORD dwPropId, void* pvData, DWORD* pcbData ); typedef BOOL (WINAPI *CRYPT_UNPROTECT_DATA_FN) (IN DATA_BLOB *pDataIn, OUT OPTIONAL LPWSTR *ppszDataDescr, IN DATA_BLOB *pOptionalEntropy, IN PVOID pvReserved, IN OPTIONAL CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, IN DWORD dwFlags, OUT DATA_BLOB *pDataOut ); #define CRYPT_UNPROTECT_DATA_FN_DEFINE extern CERT_OPEN_STORE_FN g_pfnCertOpenStore; extern CERT_CLOSE_STORE_FN g_pfnCertCloseStore; extern CERT_FIND_CERTIFICATE_IN_STORE_FN g_pfnCertFindCertificateInStore; extern CERT_NAME_TO_STR_W_FN g_pfnCertNameToStr; extern CERT_CONTROL_STORE_FN g_pfnCertControlStore; extern CRYPT_UNPROTECT_DATA_FN g_pfnCryptUnprotectData; extern CERT_GET_CERT_PROPERTY g_pfnCertGetCertProperty; #define LOCK_SECURITY() (InitializationSecLock.Lock()) #define UNLOCK_SECURITY() (InitializationSecLock.Unlock()) // // prototypes // BOOL SecurityInitialize( VOID ); VOID SecurityTerminate( VOID ); DWORD LoadSecurity( VOID ); VOID UnloadSecurity( VOID ); DWORD LoadWinTrust( VOID ); #endif // _SECINIT_