Source code of Windows XP (NT5)
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.

160 lines
4.1 KiB

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1998, Microsoft Corp. All rights reserved.
  4. //
  5. // FILE
  6. //
  7. // ezlogon.h
  8. //
  9. // SYNOPSIS
  10. //
  11. // Describes the abbreviated IAS version of LsaLogonUser.
  12. //
  13. // MODIFICATION HISTORY
  14. //
  15. // 08/15/1998 Original version.
  16. //
  17. ///////////////////////////////////////////////////////////////////////////////
  18. #ifndef _EZLOGON_H_
  19. #define _EZLOGON_H_
  20. #if _MSC_VER >= 1000
  21. #pragma once
  22. #endif
  23. #include <ntmsv1_0.h>
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. //////////
  28. // These are defined here to avoid dependencies on the NT headers.
  29. //////////
  30. #define DEFAULT_PARAMETER_CONTROL \
  31. (MSV1_0_DONT_TRY_GUEST_ACCOUNT | MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY | MSV1_0_DISABLE_PERSONAL_FALLBACK|MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT|MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT)
  32. #define _AUTHENTICATOR_RESPONSE_LENGTH 20
  33. typedef struct _IAS_MSCHAP_PROFILE {
  34. WCHAR LogonDomainName[DNLEN + 1];
  35. UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
  36. UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
  37. LARGE_INTEGER KickOffTime;
  38. } IAS_MSCHAP_PROFILE, *PIAS_MSCHAP_PROFILE;
  39. typedef struct _IAS_MSCHAP_V2_PROFILE {
  40. WCHAR LogonDomainName[DNLEN + 1];
  41. UCHAR AuthResponse[_AUTHENTICATOR_RESPONSE_LENGTH];
  42. UCHAR RecvSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
  43. UCHAR SendSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
  44. LARGE_INTEGER KickOffTime;
  45. } IAS_MSCHAP_V2_PROFILE, *PIAS_MSCHAP_V2_PROFILE;
  46. DWORD
  47. WINAPI
  48. IASLogonInitialize( VOID );
  49. VOID
  50. WINAPI
  51. IASLogonShutdown( VOID );
  52. VOID
  53. WINAPI
  54. IASInitAuthInfo(
  55. IN PVOID AuthInfo,
  56. IN DWORD FixedLength,
  57. IN PCWSTR UserName,
  58. IN PCWSTR Domain,
  59. OUT PBYTE* Data
  60. );
  61. DWORD
  62. WINAPI
  63. IASLogonUser(
  64. IN PVOID AuthInfo,
  65. IN ULONG AuthInfoLength,
  66. OPTIONAL OUT PMSV1_0_LM20_LOGON_PROFILE *Profile,
  67. OUT PHANDLE Token
  68. );
  69. DWORD
  70. WINAPI
  71. IASLogonMSCHAPv2(
  72. IN PCWSTR UserName,
  73. IN PCWSTR Domain,
  74. IN PCSTR HashUserName,
  75. IN PBYTE Challenge,
  76. IN DWORD ChallengeLength,
  77. IN PBYTE Response,
  78. IN PBYTE PeerChallenge,
  79. OUT PIAS_MSCHAP_V2_PROFILE Profile,
  80. OUT PHANDLE Token
  81. );
  82. DWORD
  83. WINAPI
  84. IASGetSendRecvSessionKeys( PBYTE pbUserSessionKey,
  85. DWORD dwUserSessionKeyLen,
  86. PBYTE pbResponse,
  87. DWORD dwResponseLen,
  88. OUT PBYTE pbSendKey,
  89. OUT PBYTE pbRecvKey
  90. );
  91. DWORD
  92. WINAPI
  93. IASChangePassword3(
  94. IN PCWSTR UserName,
  95. IN PCWSTR Domain,
  96. IN PBYTE EncHash,
  97. IN PBYTE EncPassword
  98. );
  99. ///////////////////////////////////////////////////////////////////////////////
  100. //
  101. // Assorted macros to initialize self-relative logon information.
  102. //
  103. ///////////////////////////////////////////////////////////////////////////////
  104. // Copy a Unicode string into a UNICODE_STRING.
  105. #define IASInitUnicodeString(str, buf, src) \
  106. { (str).Length = (USHORT)(wcslen(src) * sizeof(WCHAR)); \
  107. (str).MaximumLength = (str).Length; \
  108. (str).Buffer = (PWSTR)memcpy((buf), (src), (str).MaximumLength); \
  109. (buf) += (str).MaximumLength; }
  110. // Copy a ANSI string into a STRING.
  111. #define IASInitAnsiString(str, buf, src) \
  112. { (str).Length = (USHORT)(strlen(src) * sizeof(CHAR)); \
  113. (str).MaximumLength = (str).Length; \
  114. (str).Buffer = (PSTR)memcpy((buf), (src), (str).MaximumLength); \
  115. (buf) += (str).MaximumLength; }
  116. // Copy an octet string into a STRING.
  117. #define IASInitOctetString(str, buf, src, srclen) \
  118. { (str).Length = (USHORT)(srclen); \
  119. (str).MaximumLength = (str).Length; \
  120. (str).Buffer = (PSTR)memcpy((buf), (src), (str).MaximumLength); \
  121. (buf) += (str).MaximumLength; }
  122. // Copy an ANSI string into a UNICODE_STRING.
  123. #define IASInitUnicodeStringFromAnsi(str, buf, src) \
  124. { (str).MaximumLength = (USHORT)(sizeof(WCHAR) * ((src).Length + 1)); \
  125. (str).Buffer = (PWSTR)(buf); \
  126. RtlAnsiStringToUnicodeString(&(str), &(src), FALSE); \
  127. (buf) += ((str).MaximumLength = (str).Length); }
  128. // Copy a fixed-size array into a fixed-size array of the same size.
  129. #define IASInitFixedArray(dst, src) \
  130. { memcpy((dst), (src), sizeof(dst)); }
  131. #ifdef __cplusplus
  132. }
  133. #endif
  134. #endif // _EZLOGON_H_