Viewing file: AsyncGssSocketLayer.h (4.76 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// GSSAsyncSocksifiedSocket.h: interface for the CAsyncGssSocketLayer CAsyncSocketEx.
//
//////////////////////////////////////////////////////////////////////
// Part of this code is copyright 2001 Massachusetts Institute of Technology
#if !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
#define ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// **************************************************************************************
// File: globals.h
// By: Arthur David Leather
// Created: 08/02/99
// Copyright @1999 Massachusetts Institute of Technology - All rights reserved.
// Description: H file for globals.cpp. Contains variables and functions
// for SoFTP
//
// History:
//
// MM/DD/YY Inits Description of Change
// 08/02/99 ADL Original
// **************************************************************************************
//#include "tlhelp32.h"
//#include <winsock.h>
#include "AsyncSocketExLayer.h"
#define GSS_INFO 0
#define GSS_ERROR 1
#define GSS_SHUTDOWN_COMPLETE 2
#define GSS_COMMAND 3
#define GSS_REPLY 4
#define GSS_AUTHFAILED 5
#define GSS_AUTHCOMPLETE 6
// Defines
#define GFTPDLL _T("FzGss.dll")
#define GSSAPI_AUTHENTICATION_SUCCEEDED 1
class CGssHelperWindow;
class CAsyncGssSocketLayer : public CAsyncSocketExLayer
{
public:
CAsyncGssSocketLayer();
virtual ~CAsyncGssSocketLayer();
BOOL InitTransferChannel(CAsyncGssSocketLayer *pSocket);
BOOL InitGSS(BOOL bSpawned = FALSE, BOOL promptPassword = FALSE);
int GetClientAuth(const char* pHost);
int ProcessCommand(const char *command, const char *args, char *sendme);
int ProcessCommand(const char *command, const char *args1, const char *args2, char *sendme);
BOOL AuthSuccessful() const;
void SetAuthState(int i) {m_gotAuth = i;}
void SetTransfer(BOOL flag) {m_transfer = flag;}
BOOL ShutDownComplete();
BOOL GetUserFromKrbTicket(char *buffer); //Should be 256 chars long
protected:
void ReceiveReply();
static int CALLBACK Callback(void *pData, int nParam1, int nParam2, int nParam3);
virtual void Close();
virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
virtual BOOL ShutDown(int nHow /*=sends*/);
virtual void OnReceive(int nErrorCode);
virtual void OnSend(int nErrorCode);
virtual void OnClose(int nErrorCode);
char *m_pSendBuffer;
int m_nSendBufferLen;
int m_nSendBufferSize;
char *m_pReceiveBuffer;
unsigned int m_nReceiveBufferLen;
unsigned int m_nReceiveBufferSize;
char *m_pDecryptedReceiveBuffer;
int m_nDecryptedReceiveBufferLen;
int m_nDecryptedReceiveBufferSize;
char m_tmpBuffer[1024*32]; //32KB buffer for temporary data
BOOL m_bInitialized;
BOOL m_nAwaitingReply; //Used by client authentication, set to true if waiting for a reply from the server
BOOL m_transfer;
int m_nShutDown;
BOOL LoadGSSLibrary();
BOOL UnLoadGSSLibrary();
HINSTANCE m_hGSS_API;
void **m_pData;
BOOL m_bUseGSS;
int m_gotAuth; // authorization type
// GSS-API
typedef int (* t_FzGss_ProcessCommand)(void* m_pData, const char* command, char* args, char* sendme);
typedef int (* t_FzGss_DecryptMessage)(void*, char *msgStr, char* sendme);
typedef int (* t_FzGss_EncryptMessage)(void*, char *msgStr, char* sendme);
typedef unsigned long (* t_FzGss_EncryptData)(void*, char *chunk, int length, char* sendme);
typedef unsigned long (* t_FzGss_DecryptData)(void *pData, char *chunk, int length, char* send);
typedef BOOL (* t_FzGss_InitGSS)(void*, int (CALLBACK *)(void *, int, int, int), void *, int);
typedef BOOL (* t_FzGss_KillGSS)(void*);
typedef int (* t_FzGss_DoClientAuth)(void *pData, char *hostname, const struct sockaddr *myaddr, const struct sockaddr *hisaddr, char protLevel, int gssBufferSize);
typedef int (* t_FzGss_ProcessReply)(void *pData, char *reply);
typedef int (* t_FzGss_GetUserFromKrbTicket)(void *pData, char *buffer);
t_FzGss_ProcessCommand pFzGss_ProcessCommand;
t_FzGss_DecryptMessage pFzGss_DecryptMessage;
t_FzGss_EncryptMessage pFzGss_EncryptMessage;
t_FzGss_EncryptData pFzGss_EncryptData;
t_FzGss_DecryptData pFzGss_DecryptData;
t_FzGss_InitGSS pFzGss_InitGSS;
t_FzGss_KillGSS pFzGss_KillGSS;
t_FzGss_DoClientAuth pFzGss_DoClientAuth;
t_FzGss_ProcessReply pFzGss_ProcessReply;
t_FzGss_GetUserFromKrbTicket pFzGss_GetUserFromKrbTicket;
SOCKADDR m_myAddr;
SOCKADDR m_hisAddr;
BOOL KillGSSData();
private:
int m_nGssNetworkError;
};
#endif // !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
|