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.
 
 
 
 
 
 

117 lines
4.9 KiB

//--------------------------------------------------------------------------
// S I C I L Y . H
//--------------------------------------------------------------------------
#pragma once
//--------------------------------------------------------------------------
// Depends
//--------------------------------------------------------------------------
#ifndef SECURITY_WIN32
#define SECURITY_WIN32 1
#endif
#include <sspi.h>
#include <spseal.h>
#include <rpcdce.h>
#include <issperr.h>
#include <imnxport.h>
//--------------------------------------------------------------------------
// Forward Decls
//--------------------------------------------------------------------------
interface ITransportCallback;
//--------------------------------------------------------------------------
// Constants
//--------------------------------------------------------------------------
#define SSP_SSPS_DLL "msnsspc.dll"
#define CBMAX_SSPI_BUFFER 1042
#define SSPI_BASE64 TRUE
#define SSPI_UUENCODE FALSE
//--------------------------------------------------------------------------
// SSPIBUFFERTYPE
//--------------------------------------------------------------------------
typedef enum tagSSPIBUFFERTYPE {
SSPI_STRING,
SSPI_BLOB
} SSPIBUFFERTYPE;
//--------------------------------------------------------------------------
// SSPICONTEXTSTATE
//--------------------------------------------------------------------------
typedef enum tagSSPICONTEXTSTATE {
SSPI_STATE_USE_CACHED,
SSPI_STATE_USE_SUPPLIED,
SSPI_STATE_PROMPT_USE_PACKAGE,
SSPI_STATE_PROMPT_USE_OWN,
} SSPICONTEXTSTATE;
//--------------------------------------------------------------------------
// SSPICONTEXT
//--------------------------------------------------------------------------
typedef struct tagSSPICONTEXT {
DWORD tyState;
DWORD tyRetry;
DWORD tyRetryState;
DWORD cRetries;
BYTE fPromptCancel;
HWND hwndLogon;
BYTE fCredential;
CredHandle hCredential;
BYTE fContext;
CtxtHandle hContext;
BOOL fBase64;
LPSTR pszServer;
LPSTR pszPackage;
LPSTR pszUserName;
LPSTR pszPassword;
LPSTR pszDomain;
BOOL fService;
BOOL fUsedSuppliedCreds;
ITransportCallback *pCallback;
} SSPICONTEXT, *LPSSPICONTEXT;
//--------------------------------------------------------------------------
// SSPIBUFFER
//--------------------------------------------------------------------------
typedef struct tagSSPIBUFFER {
CHAR szBuffer[CBMAX_SSPI_BUFFER];
DWORD cbBuffer;
BOOL fContinue;
} SSPIBUFFER, *LPSSPIBUFFER;
//--------------------------------------------------------------------------
// SSPIPACKAGE
//--------------------------------------------------------------------------
typedef struct tagSSPIPACKAGE {
ULONG ulCapabilities;
WORD wVersion;
ULONG cbMaxToken;
LPSTR pszName;
LPSTR pszComment;
} SSPIPACKAGE, *LPSSPIPACKAGE;
//--------------------------------------------------------------------------
// Prototypes
//--------------------------------------------------------------------------
HRESULT SSPIIsInstalled(void);
HRESULT SSPIGetPackages(LPSSPIPACKAGE *pprgPackage, ULONG *pcPackages);
HRESULT SSPILogon(LPSSPICONTEXT pContext, BOOL fRetry, BOOL fBase64, LPCSTR szPackage, LPINETSERVER pServer, ITransportCallback *pCallback);
HRESULT SSPIGetNegotiate(LPSSPICONTEXT pContext, LPSSPIBUFFER pNegotiate);
HRESULT SSPIResponseFromChallenge(LPSSPICONTEXT pContext, LPSSPIBUFFER pChallenge, LPSSPIBUFFER pResponse);
HRESULT SSPIUninitialize(void);
HRESULT SSPIFreeContext(LPSSPICONTEXT pContext);
HRESULT SSPIReleaseContext(LPSSPICONTEXT pContext);
HRESULT SSPIMakeOutboundMessage(LPSSPICONTEXT pContext, DWORD dwFlags, LPSSPIBUFFER pBuffer, PSecBufferDesc pInDescript);
HRESULT SSPIEncodeBuffer(BOOL fBase64, LPSSPIBUFFER pBuffer);
HRESULT SSPIDecodeBuffer(BOOL fBase64, LPSSPIBUFFER pBuffer);
HRESULT SSPISetBuffer(LPCSTR pszString, SSPIBUFFERTYPE tyBuffer, DWORD cbBytes, LPSSPIBUFFER pBuffer);
HRESULT SSPIFindCredential(LPSSPICONTEXT pContext, SEC_WINNT_AUTH_IDENTITY *pAuth, ITransportCallback *pCallback);
//--------------------------------------------------------------------------
// FIsSicilyInstalled
//--------------------------------------------------------------------------
inline HRESULT SSPIFreePackages(LPSSPIPACKAGE *pprgPackage, ULONG cPackages) { return(S_OK); }
inline BOOL FIsSicilyInstalled(void) {
return (S_OK == SSPIIsInstalled()) ? TRUE : FALSE;
}