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.

114 lines
2.8 KiB

  1. /*++
  2. Copyright (c) 1998 Microsoft Corporation
  3. Module Name:
  4. params.hxx
  5. Abstract:
  6. This file contains definitions for params.cxx
  7. Header and parameter parser for digest sspi package.
  8. Author:
  9. Adriaan Canter (adriaanc) 01-Aug-1998
  10. --*/
  11. #ifndef PARAMS_HXX
  12. #define PARAMS_HXX
  13. #define HOST_SZ "Host"
  14. #define USER_SZ "User"
  15. #define PASS_SZ "Pass"
  16. #define URL_SZ "Url"
  17. #define METHOD_SZ "Method"
  18. #define NONCE_SZ "Nonce"
  19. #define OPAQUE_SZ "Opaque"
  20. #define REALM_SZ "Realm"
  21. #define DOMAIN_SZ "Domain"
  22. #define STALE_SZ "Stale"
  23. #define ALGORITHM_SZ "Algorithm"
  24. #define QOP_SZ "Qop"
  25. #define MS_LOGOFF_SZ "MS-Logoff"
  26. //--------------------------------------------------------------------
  27. // Class CParams
  28. // Parses and stores digest challenge and input parameters.
  29. //--------------------------------------------------------------------
  30. class CParams
  31. {
  32. public:
  33. enum PARAM_INDEX
  34. {
  35. HOST = 0,
  36. USER,
  37. PASS,
  38. URL,
  39. METHOD,
  40. NONCE,
  41. _OPAQUE,
  42. REALM,
  43. DOMAIN,
  44. STALE,
  45. ALGORITHM,
  46. QOP,
  47. LOGOFF,
  48. MAX_PARAMS
  49. };
  50. protected:
  51. static VOID TrimQuotes(LPSTR *psz, LPDWORD pcb);
  52. static VOID TrimWhiteSpace(LPSTR *psz, LPDWORD pcb);
  53. static BOOL GetDelimitedToken(LPSTR* pszBuf, LPDWORD pcbBuf,
  54. LPSTR* pszTok, LPDWORD pcbTok,
  55. CHAR cDelim);
  56. static BOOL GetKeyValuePair(LPSTR szB, DWORD cbB,
  57. LPSTR* pszK, LPDWORD pcbK,
  58. LPSTR* pszV, LPDWORD pcbV);
  59. struct PARAM_ENTRY
  60. {
  61. LPSTR szParam;
  62. LPSTR szValue;
  63. DWORD cbValue;
  64. BOOL fAllocated;
  65. };
  66. static LPSTR szParamMap[MAX_PARAMS];
  67. LPSTR _szBuffer;
  68. DWORD _cbBuffer;
  69. PARAM_ENTRY _Entry[MAX_PARAMS];
  70. HWND _hWnd;
  71. DWORD _cNC;
  72. BOOL _fPreAuth;
  73. BOOL _fMd5Sess;
  74. BOOL _fCredsSupplied;
  75. public:
  76. CParams(LPSTR szBuffer);
  77. ~CParams();
  78. LPSTR GetParam(PARAM_INDEX Idx);
  79. BOOL GetParam(PARAM_INDEX Idx, LPSTR *pszParam, LPDWORD pcbParam);
  80. BOOL SetParam(PARAM_INDEX Idx, LPSTR szParam, DWORD cbParam);
  81. BOOL SetHwnd(HWND* phWnd);
  82. HWND GetHwnd();
  83. VOID SetNC(DWORD*);
  84. DWORD GetNC();
  85. VOID SetPreAuth(BOOL);
  86. BOOL IsPreAuth();
  87. VOID SetMd5Sess(BOOL);
  88. BOOL IsMd5Sess();
  89. VOID SetCredsSupplied(BOOL);
  90. BOOL AreCredsSupplied();
  91. static BOOL FindToken(LPSTR szBuf, DWORD cbBuf, LPSTR szMatch, DWORD cbMatch, LPSTR* pszPtr);
  92. };
  93. #endif // PARAMS_HXX