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.
 
 
 
 
 
 

199 lines
4.2 KiB

/*
Copyright (c) 1997, Microsoft Corporation, all rights reserved
Description:
Sample Extensible Authentication Protocol header file.
History:
*/
#ifndef _EAP_H_
#define _EAP_H_
#define PPP_EAP_PROTOCOL_ID 20 // This protocols Type Id
// Defines states within the this EAP protocol.
typedef enum _MYSTATE
{
MYSTATE_Initial,
MYSTATE_WaitForUserOK,
MYSTATE_WaitForRequest,
MYSTATE_ReqSent,
MYSTATE_WaitForAuthenticationToComplete,
MYSTATE_Done
} MYSTATE;
typedef struct _EAPCB
{
MYSTATE EapState;
DWORD fFlags;
BOOL fAuthenticator;
LPVOID pWorkBuffer;
CHAR aszIdentity[ UNLEN + 1 ];
DWORD dwIdExpected;
CHAR aszPassword[ PWLEN + 1 ];
DWORD dwResult;
DWORD dwInitialPacketId;
BYTE* pDataFromInteractiveUI;
BYTE bRecvPacketId; //Special Id for Wireless case
//because it does not retransmit packets
DWORD dwSizeOfDataFromInteractiveUI;
PBYTE pUIContext;
RAS_AUTH_ATTRIBUTE* pUserAttributes;
RAS_AUTH_ATTRIBUTE* pMPPEKeyAttributes; // MPPE key
} EAPCB;
typedef struct _EAP_NAME_DIALOG
{
WCHAR awszIdentity[ UNLEN + 1 ];
WCHAR awszPassword[ PWLEN + 1 ];
} EAP_NAME_DIALOG;
// Globals
#ifdef RASEAPGLOBALS
DWORD g_dwEapTraceId = INVALID_TRACEID;
HINSTANCE g_hInstance = NULL;
#else
extern DWORD g_dwEapTraceId;
extern HINSTANCE g_hInstance;
#endif // RASEAPGLOBALS
// Function Prototypes
VOID
EapTrace(
IN CHAR* Format,
...
);
DWORD APIENTRY
EapBegin(
OUT VOID** ppWorkBuf,
IN VOID* pInfo
);
DWORD APIENTRY
EapEnd(
IN VOID* pWorkBuf
);
DWORD APIENTRY
EapMakeMessage(
IN VOID* pWorkBuf,
IN PPP_EAP_PACKET* pReceiveBuf,
OUT PPP_EAP_PACKET* pSendBuf,
IN DWORD cbSendBuf,
OUT PPP_EAP_OUTPUT* pResult,
IN PPP_EAP_INPUT* pInput
);
DWORD
AuthenticateeMakeMessage(
IN EAPCB* pwb,
IN PPP_EAP_PACKET* pReceiveBuf,
OUT PPP_EAP_PACKET* pSendBuf,
IN DWORD cbSendBuf,
IN PPP_EAP_INPUT* pInput,
OUT PPP_EAP_OUTPUT* pResult
);
DWORD
AuthenticatorMakeMessage(
IN EAPCB* pwb,
IN PPP_EAP_PACKET* pReceiveBuf,
OUT PPP_EAP_PACKET* pSendBuf,
IN DWORD cbSendBuf,
IN PPP_EAP_INPUT* pInput,
OUT PPP_EAP_OUTPUT* pResult
);
VOID
MakeResponseMessage(
IN EAPCB* pwb,
IN PPP_EAP_PACKET* pReceiveBuf,
OUT PPP_EAP_PACKET * pSendBuf,
IN DWORD cbSendBuf
);
VOID
MakeResponseMessage1(
IN EAPCB* pwb,
OUT PPP_EAP_PACKET * pSendBuf,
IN DWORD cbSendBuf
);
VOID
MakeResultMessage(
IN EAPCB * pwb,
IN DWORD dwError,
OUT PPP_EAP_PACKET* pSendBuf,
IN DWORD cbSendBuf
);
DWORD
GetPasswordFromResponse(
IN PPP_EAP_PACKET* pReceiveBuf,
OUT CHAR* pszUserName
);
DWORD
MakeAuthenticationAttributes(
IN CHAR * szUserName,
IN CHAR * szPassword,
IN EAPCB * pwb
);
DWORD
MakeMPPEKeyAttributes(
IN EAPCB * pwb
);
DWORD
GetIdentity(
IN HWND hwndParent,
IN BYTE* pUserDataIn,
IN DWORD dwSizeOfUserDataIn,
OUT BYTE** ppUserDataOut,
OUT DWORD* pdwSizeOfUserDataOut,
OUT WCHAR** ppwszIdentityOut
);
VOID
GetUsernameAndPassword(
IN HWND hwndParent,
IN EAP_NAME_DIALOG* pEapNameDialog
);
INT_PTR CALLBACK
UsernameDialogProc(
IN HWND hWnd,
IN UINT unMsg,
IN WPARAM wParam,
IN LPARAM lParam
);
BOOL
InitUsernameDialog(
IN HWND hWnd,
IN LPARAM lParam
);
BOOL
UsernameCommand(
IN EAP_NAME_DIALOG* pEapNameDialog,
IN WORD wId,
IN HWND hWndDlg
);
#endif // _EAP_H_