/*++ Copyright (c) 1998 Microsoft Corporation Module Name: params.hxx Abstract: This file contains definitions for params.cxx Header and parameter parser for digest sspi package. Author: Adriaan Canter (adriaanc) 01-Aug-1998 --*/ #ifndef PARAMS_HXX #define PARAMS_HXX #define HOST_SZ "Host" #define USER_SZ "User" #define PASS_SZ "Pass" #define URL_SZ "Url" #define METHOD_SZ "Method" #define NONCE_SZ "Nonce" #define OPAQUE_SZ "Opaque" #define REALM_SZ "Realm" #define DOMAIN_SZ "Domain" #define STALE_SZ "Stale" #define ALGORITHM_SZ "Algorithm" #define QOP_SZ "Qop" #define MS_LOGOFF_SZ "MS-Logoff" //-------------------------------------------------------------------- // Class CParams // Parses and stores digest challenge and input parameters. //-------------------------------------------------------------------- class CParams { public: enum PARAM_INDEX { HOST = 0, USER, PASS, URL, METHOD, NONCE, _OPAQUE, REALM, DOMAIN, STALE, ALGORITHM, QOP, LOGOFF, MAX_PARAMS }; protected: static VOID TrimQuotes(LPSTR *psz, LPDWORD pcb); static VOID TrimWhiteSpace(LPSTR *psz, LPDWORD pcb); static BOOL GetDelimitedToken(LPSTR* pszBuf, LPDWORD pcbBuf, LPSTR* pszTok, LPDWORD pcbTok, CHAR cDelim); static BOOL GetKeyValuePair(LPSTR szB, DWORD cbB, LPSTR* pszK, LPDWORD pcbK, LPSTR* pszV, LPDWORD pcbV); struct PARAM_ENTRY { LPSTR szParam; LPSTR szValue; DWORD cbValue; BOOL fAllocated; }; static LPSTR szParamMap[MAX_PARAMS]; LPSTR _szBuffer; DWORD _cbBuffer; PARAM_ENTRY _Entry[MAX_PARAMS]; HWND _hWnd; DWORD _cNC; BOOL _fPreAuth; BOOL _fMd5Sess; BOOL _fCredsSupplied; public: CParams(LPSTR szBuffer); ~CParams(); LPSTR GetParam(PARAM_INDEX Idx); BOOL GetParam(PARAM_INDEX Idx, LPSTR *pszParam, LPDWORD pcbParam); BOOL SetParam(PARAM_INDEX Idx, LPSTR szParam, DWORD cbParam); BOOL SetHwnd(HWND* phWnd); HWND GetHwnd(); VOID SetNC(DWORD*); DWORD GetNC(); VOID SetPreAuth(BOOL); BOOL IsPreAuth(); VOID SetMd5Sess(BOOL); BOOL IsMd5Sess(); VOID SetCredsSupplied(BOOL); BOOL AreCredsSupplied(); static BOOL FindToken(LPSTR szBuf, DWORD cbBuf, LPSTR szMatch, DWORD cbMatch, LPSTR* pszPtr); }; #endif // PARAMS_HXX