54 CurrentEntry = CurrentEntry->
Flink;
79 if (UIntPtrToUShort(
wcslen(ComputerName), &ComputerNameLength) !=
S_OK)
85 UserInfo->All.FullName.Length +
sizeof(
WCHAR) +
86 UserInfo->All.HomeDirectory.Length +
sizeof(
WCHAR) +
87 UserInfo->All.HomeDirectoryDrive.Length +
sizeof(
WCHAR) +
88 UserInfo->All.ScriptPath.Length +
sizeof(
WCHAR) +
89 UserInfo->All.ProfilePath.Length +
sizeof(
WCHAR) +
90 ((ComputerNameLength + 3) *
sizeof(
WCHAR));
93 if (LocalBuffer ==
NULL)
95 TRACE(
"Failed to allocate the local buffer!\n");
105 TRACE(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
109 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
114 LocalBuffer->
LogonCount = UserInfo->All.LogonCount;
139 UserInfo->All.ScriptPath.Buffer,
140 UserInfo->All.ScriptPath.Length);
148 UserInfo->All.HomeDirectory.Buffer,
149 UserInfo->All.HomeDirectory.Length);
157 UserInfo->All.FullName.Buffer,
158 UserInfo->All.FullName.Length);
167 UserInfo->All.ProfilePath.Buffer,
168 UserInfo->All.ProfilePath.Length);
176 UserInfo->All.HomeDirectoryDrive.Buffer,
177 UserInfo->All.HomeDirectoryDrive.Length);
195 TRACE(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
203 if (LocalBuffer !=
NULL)
208 if (ClientBaseAddress !=
NULL)
244 ERR(
"RtlAppendUnicodeToString failed 0x%lx\n",
Status);
250 ERR(
"RtlAppendUnicodeStringToString failed 0x%lx\n",
Status);
259 TRACE(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
263 TRACE(
"ClientBaseAddress: %p\n",
Buffer.ClientBaseAddress);
275 &LogonPwdData->UserSessionKey,
283 &LogonPwdData->LanmanSessionKey,
293 ERR(
"NtlmStructWriteUCS failed.\n");
308 TRACE(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
359 ERR(
"Could not create the user SID\n");
363 User->User.Attributes = 0;
379 ERR(
"Could not create the primary group SID\n");
396 DWORD GroupCount = 0;
497 WARN(
"Failed to allocate the local buffer!\n");
510 WARN(
"BuildTokenUser() failed (Status 0x%08lx)\n",
Status);
519 WARN(
"BuildTokenPrimaryGroup() failed (Status 0x%08lx)\n",
Status);
529 WARN(
"BuildTokenGroups() failed (Status 0x%08lx)\n",
Status);
533 *TokenInformation =
Buffer;
545 for (
i = 0;
i <
Buffer->Groups->GroupCount;
i++)
554 if (
Buffer->PrimaryGroup.PrimaryGroup !=
NULL)
595 CHAR LmPwdBuffer[15];
606 TRACE(
"MsvpChangePassword()\n");
612 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
662 TRACE(
"SamIConnect() failed (Status 0x%08lx)\n",
Status);
672 TRACE(
"SamrLookupDomainInSamServer failed (Status %08lx)\n",
Status);
683 TRACE(
"SamrOpenDomain failed (Status %08lx)\n",
Status);
699 TRACE(
"SamrLookupNamesInDomain failed (Status %08lx)\n",
Status);
707 TRACE(
"Account is not a user account!\n");
719 TRACE(
"SamrOpenUser failed (Status %08lx)\n",
Status);
729 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
738 TRACE(
"SystemFunction007 failed (Status 0x%08lx)\n",
Status);
743 LmPwdString.Length = 15;
744 LmPwdString.MaximumLength = 15;
745 LmPwdString.Buffer = LmPwdBuffer;
746 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
755 (
LPSTR)&OldLmPassword);
758 OldLmPasswordPresent =
TRUE;
763 LmPwdString.Length = 15;
764 LmPwdString.MaximumLength = 15;
765 LmPwdString.Buffer = LmPwdBuffer;
766 ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
775 (
LPSTR)&NewLmPassword);
778 NewLmPasswordPresent =
TRUE;
783 if (OldLmPasswordPresent && NewLmPasswordPresent)
787 (
const BYTE *)&NewLmPassword,
788 (
LPBYTE)&OldLmEncryptedWithNewLm);
791 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
797 (
const BYTE *)&OldLmPassword,
798 (
LPBYTE)&NewLmEncryptedWithOldLm);
801 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
805 pOldLmEncryptedWithNewLm = &OldLmEncryptedWithNewLm;
806 pNewLmEncryptedWithOldLm = &NewLmEncryptedWithOldLm;
811 (
const BYTE *)&NewNtPassword,
812 (
LPBYTE)&OldNtEncryptedWithNewNt);
815 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
821 (
const BYTE *)&OldNtPassword,
822 (
LPBYTE)&NewNtEncryptedWithOldNt);
825 TRACE(
"SystemFunction012 failed (Status 0x%08lx)\n",
Status);
831 OldLmPasswordPresent && NewLmPasswordPresent,
832 pOldLmEncryptedWithNewLm,
833 pNewLmEncryptedWithOldLm,
835 &OldNtEncryptedWithNewNt,
836 &NewNtEncryptedWithOldNt,
843 TRACE(
"SamrChangePasswordUser failed (Status %08lx)\n",
Status);
848 if (UserHandle !=
NULL)
854 if (DomainHandle !=
NULL)
857 if (DomainSid !=
NULL)
860 if (ServerHandle !=
NULL)
884 ULONG LogonCount = 0;
889 TRACE(
"MsvpEnumerateUsers()\n");
893 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
913 CurrentEntry = CurrentEntry->
Flink;
916 TRACE(
"LogonCount %lu\n", LogonCount);
919 (LogonCount *
sizeof(
LUID)) +
920 (LogonCount *
sizeof(
ULONG));
923 if (LocalBuffer ==
NULL)
925 ERR(
"Failed to allocate the local buffer!\n");
935 ERR(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
939 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
966 CurrentEntry = CurrentEntry->
Flink;
975 ERR(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
979 *ProtocolReturnBuffer = ClientBaseAddress;
986 if (LocalBuffer !=
NULL)
991 if (ClientBaseAddress !=
NULL)
1019 TRACE(
"MsvpGetUserInfo()\n");
1023 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
1035 if (LogonEntry ==
NULL)
1052 if (LocalBuffer ==
NULL)
1054 ERR(
"Failed to allocate the local buffer!\n");
1061 &ClientBaseAddress);
1064 ERR(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
1068 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
1107 ERR(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
1111 *ProtocolReturnBuffer = ClientBaseAddress;
1118 if (LocalBuffer !=
NULL)
1123 if (ClientBaseAddress !=
NULL)
1149 TRACE(
"MsvpLm20ChallengeRequest()\n");
1153 ERR(
"Invalid SubmitBufferLength %lu\n", SubmitBufferLength);
1163 if (LocalBuffer ==
NULL)
1165 ERR(
"Failed to allocate the local buffer!\n");
1172 &ClientBaseAddress);
1175 ERR(
"DispatchTable.AllocateClientBuffer failed (Status 0x%08lx)\n",
Status);
1179 TRACE(
"ClientBaseAddress: %p\n", ClientBaseAddress);
1185 ERR(
"Failed to generate random challenge!\n");
1196 ERR(
"DispatchTable.CopyToClientBuffer failed (Status 0x%08lx)\n",
Status);
1200 *ProtocolReturnBuffer = ClientBaseAddress;
1205 if (LocalBuffer !=
NULL)
1210 if (ClientBaseAddress !=
NULL)
1225 IN PVOID ProtocolSubmitBuffer,
1235 TRACE(
"LsaApCallPackage()\n");
1242 *ProtocolReturnBuffer =
NULL;
1243 *ReturnBufferLength = 0;
1245 switch (MessageType)
1249 ProtocolSubmitBuffer,
1252 ProtocolReturnBuffer,
1263 ProtocolSubmitBuffer,
1266 ProtocolReturnBuffer,
1273 ProtocolSubmitBuffer,
1276 ProtocolReturnBuffer,
1287 ProtocolSubmitBuffer,
1290 ProtocolReturnBuffer,
1318 IN PVOID ProtocolSubmitBuffer,
1325 TRACE(
"LsaApCallPackagePassthrough()\n");
1336 IN PVOID ProtocolSubmitBuffer,
1346 TRACE(
"LsaApCallPackageUntrusted()\n");
1353 *ProtocolReturnBuffer =
NULL;
1354 *ReturnBufferLength = 0;
1358 ProtocolSubmitBuffer,
1361 ProtocolReturnBuffer,
1385 TRACE(
"LsaApInitializePackage(%lu %p %p %p %p)\n",
1386 AuthenticationPackageId, LsaDispatchTable,
Database,
1387 Confidentiality, AuthenticationPackageName);
1398 DispatchTable.CreateLogonSession = LsaDispatchTable->CreateLogonSession;
1399 DispatchTable.DeleteLogonSession = LsaDispatchTable->DeleteLogonSession;
1400 DispatchTable.AddCredential = LsaDispatchTable->AddCredential;
1401 DispatchTable.GetCredentials = LsaDispatchTable->GetCredentials;
1402 DispatchTable.DeleteCredential = LsaDispatchTable->DeleteCredential;
1403 DispatchTable.AllocateLsaHeap = LsaDispatchTable->AllocateLsaHeap;
1405 DispatchTable.AllocateClientBuffer = LsaDispatchTable->AllocateClientBuffer;
1406 DispatchTable.FreeClientBuffer = LsaDispatchTable->FreeClientBuffer;
1407 DispatchTable.CopyToClientBuffer = LsaDispatchTable->CopyToClientBuffer;
1408 DispatchTable.CopyFromClientBuffer = LsaDispatchTable->CopyFromClientBuffer;
1412 if (NameString ==
NULL)
1416 if (NameBuffer ==
NULL)
1426 *AuthenticationPackageName = (
PLSA_STRING)NameString;
1442 TRACE(
"LsaApLogonTerminated()\n");
1446 if (LogonEntry !=
NULL)
1492 *LogonProfile =
NULL;
1493 *LogonProfileSize = 0;
1494 *UserInfoPtr =
NULL;
1495 *AccountDomainSidPtr =
NULL;
1496 *SpecialAccount =
FALSE;
1497 LogonInfo = ProtocolSubmitBuffer;
1501 ERR(
"Invalid SubmitBufferSize %lu\n", SubmitBufferSize);
1517 LogonPwdData->IsNetwork =
TRUE;
1518 LogonPwdData->LogonInfo = LogonInfo;
1519 LogonPwdData->ComputerName = ComputerName;
1526 AccountDomainSidPtr,
1532 ERR(
"SamValidateUser failed with 0x%lx\n",
Status);
1545 ERR(
"BuildLm20LogonProfileBuffer failed with 0x%lx\n",
Status);
1550 *LogonUserRef = &LogonInfo->
UserName;
1563 IN PVOID ProtocolSubmitBuffer,
1588 DWORD ComputerNameSize;
1590 UCHAR LogonPassHash;
1594 TRACE(
"LsaApLogonUserEx2()\n");
1597 TRACE(
"ProtocolSubmitBuffer: %p\n", ProtocolSubmitBuffer);
1598 TRACE(
"SubmitBufferSize: %lu\n", SubmitBufferSize);
1601 *ProfileBufferSize = 0;
1603 *AccountName =
NULL;
1604 *AuthenticatingAuthority =
NULL;
1607 ComputerNameSize =
ARRAYSIZE(ComputerNameData);
1610 ERR(
"Failed to get Computername.\n");
1625 ERR(
"Invalid SubmitBufferSize %lu\n", SubmitBufferSize);
1704 if (LogonPassHash > 0)
1710 ErasePassword = &LogonInfo->
Password;
1716 LogonUserName = &LogonInfo->
UserName;
1731 ProtocolSubmitBuffer,
1774 TRACE(
"NtAllocateLocallyUniqueId failed (Status %08lx)\n",
Status);
1782 TRACE(
"CreateLogonSession failed (Status %08lx)\n",
Status);
1786 SessionCreated =
TRUE;
1795 TRACE(
"Logon User: %wZ %wZ %lx\n", LogonUserName, LogonDomain,
LogonId->LowPart);
1834 TRACE(
"BuildInteractiveProfileBuffer failed (Status %08lx)\n",
Status);
1853 TRACE(
"BuildTokenInformationBuffer failed (Status %08lx)\n",
Status);
1865 if ((UserHandle !=
NULL) &&
1886 if ((LogonUserName !=
NULL) &&
1887 (*AccountName !=
NULL))
1891 if ((*AccountName)->Buffer !=
NULL)
1893 (*AccountName)->MaximumLength = LogonUserName->
Length +
1901 if ((LogonDomain !=
NULL) &&
1902 (*AuthenticatingAuthority !=
NULL))
1906 if ((*AuthenticatingAuthority)->Buffer !=
NULL)
1908 (*AuthenticatingAuthority)->MaximumLength = LogonDomain->
Length +
1919 if ((*MachineName)->Buffer !=
NULL)
1922 (*MachineName)->Length = ComputerName.
Length;
1932 if (SessionCreated !=
FALSE)
1943 if (UserHandle !=
NULL)
1976 TRACE(
"SpLsaModeInitialize(0x%lx %p %p %p)\n",
1977 LsaVersion, PackageVersion, ppTables, pcTables);
2001 TRACE(
"SpUserModeInitialize(0x%lx %p %p %p)\n",
2002 LsaVersion, PackageVersion, ppTables, pcTables);
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)
VOID NTAPI SamIFree_SAMPR_ULONG_ARRAY(PSAMPR_ULONG_ARRAY Ptr)
NTSTATUS __stdcall SamrCloseHandle(SAMPR_HANDLE *SamHandle)
enum _LSA_TOKEN_INFORMATION_TYPE * PLSA_TOKEN_INFORMATION_TYPE
NTSTATUS NTAPI SamIConnect(PSAMPR_SERVER_NAME ServerName, SAMPR_HANDLE *ServerHandle, ACCESS_MASK DesiredAccess, BOOLEAN Trusted)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define PtrOffset(BASE, OFFSET)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
NTSTATUS NTAPI SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN RPC_UNICODE_STRING Names[], OUT PSAMPR_ULONG_ARRAY RelativeIds, OUT PSAMPR_ULONG_ARRAY Use)
bool NtlmUStrWriteToStruct(_In_ PVOID DataStart, _In_ ULONG DataSize, _Out_ PUNICODE_STRING DstData, _In_ const PUNICODE_STRING SrcData, _Inout_ PBYTE *AbsoluteOffsetPtr, _In_ bool TerminateWith0)
VOID NtlmUStrFree(_In_ PUNICODE_STRING String)
bool NtlmFixupAndValidateUStr(_Inout_ PUNICODE_STRING String, _In_ ULONG_PTR FixupOffset)
NTSTATUS NtlmCopyToClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ ULONG BufferLength, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
bool NtlmFixupAStr(_Inout_ PSTRING String, _In_ ULONG_PTR FixupOffset)
bool NtlmUStrAlloc(_Inout_ PUNICODE_STRING Dst, _In_ UINT16 SizeInBytes, _In_ UINT16 InitLength)
NTSTATUS NtlmAllocateClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ ULONG BufferLength, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
VOID NtlmFreeClientBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ bool FreeClientBuffer, _Inout_ PNTLM_CLIENT_BUFFER Buffer)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define InitializeListHead(ListHead)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID NTAPI ProtocolStatus(NDIS_HANDLE BindingContext, NDIS_STATUS GenerelStatus, PVOID StatusBuffer, UINT StatusBufferSize)
Called by NDIS when the underlying driver has changed state.
#define memcpy(s1, s2, n)
static SID_IDENTIFIER_AUTHORITY SystemAuthority
SECPKG_USER_FUNCTION_TABLE NtlmUsrFn[1]
SECPKG_FUNCTION_TABLE NtlmLsaFn[1]
static NTSTATUS BuildTokenGroups(OUT PTOKEN_GROUPS *Groups, IN PSID AccountDomainSid, IN ULONG RelativeId, IN BOOL SpecialAccount)
NTSTATUS WINAPI SpUserModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_USER_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
static NTSTATUS MsvpGetUserInfo(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferLength, _Out_ PVOID *ProtocolReturnBuffer, _Out_ PULONG ReturnBufferLength, _Out_ PNTSTATUS ProtocolStatus)
NTSTATUS NTAPI LsaApLogonUserEx2(IN PLSA_CLIENT_REQUEST ClientRequest, IN SECURITY_LOGON_TYPE LogonType, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferSize, OUT PVOID *ProfileBuffer, OUT PULONG ProfileBufferSize, OUT PLUID LogonId, OUT PNTSTATUS SubStatus, OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType, OUT PVOID *TokenInformation, OUT PUNICODE_STRING *AccountName, OUT PUNICODE_STRING *AuthenticatingAuthority, OUT PUNICODE_STRING *MachineName, OUT PSECPKG_PRIMARY_CRED PrimaryCredentials, OUT PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials)
VOID NTAPI LsaApLogonTerminated(_In_ PLUID LogonId)
static NTSTATUS BuildTokenPrimaryGroup(OUT PTOKEN_PRIMARY_GROUP PrimaryGroup, IN PSID AccountDomainSid, IN ULONG RelativeId)
static NTSTATUS BuildLm20LogonProfileBuffer(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PSAMPR_USER_INFO_BUFFER UserInfo, _In_ PLSA_SAM_PWD_DATA LogonPwdData, _Out_ PMSV1_0_LM20_LOGON_PROFILE *ProfileBuffer, _Out_ PULONG ProfileBufferLength)
struct _LOGON_LIST_ENTRY * PLOGON_LIST_ENTRY
NTSTATUS NTAPI LsaApInitializePackage(IN ULONG AuthenticationPackageId, IN PLSA_DISPATCH_TABLE LsaDispatchTable, IN PLSA_STRING Database OPTIONAL, IN PLSA_STRING Confidentiality OPTIONAL, OUT PLSA_STRING *AuthenticationPackageName)
struct _LOGON_LIST_ENTRY LOGON_LIST_ENTRY
NTSTATUS NTAPI LsaApCallPackagePassthrough(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
NTSTATUS NTAPI SpLsaModeInitialize(_In_ ULONG LsaVersion, _Out_ PULONG PackageVersion, _Out_ PSECPKG_FUNCTION_TABLE *ppTables, _Out_ PULONG pcTables)
NTSTATUS NTAPI LsaApCallPackage(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static NTSTATUS MsvpLm20ChallengeRequest(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferLength, _Out_ PVOID *ProtocolReturnBuffer, _Out_ PULONG ReturnBufferLength, _Out_ PNTSTATUS ProtocolStatus)
static PSID AppendRidToSid(PSID SrcSid, ULONG Rid)
static NTSTATUS MsvpEnumerateUsers(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferLength, _Out_ PVOID *ProtocolReturnBuffer, _Out_ PULONG ReturnBufferLength, _Out_ PNTSTATUS ProtocolStatus)
static NTSTATUS LsaApLogonUserEx2_Network(_In_ PLSA_CLIENT_REQUEST ClientRequest, _In_ PVOID ProtocolSubmitBuffer, _In_ PVOID ClientBufferBase, _In_ ULONG SubmitBufferSize, _In_ PUNICODE_STRING ComputerName, _Out_ PUNICODE_STRING *LogonUserRef, _Out_ PUNICODE_STRING *LogonDomainRef, _Inout_ PLSA_SAM_PWD_DATA LogonPwdData, _Out_ SAMPR_HANDLE *UserHandlePtr, _Out_ PSAMPR_USER_INFO_BUFFER *UserInfoPtr, _Out_ PRPC_SID *AccountDomainSidPtr, _Out_ PBOOL SpecialAccount, _Out_ PMSV1_0_LM20_LOGON_PROFILE *LogonProfile, _Out_ PULONG LogonProfileSize, _Out_ PNTSTATUS SubStatus)
static NTSTATUS BuildTokenInformationBuffer(PLSA_TOKEN_INFORMATION_V1 *TokenInformation, PRPC_SID AccountDomainSid, PSAMPR_USER_INFO_BUFFER UserInfo, BOOL SpecialAccount)
static NTSTATUS MsvpChangePassword(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static NTSTATUS BuildInteractiveProfileBuffer(IN PLSA_CLIENT_REQUEST ClientRequest, IN PSAMPR_USER_INFO_BUFFER UserInfo, IN PWSTR ComputerName, OUT PMSV1_0_INTERACTIVE_PROFILE *ProfileBuffer, OUT PULONG ProfileBufferLength)
RTL_RESOURCE LogonListResource
NTSTATUS NTAPI LsaApCallPackageUntrusted(IN PLSA_CLIENT_REQUEST ClientRequest, IN PVOID ProtocolSubmitBuffer, IN PVOID ClientBufferBase, IN ULONG SubmitBufferLength, OUT PVOID *ProtocolReturnBuffer, OUT PULONG ReturnBufferLength, OUT PNTSTATUS ProtocolStatus)
static NTSTATUS BuildTokenUser(OUT PTOKEN_USER User, IN PSID AccountDomainSid, IN ULONG RelativeId)
static PLOGON_LIST_ENTRY GetLogonByLogonId(_In_ PLUID LogonId)
VOID NTAPI SamIFree_SAMPR_USER_INFO_BUFFER(PSAMPR_USER_INFO_BUFFER Ptr, USER_INFORMATION_CLASS InformationClass)
NTSTATUS NTAPI SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer)
NTSTATUS NTAPI SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, IN unsigned char LmPresent, IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm, IN unsigned char NtPresent, IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt, IN unsigned char NtCrossEncryptionPresent, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm, IN unsigned char LmCrossEncryptionPresent, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
NTSTATUS NTAPI SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle, IN PRPC_UNICODE_STRING Name, OUT PRPC_SID *DomainId)
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)
#define USER_LOGON_SUCCESS
VOID NTAPI SamIFreeVoid(PVOID Ptr)
#define FIXUP_POINTER(Pointer, Offset)
#define USER_LOGON_BAD_PASSWORD
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceShared(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID PrimaryGroup
NTSYSAPI VOID NTAPI RtlEraseUnicodeString(_Inout_ PUNICODE_STRING String)
NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
NTSYSAPI VOID NTAPI RtlInitializeResource(_In_ PRTL_RESOURCE Resource)
NTSYSAPI BOOLEAN NTAPI RtlAcquireResourceExclusive(_In_ PRTL_RESOURCE Resource, _In_ BOOLEAN Wait)
NTSYSAPI VOID NTAPI RtlReleaseResource(_In_ PRTL_RESOURCE Resource)
#define SE_GROUP_MANDATORY
#define SE_GROUP_ENABLED_BY_DEFAULT
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE LogonType
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE _Out_ PQUOTA_LIMITS _Out_ PNTSTATUS SubStatus
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID * ProfileBuffer
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG ProfileBufferLength
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID LogonId
NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN ULONG SubAuthority0, IN ULONG SubAuthority1, IN ULONG SubAuthority2, IN ULONG SubAuthority3, IN ULONG SubAuthority4, IN ULONG SubAuthority5, IN ULONG SubAuthority6, IN ULONG SubAuthority7, OUT PSID *Sid)
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(IN PSID Sid)
struct _MSV1_0_ENUMUSERS_REQUEST * PMSV1_0_ENUMUSERS_REQUEST
struct _MSV1_0_LM20_CHALLENGE_RESPONSE MSV1_0_LM20_CHALLENGE_RESPONSE
struct _MSV1_0_ENUMUSERS_RESPONSE MSV1_0_ENUMUSERS_RESPONSE
struct _MSV1_0_GETUSERINFO_RESPONSE MSV1_0_GETUSERINFO_RESPONSE
struct _MSV1_0_LM20_CHALLENGE_REQUEST * PMSV1_0_LM20_CHALLENGE_REQUEST
struct _MSV1_0_GETUSERINFO_REQUEST * PMSV1_0_GETUSERINFO_REQUEST
NTSTATUS NTAPI NtAllocateLocallyUniqueId(OUT LUID *LocallyUniqueId)
#define SAM_SERVER_LOOKUP_DOMAIN
@ UserInternal2Information
#define SAM_SERVER_CONNECT
#define USER_CHANGE_PASSWORD
#define SECPKG_INTERFACE_VERSION
#define STATUS_INTERNAL_ERROR
#define STATUS_WRONG_PASSWORD
#define STATUS_BAD_VALIDATION_CLASS
#define STATUS_NO_SUCH_USER
#define STATUS_LOGON_FAILURE
#define STATUS_NAME_TOO_LONG
struct _MSV1_0_CHANGEPASSWORD_REQUEST * PMSV1_0_CHANGEPASSWORD_REQUEST
struct _MSV1_0_INTERACTIVE_PROFILE * PMSV1_0_INTERACTIVE_PROFILE
@ MsV1_0ChangeCachedPassword
@ MsV1_0GenericPassthrough
@ MsV1_0Lm20GetChallengeResponse
@ MsV1_0Lm20ChallengeRequest
#define MSV1_0_USER_SESSION_KEY_LENGTH
#define MSV1_0_RETURN_PROFILE_PATH
struct _MSV1_0_LM20_LOGON_PROFILE MSV1_0_LM20_LOGON_PROFILE
struct _LSA_STRING * PLSA_STRING
struct _MSV1_0_INTERACTIVE_PROFILE MSV1_0_INTERACTIVE_PROFILE
#define MSV1_0_PACKAGE_NAME
enum _SECURITY_LOGON_TYPE SECURITY_LOGON_TYPE
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE * PMSV1_0_PROTOCOL_MESSAGE_TYPE
@ MsV1_0InteractiveProfile
struct _MSV1_0_LM20_LOGON_PROFILE * PMSV1_0_LM20_LOGON_PROFILE
#define MSV1_0_LANMAN_SESSION_KEY_LENGTH
struct _MSV1_0_INTERACTIVE_LOGON * PMSV1_0_INTERACTIVE_LOGON
enum _MSV1_0_PROTOCOL_MESSAGE_TYPE MSV1_0_PROTOCOL_MESSAGE_TYPE
#define MSV1_0_CHALLENGE_LENGTH
#define LOGON_USED_LM_PASSWORD
@ MsV1_0WorkstationUnlockLogon
NTSTATUS SamValidateUser(_In_ SECURITY_LOGON_TYPE LogonType, _In_ PUNICODE_STRING LogonUserName, _In_ PUNICODE_STRING LogonDomain, _In_ PLSA_SAM_PWD_DATA LogonPwdData, _In_ PUNICODE_STRING ComputerName, _Out_ PBOOL SpecialAccount, _Out_ PRPC_SID *AccountDomainSidPtr, _Out_ SAMPR_HANDLE *UserHandlePtr, _Out_ PSAMPR_USER_INFO_BUFFER *UserInfoPtr, _Out_ PNTSTATUS SubStatus)
Validates a user by checking if it exists in the sam database. Some other checks are done further.
VOID NTAPI RtlRunDecodeUnicodeString(IN UCHAR Hash, IN OUT PUNICODE_STRING String)
_In_ DWORD _Out_ PDWORD _In_opt_ PCSTR MachineName
PULONG MinorVersion OPTIONAL
struct _LIST_ENTRY * Flink
SECURITY_LOGON_TYPE LogonType
UNICODE_STRING LogonServer
UNICODE_STRING LogonDomainName
PUNICODE_STRING ComputerName
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
UNICODE_STRING AccountName
UNICODE_STRING NewPassword
UNICODE_STRING OldPassword
UNICODE_STRING DomainName
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
ULONG NumberOfLoggedOnUsers
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
UNICODE_STRING LogonServer
SECURITY_LOGON_TYPE LogonType
UNICODE_STRING LogonDomainName
MSV1_0_LOGON_SUBMIT_TYPE MessageType
UNICODE_STRING LogonDomainName
MSV1_0_PROFILE_BUFFER_TYPE MessageType
LARGE_INTEGER KickOffTime
LARGE_INTEGER PasswordMustChange
UNICODE_STRING LogonScript
LARGE_INTEGER PasswordCanChange
LARGE_INTEGER PasswordLastSet
UNICODE_STRING ProfilePath
UNICODE_STRING LogonServer
UNICODE_STRING HomeDirectory
UNICODE_STRING HomeDirectoryDrive
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]
MSV1_0_PROFILE_BUFFER_TYPE MessageType
UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]
UNICODE_STRING LogonServer
UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]
UNICODE_STRING LogonDomainName
UNICODE_STRING UserParameters
LARGE_INTEGER KickOffTime
STRING CaseInsensitiveChallengeResponse
UNICODE_STRING LogonDomainName
UNICODE_STRING Workstation
STRING CaseSensitiveChallengeResponse
NTSTATUS WINAPI SystemFunction012(const BYTE *in, const BYTE *key, LPBYTE out)
NTSTATUS WINAPI SystemFunction007(const UNICODE_STRING *string, LPBYTE hash)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
SAMPR_USER_ALL_INFORMATION All
SAMPR_USER_INTERNAL2_INFORMATION Internal2
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
#define MAX_COMPUTERNAME_LENGTH
#define ERROR_INTERNAL_ERROR
#define DOMAIN_ALIAS_RID_USERS
#define SECURITY_BUILTIN_DOMAIN_RID
#define SECURITY_AUTHENTICATED_USER_RID
#define SECURITY_NULL_RID
#define SECURITY_NT_AUTHORITY
#define DOMAIN_GROUP_RID_USERS