Windows2003-3790/inetcore/outlookexpress/inetcomm/imnxport/thorsspi.h
2020-09-30 16:53:55 +02:00

91 lines
3.0 KiB
C

#ifndef _THORSSPI_H
#define _THORSSPI_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef WIN16
#ifndef SECURITY_WIN32
#define SECURITY_WIN32
#endif
#endif //!WIN16
#include <schnlsp.h>
#include <sspi.h>
#include <issperr.h>
#include <spseal.h>
typedef PSecurityFunctionTable (APIENTRY *INITSECURITYINTERFACE) (VOID);
extern PSecurityFunctionTable g_pSecFuncTable;
#define g_EnumerateSecurityPackages \
(*(g_pSecFuncTable->EnumerateSecurityPackagesA))
#define g_AcquireCredentialsHandle \
(*(g_pSecFuncTable->AcquireCredentialsHandleA))
#define g_FreeCredentialsHandle \
(*(g_pSecFuncTable->FreeCredentialHandle))
#define g_InitializeSecurityContext \
(*(g_pSecFuncTable->InitializeSecurityContextA))
#define g_DeleteSecurityContext \
(*(g_pSecFuncTable->DeleteSecurityContext))
#define g_QueryContextAttributes \
(*(g_pSecFuncTable->QueryContextAttributesA))
#define g_FreeContextBuffer \
(*(g_pSecFuncTable->FreeContextBuffer))
#define g_SealMessage \
(*((SEAL_MESSAGE_FN)g_pSecFuncTable->Reserved3))
#define g_UnsealMessage \
(*((UNSEAL_MESSAGE_FN)g_pSecFuncTable->Reserved4))
//
// Encryption Capabilities
//
#define ENC_CAPS_NOT_INSTALLED 0x80000000 // No keys installed
#define ENC_CAPS_DISABLED 0x40000000 // Disabled due to locale
#define ENC_CAPS_SSL 0x00000001 // SSL active
#define ENC_CAPS_PCT 0x00000002 // PCT active
//
// Encryption type (SSL/PCT etc) portion of encryption flag dword
// PCT & SSL are both supported
//
#define ENC_CAPS_TYPE_MASK (ENC_CAPS_SSL | ENC_CAPS_PCT)
#define ENC_CAPS_DEFAULT ENC_CAPS_TYPE_MASK
#define INVALID_CRED_VALUE {0xFFFFFFFF, 0xFFFFFFFF}
typedef struct _SEC_PROVIDER
{
CHAR *pszName; // security pkg name
CredHandle hCreds; // credential handle
DWORD dwFlags; // encryption capabilities
BOOL fEnabled; // enable flag indicator
} SEC_PROVIDER, *PSEC_PROVIDER;
extern SEC_PROVIDER s_SecProviders[];
extern int g_cSSLProviders;
//
// prototypes
//
VOID SecurityInitialize(VOID);
DWORD LoadSecurity(VOID);
BOOL FIsSecurityEnabled();
VOID UnloadSecurity(VOID);
SECURITY_STATUS InitiateSecConnection(LPSTR pszServer, BOOL fForceSSL2ClientHello, LPINT piPkg,
PCtxtHandle phContext, PSecBuffer pOutBuffers);
SECURITY_STATUS ContinueHandshake(int iPkg, PCtxtHandle phContext, LPSTR pszBuf, int cbBuf,
LPINT pcbEaten, PSecBuffer pOutBuffers);
DWORD DecryptData(PCtxtHandle phContext, LPSTR pszBufIn, int cbBufIn,
LPINT pcbBufOut, LPINT pcbEaten);
DWORD EncryptData(PCtxtHandle phContext, LPVOID pBufIn, int cbBufIn,
LPVOID *ppBufOut, int *pcbBufOut);
HRESULT ChkCertificateTrust(IN PCtxtHandle phContext, IN LPSTR pszHostName);
#ifdef __cplusplus
}
#endif
#endif // _THORSSPI_H