2 * PROJECT: ReactOS NetLogon Service
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: NetLogon service RPC server
5 * COPYRIGHT: Eric Kohl 2019 <eric.kohl@reactos.org>
8 /* INCLUDES *****************************************************************/
14 WINE_DEFAULT_DEBUG_CHANNEL(netlogon
);
16 /* FUNCTIONS *****************************************************************/
25 Status
= RpcServerUseProtseqEpW(L
"ncacn_np", 20, L
"\\pipe\\netlogon", NULL
);
26 if (Status
!= RPC_S_OK
)
28 ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
32 Status
= RpcServerRegisterIf(logon_v1_0_s_ifspec
, NULL
, NULL
);
33 if (Status
!= RPC_S_OK
)
35 ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
39 Status
= RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT
, FALSE
);
40 if (Status
!= RPC_S_OK
)
42 ERR("RpcServerListen() failed (Status %lx)\n", Status
);
49 void __RPC_FAR
* __RPC_USER
midl_user_allocate(SIZE_T len
)
51 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
55 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
57 HeapFree(GetProcessHeap(), 0, ptr
);
65 _In_opt_ LOGONSRV_HANDLE ServerName
,
66 _In_
wchar_t *UserName
,
67 _In_
wchar_t *Workstation
,
68 _Out_ PNETLOGON_VALIDATION_UAS_INFO
*ValidationInformation
)
79 _In_opt_ LOGONSRV_HANDLE ServerName
,
80 _In_
wchar_t *UserName
,
81 _In_
wchar_t *Workstation
,
82 _Out_ PNETLOGON_LOGOFF_UAS_INFO LogoffInformation
)
93 _In_opt_ LOGONSRV_HANDLE LogonServer
,
94 _In_opt_
wchar_t *ComputerName
,
95 _In_opt_ PNETLOGON_AUTHENTICATOR Authenticator
,
96 _Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
97 _In_ NETLOGON_LOGON_INFO_CLASS LogonLevel
,
98 _In_ PNETLOGON_LEVEL LogonInformation
,
99 _In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel
,
100 _Out_ PNETLOGON_VALIDATION ValidationInformation
,
101 _Out_ UCHAR
*Authoritative
)
112 _In_opt_ LOGONSRV_HANDLE LogonServer
,
113 _In_opt_
wchar_t *ComputerName
,
114 _In_opt_ PNETLOGON_AUTHENTICATOR Authenticator
,
115 _Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
116 _In_ NETLOGON_LOGON_INFO_CLASS LogonLevel
,
117 _In_ PNETLOGON_LEVEL LogonInformation
)
127 NetrServerReqChallenge(
128 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
129 _In_
wchar_t *ComputerName
,
130 _In_ PNETLOGON_CREDENTIAL ClientChallenge
,
131 _Out_ PNETLOGON_CREDENTIAL ServerChallenge
)
141 NetrServerAuthenticate(
142 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
143 _In_
wchar_t *AccountName
,
144 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
145 _In_
wchar_t *ComputerName
,
146 _In_ PNETLOGON_CREDENTIAL ClientCredential
,
147 _Out_ PNETLOGON_CREDENTIAL ServerCredential
)
157 NetrServerPasswordSet(
158 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
159 _In_
wchar_t *AccountName
,
160 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
161 _In_
wchar_t *ComputerName
,
162 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
163 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
164 _In_ PENCRYPTED_NT_OWF_PASSWORD UasNewPassword
)
175 _In_ LOGONSRV_HANDLE PrimaryName
,
176 _In_
wchar_t *ComputerName
,
177 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
178 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
179 _In_ DWORD DatabaseID
,
180 _Inout_ PNLPR_MODIFIED_COUNT DomainModifiedCount
,
181 _Out_ PNETLOGON_DELTA_ENUM_ARRAY
*DeltaArray
,
182 _In_ DWORD PreferredMaximumLength
)
193 _In_ LOGONSRV_HANDLE PrimaryName
,
194 _In_
wchar_t *ComputerName
,
195 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
196 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
197 _In_ DWORD DatabaseID
,
198 _Inout_ ULONG
*SyncContext
,
199 _Out_ PNETLOGON_DELTA_ENUM_ARRAY
*DeltaArray
,
200 _In_ DWORD PreferredMaximumLength
)
211 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
212 _In_
wchar_t * ComputerName
,
213 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
214 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
215 _In_ PUAS_INFO_0 RecordId
,
219 _In_ DWORD BufferSize
,
220 _Out_ ULONG
*CountReturned
,
221 _Out_ ULONG
*TotalEntries
,
222 _Out_ PUAS_INFO_0 NextRecordId
)
233 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
234 _In_
wchar_t *ComputerName
,
235 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
236 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
237 _In_ DWORD Reference
,
240 _In_ DWORD BufferSize
,
241 _Out_ ULONG
*CountReturned
,
242 _Out_ ULONG
*TotalEntries
,
243 _Out_ ULONG
*NextReference
,
244 _Out_ PUAS_INFO_0 LastRecordId
)
255 _In_ LOGONSRV_HANDLE ServerName
,
256 _In_opt_
wchar_t *DomainName
,
257 _Out_
wchar_t **Buffer
)
268 _In_opt_ LOGONSRV_HANDLE ServerName
,
269 _In_ DWORD FunctionCode
,
270 _In_ DWORD QueryLevel
,
271 _Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer
)
282 _In_opt_ LOGONSRV_HANDLE ServerName
,
283 _In_opt_
wchar_t *DomainName
,
284 _Out_
wchar_t **Buffer
)
295 _In_opt_ LOGONSRV_HANDLE ServerName
,
296 _In_ DWORD FunctionCode
,
297 _In_ DWORD QueryLevel
,
298 _In_ PNETLOGON_CONTROL_DATA_INFORMATION Data
,
299 _Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer
)
309 NetrServerAuthenticate2(
310 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
311 _In_
wchar_t *AccountName
,
312 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
313 _In_
wchar_t *ComputerName
,
314 _In_ PNETLOGON_CREDENTIAL ClientCredential
,
315 _Out_ PNETLOGON_CREDENTIAL ServerCredential
,
316 _Inout_ ULONG
*NegotiateFlags
)
327 _In_ LOGONSRV_HANDLE PrimaryName
,
328 _In_
wchar_t *ComputerName
,
329 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
330 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
331 _In_ DWORD DatabaseID
,
332 _In_ SYNC_STATE RestartState
,
333 _Inout_ ULONG
*SyncContext
,
334 _Out_ PNETLOGON_DELTA_ENUM_ARRAY
*DeltaArray
,
335 _In_ DWORD PreferredMaximumLength
)
346 _In_ LOGONSRV_HANDLE PrimaryName
,
347 _In_
wchar_t *ComputerName
,
348 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
349 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
350 _In_ UCHAR
*ChangeLogEntry
,
351 _In_ DWORD ChangeLogEntrySize
,
352 _Out_ PNETLOGON_DELTA_ENUM_ARRAY
*DeltaArray
)
363 _In_opt_ LOGONSRV_HANDLE ServerName
,
364 _In_ DWORD FunctionCode
,
365 _In_ DWORD QueryLevel
,
366 _In_ PNETLOGON_CONTROL_DATA_INFORMATION Data
,
367 _Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer
)
377 NetrEnumerateTrustedDomains(
378 _In_opt_ LOGONSRV_HANDLE ServerName
,
379 _Out_ PDOMAIN_NAME_BUFFER DomainNameBuffer
)
390 _In_opt_ LOGONSRV_HANDLE ComputerName
,
391 _In_opt_
wchar_t *DomainName
,
392 _In_opt_ GUID
*DomainGuid
,
393 _In_opt_ GUID
*SiteGuid
,
395 _Out_ PDOMAIN_CONTROLLER_INFOW
*DomainControllerInfo
)
405 NetrLogonGetCapabilities(
406 _In_ LOGONSRV_HANDLE ServerName
,
407 _In_opt_
wchar_t *ComputerName
,
408 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
409 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
410 _In_ DWORD QueryLevel
,
411 _Out_ PNETLOGON_CAPABILITIES ServerCapabilities
)
421 NetrLogonSetServiceBits(
422 _In_opt_ LOGONSRV_HANDLE ServerName
,
423 _In_ DWORD ServiceBitsOfInterest
,
424 _In_ DWORD ServiceBits
)
434 NetrLogonGetTrustRid(
435 _In_opt_ LOGONSRV_HANDLE ServerName
,
436 _In_opt_
wchar_t *DomainName
,
447 NetrLogonComputeServerDigest(
448 _In_opt_ LOGONSRV_HANDLE ServerName
,
451 _In_ ULONG MessageSize
,
452 _Out_ CHAR NewMessageDigest
[16],
453 _Out_ CHAR OldMessageDigest
[16])
463 NetrLogonComputeClientDigest(
464 _In_opt_ LOGONSRV_HANDLE ServerName
,
465 _In_opt_
wchar_t *DomainName
,
467 _In_ ULONG MessageSize
,
468 _Out_ CHAR NewMessageDigest
[16],
469 _Out_ CHAR OldMessageDigest
[16])
479 NetrServerAuthenticate3(
480 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
481 _In_
wchar_t *AccountName
,
482 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
483 _In_
wchar_t *ComputerName
,
484 _In_ PNETLOGON_CREDENTIAL ClientCredential
,
485 _Out_ PNETLOGON_CREDENTIAL ServerCredential
,
486 _Inout_ ULONG
*NegotiateFlags
,
487 _Out_ ULONG
*AccountRid
)
498 _In_opt_ LOGONSRV_HANDLE ComputerName
,
499 _In_opt_
wchar_t *DomainName
,
500 _In_opt_ GUID
*DomainGuid
,
501 _In_opt_
wchar_t *SiteName
,
503 _Out_ PDOMAIN_CONTROLLER_INFOW
*DomainControllerInfo
)
514 _In_opt_ LOGONSRV_HANDLE ComputerName
,
515 _Out_
wchar_t **SiteName
)
525 NetrLogonGetDomainInfo(
526 _In_ LOGONSRV_HANDLE ServerName
,
527 _In_opt_
wchar_t *ComputerName
,
528 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
529 _Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
531 _In_ PNETLOGON_WORKSTATION_INFORMATION WkstaBuffer
,
532 _Out_ PNETLOGON_DOMAIN_INFORMATION DomBuffer
)
542 NetrServerPasswordSet2(
543 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
544 _In_
wchar_t *AccountName
,
545 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
546 _In_
wchar_t *ComputerName
,
547 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
548 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
549 _In_ PNL_TRUST_PASSWORD ClearNewPassword
)
559 NetrServerPasswordGet(
560 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
561 _In_
wchar_t *AccountName
,
562 _In_ NETLOGON_SECURE_CHANNEL_TYPE AccountType
,
563 _In_
wchar_t *ComputerName
,
564 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
565 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
566 _Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword
)
577 _In_opt_ LOGONSRV_HANDLE PrimaryName
,
578 _In_
wchar_t *ComputerName
,
579 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
580 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
581 _In_ UCHAR
*OpaqueBuffer
,
582 _In_ ULONG OpaqueBufferSize
)
592 DsrAddressToSiteNamesW(
593 _In_opt_ LOGONSRV_HANDLE ComputerName
,
594 _In_ DWORD EntryCount
,
595 _In_ PNL_SOCKET_ADDRESS SocketAddresses
,
596 _Out_ PNL_SITE_NAME_ARRAY
*SiteNames
)
607 _In_opt_ LOGONSRV_HANDLE ComputerName
,
608 _In_opt_
wchar_t *AccountName
,
609 _In_ ULONG AllowableAccountControlBits
,
610 _In_opt_
wchar_t *DomainName
,
611 _In_opt_ GUID
*DomainGuid
,
612 _In_opt_
wchar_t *SiteName
,
614 _Out_ PDOMAIN_CONTROLLER_INFOW
*DomainControllerInfo
)
617 return NERR_DCNotFound
;
624 NetrLogonGetTimeServiceParentDomain(
625 _In_opt_ LOGONSRV_HANDLE ServerName
,
626 _Out_
wchar_t **DomainName
,
627 _Out_
int *PdcSameSite
)
637 NetrEnumerateTrustedDomainsEx(
638 _In_opt_ LOGONSRV_HANDLE ServerName
,
639 _Out_ PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains
)
649 DsrAddressToSiteNamesExW(
650 _In_opt_ LOGONSRV_HANDLE ComputerName
,
651 _In_ DWORD EntryCount
,
652 _In_ PNL_SOCKET_ADDRESS SocketAddresses
,
653 _Out_ PNL_SITE_NAME_EX_ARRAY
*SiteNames
)
663 DsrGetDcSiteCoverageW(
664 _In_opt_ LOGONSRV_HANDLE ServerName
,
665 _Out_ PNL_SITE_NAME_ARRAY
*SiteNames
)
676 _In_ handle_t ContextHandle
,
677 _In_opt_
wchar_t *LogonServer
,
678 _In_opt_
wchar_t *ComputerName
,
679 _In_ NETLOGON_LOGON_INFO_CLASS LogonLevel
,
680 _In_ PNETLOGON_LEVEL LogonInformation
,
681 _In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel
,
682 _Out_ PNETLOGON_VALIDATION ValidationInformation
,
683 _Out_ UCHAR
*Authoritative
,
684 _Inout_ ULONG
*ExtraFlags
)
694 DsrEnumerateDomainTrusts(
695 _In_opt_ LOGONSRV_HANDLE ServerName
,
697 _Out_ PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains
)
707 DsrDeregisterDnsHostRecords(
708 _In_opt_ LOGONSRV_HANDLE ServerName
,
709 _In_opt_
wchar_t *DnsDomainName
,
710 _In_opt_ GUID
*DomainGuid
,
711 _In_opt_ GUID
*DsaGuid
,
712 _In_
wchar_t *DnsHostName
)
722 NetrServerTrustPasswordsGet(
723 _In_opt_ LOGONSRV_HANDLE TrustedDcName
,
724 _In_
wchar_t *AccountName
,
725 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
726 _In_
wchar_t *ComputerName
,
727 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
728 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
729 _Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword
,
730 _Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword
)
740 DsrGetForestTrustInformation(
741 _In_opt_ LOGONSRV_HANDLE ServerName
,
742 _In_opt_
wchar_t *TrustedDomainName
,
744 _Out_ PLSA_FOREST_TRUST_INFORMATION
*ForestTrustInfo
)
754 NetrGetForestTrustInformation(
755 _In_opt_ LOGONSRV_HANDLE ServerName
,
756 _In_
wchar_t *ComputerName
,
757 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
758 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
760 _Out_ PLSA_FOREST_TRUST_INFORMATION
*ForestTrustInfo
)
770 NetrLogonSamLogonWithFlags(
771 _In_opt_ LOGONSRV_HANDLE LogonServer
,
772 _In_opt_
wchar_t *ComputerName
,
773 _In_opt_ PNETLOGON_AUTHENTICATOR Authenticator
,
774 _Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
775 _In_ NETLOGON_LOGON_INFO_CLASS LogonLevel
,
776 _In_ PNETLOGON_LEVEL LogonInformation
,
777 _In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel
,
778 _Out_ PNETLOGON_VALIDATION ValidationInformation
,
779 _Out_ UCHAR
*Authoritative
,
780 _Inout_ ULONG
*ExtraFlags
)
790 NetrServerGetTrustInfo(
791 _In_opt_ LOGONSRV_HANDLE TrustedDcName
,
792 _In_
wchar_t *AccountName
,
793 _In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType
,
794 _In_
wchar_t *ComputerName
,
795 _In_ PNETLOGON_AUTHENTICATOR Authenticator
,
796 _Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator
,
797 _Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword
,
798 _Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword
,
799 _Out_ PNL_GENERIC_RPC_DATA
*TrustInfo
)