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.

111 lines
3.0 KiB

  1. #ifndef WIN32_LEAN_AND_MEAN
  2. #define WIN32_LEAN_AND_MEAN
  3. #endif // WIN32_LEAN_AND_MEAN
  4. #include <windows.h>
  5. #ifndef SECURITY_WIN32
  6. #define SECURITY_WIN32
  7. #endif // SECURITY_WIN32
  8. #include <shlwapi.h>
  9. #include "sspi.h"
  10. #include "issperr.h"
  11. #include "security.h"
  12. #include "md5.h"
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <assert.h>
  16. #include "mmfile.hxx"
  17. #include "xstring.hxx"
  18. #include "cred.hxx"
  19. #include "params.hxx"
  20. #include "cache.hxx"
  21. #include "digest.hxx"
  22. #include "digestui.hxx"
  23. #include "persist.hxx"
  24. extern CRITICAL_SECTION DllCritSect;
  25. extern CCredCache *g_pCache;
  26. extern DWORD g_dwCredPersistAvail;
  27. extern BOOL g_fCredCacheInit;
  28. extern HMODULE g_hModule;
  29. extern HMODULE g_hShlwapi;
  30. extern DWORD_PTR g_pHeap;
  31. LPSTR NewString(LPSTR);
  32. //SECURITY_ATTRIBUTES *MakeFullAccessSA (VOID);
  33. BOOL DigestServicesExist();
  34. BOOL InitGlobals();
  35. #define SSP_SPM_NT_DLL "security.dll"
  36. #define SSP_SPM_WIN95_DLL "secur32.dll"
  37. // Data returned from package on QuerySecurityPackageInfo
  38. #define PACKAGE_NAME "Digest"
  39. #define PACKAGE_COMMENT "Digest SSPI Authentication Package"
  40. #define PACKAGE_NAMEW L"Digest"
  41. #define PACKAGE_COMMENTW L"Digest SSPI Authentication Package"
  42. #define PACKAGE_CAPABILITIES (SECPKG_FLAG_CLIENT_ONLY | SECPKG_FLAG_CONNECTION | SECPKG_FLAG_ASCII_BUFFERS)
  43. #define PACKAGE_VERSION 1
  44. #define MAX_USERNAME_LEN 64
  45. #define MAX_PASSWORD_LEN 64
  46. // This is the number we enter in
  47. // Registry\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\SecurityService
  48. // for example: 123 = REG_SZ "sampssp.dll"
  49. #define PACKAGE_RPCID SECPKG_ID_NONE
  50. #define PACKAGE_MAXTOKEN 0XFFFF
  51. // Digest setup registry info for DllInstall.
  52. // From wininet\auth\spluginx.hxx
  53. #define PLUGIN_AUTH_FLAGS_CAN_HANDLE_UI 0x02
  54. #define PLUGIN_AUTH_FLAGS_KEEP_ALIVE_NOT_REQUIRED 0x10
  55. // SecurityProviders reg key info.
  56. #define SECURITY_PROVIDERS_REG_KEY "System\\CurrentControlSet\\Control\\SecurityProviders"
  57. #ifndef UNIX
  58. #define SECURITY_PROVIDERS_SZ "SecurityProviders"
  59. #else
  60. #define SECURITY_PROVIDERS_SZ "Providers"
  61. #endif /* UNIX */
  62. // Hosts database reg key.
  63. #define DIGEST_HOSTS_REG_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Digest\\Hosts\\"
  64. // Per-process lock.
  65. #define LOCK_GLOBALS() EnterCriticalSection(&DllCritSect)
  66. #define UNLOCK_GLOBALS() LeaveCriticalSection(&DllCritSect)
  67. // Current client logon.
  68. struct DIGEST_PKG_DATA
  69. {
  70. LPSTR szAppCtx;
  71. LPSTR szUserCtx;
  72. };
  73. #define DIGEST_PKG_FLAGS_IGNORE_TRUSTED_HOST_LIST 0x4
  74. #define DIGEST_PKG_FLAGS_IGNORE_STALE_HEADER 0x8
  75. // Shlwapi dll and exports used for parsing domain header.
  76. #define SHLWAPI_DLL_SZ "shlwapi.dll"
  77. typedef HRESULT (*PFNURLUNESCAPE)(LPSTR, LPSTR, LPDWORD, DWORD);
  78. typedef HRESULT (*PFNURLGETPART) (LPCSTR, LPSTR, LPDWORD, DWORD, DWORD);
  79. #ifdef DBG
  80. #define DIGEST_ASSERT(fVal) if (!fVal) DebugBreak();
  81. #else
  82. #define DIGEST_ASSERT(fVal)
  83. #endif