https://git.reactos.org/?p=reactos.git;a=commitdiff;h=11fe17c3a1dfcdcbdff8fe...
commit 11fe17c3a1dfcdcbdff8fe872c7c91fc58546a86 Author: Andreas Maier staubim@quantentunnel.de AuthorDate: Tue Jan 7 19:06:37 2020 +0100 Commit: Thomas Faber thomas.faber@reactos.org CommitDate: Wed Mar 4 07:02:37 2020 +0100
[PSDK] Extend struct _SECPKG_DLL_FUNCTIONS, fix definitions.
* Add missing enums to MSV1_0_PROTOCOL_MESSAGE_TYPE and SECPKG_EXTENDED_INFORMATION_CLASS * Add missing function entries to LSA_SECPKG_FUNCTION_TABLE and add needed definitions. * Fix params of PLSA_AP_CALL_PACKAGE * Fix SpInitializeFn (+ NTAPI) --- sdk/include/psdk/ntsecapi.h | 5 +++- sdk/include/psdk/ntsecpkg.h | 58 ++++++++++++++++++++++++++++++++++++++------- sdk/include/psdk/sspi.h | 13 ++++++++++ 3 files changed, 66 insertions(+), 10 deletions(-)
diff --git a/sdk/include/psdk/ntsecapi.h b/sdk/include/psdk/ntsecapi.h index 52e9407dc06..c9f6073f4c8 100644 --- a/sdk/include/psdk/ntsecapi.h +++ b/sdk/include/psdk/ntsecapi.h @@ -226,7 +226,10 @@ typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE { MsV1_0CacheLogon, MsV1_0SubAuth, MsV1_0DeriveCredential, - MsV1_0CacheLookup + MsV1_0CacheLookup, +#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) + MsV1_0SetProcessOption, +#endif } MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE; typedef enum _POLICY_LSA_SERVER_ROLE { PolicyServerRoleBackup = 2, diff --git a/sdk/include/psdk/ntsecpkg.h b/sdk/include/psdk/ntsecpkg.h index c10f26b7e38..213fab3c486 100644 --- a/sdk/include/psdk/ntsecpkg.h +++ b/sdk/include/psdk/ntsecpkg.h @@ -51,6 +51,8 @@ typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS SecpkgGssInfo = 1, SecpkgContextThunks, SecpkgMutualAuthLevel, + SecpkgWowClientDll, + SecpkgExtraOids, SecpkgMaxInfo } SECPKG_EXTENDED_INFORMATION_CLASS;
@@ -131,9 +133,9 @@ typedef struct _SECPKG_CLIENT_INFO { *PSECPKG_CLIENT_INFO;
typedef struct _SECURITY_USER_DATA { - UNICODE_STRING UserName; - UNICODE_STRING LogonDomainName; - UNICODE_STRING LogonServer; + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; PSID pSid; } SECURITY_USER_DATA, *PSECURITY_USER_DATA, SecurityUserData, *PSecurityUserData; @@ -152,6 +154,22 @@ typedef struct _SECPKG_MUTUAL_AUTH_LEVEL { ULONG MutualAuthLevel; } SECPKG_MUTUAL_AUTH_LEVEL, *PSECPKG_MUTUAL_AUTH_LEVEL;
+typedef struct _SECPKG_WOW_CLIENT_DLL { + SECURITY_STRING WowClientDllPath; +} SECPKG_WOW_CLIENT_DLL, *PSECPKG_WOW_CLIENT_DLL; + +#define SECPKG_MAX_OID_LENGTH 32 +typedef struct _SECPKG_SERIALIZED_OID { + ULONG OidLength; + ULONG OidAttributes; + UCHAR OidValue[SECPKG_MAX_OID_LENGTH]; +} SECPKG_SERIALIZED_OID, *PSECPKG_SERIALIZED_OID; + +typedef struct _SECPKG_EXTRA_OIDS { + ULONG OidCount; + SECPKG_SERIALIZED_OID Oids[1]; +} SECPKG_EXTRA_OIDS, *PSECPKG_EXTRA_OIDS; + typedef struct _SECPKG_CALL_INFO { ULONG ProcessId; ULONG ThreadId; @@ -165,6 +183,8 @@ typedef struct _SECPKG_EXTENDED_INFORMATION { SECPKG_GSS_INFO GssInfo; SECPKG_CONTEXT_THUNKS ContextThunks; SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + SECPKG_WOW_CLIENT_DLL WowClientDll; + SECPKG_EXTRA_OIDS ExtraOids; } Info; } SECPKG_EXTENDED_INFORMATION, *PSECPKG_EXTENDED_INFORMATION;
@@ -235,8 +255,8 @@ typedef PVOID (NTAPI *PLSA_CREATE_SHARED_MEMORY)(ULONG, ULONG); typedef PVOID (NTAPI *PLSA_ALLOCATE_SHARED_MEMORY)(PVOID, ULONG); typedef VOID (NTAPI *PLSA_FREE_SHARED_MEMORY)(PVOID, PVOID); typedef BOOLEAN (NTAPI *PLSA_DELETE_SHARED_MEMORY)(PVOID); -typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PUNICODE_STRING, SECPKG_NAME_TYPE, - PUNICODE_STRING, BOOLEAN, ULONG, PVOID*); +typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PSECURITY_STRING, SECPKG_NAME_TYPE, + PSECURITY_STRING, BOOLEAN, ULONG, PVOID*); typedef NTSTATUS (NTAPI *PLSA_GET_USER_CREDENTIALS)(PVOID, PVOID *, PULONG, PVOID *, PULONG); typedef NTSTATUS (NTAPI *PLSA_GET_USER_AUTH_DATA)(PVOID, PUCHAR *, PULONG); @@ -247,8 +267,8 @@ typedef NTSTATUS (NTAPI *PLSA_CONVERT_AUTH_DATA_TO_TOKEN)(PVOID, ULONG, typedef NTSTATUS (NTAPI *PLSA_CLIENT_CALLBACK)(PCHAR, ULONG_PTR, ULONG_PTR, PSecBuffer, PSecBuffer); typedef NTSTATUS (NTAPI *PLSA_UPDATE_PRIMARY_CREDENTIALS)(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY); -typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PUNICODE_STRING, - SECPKG_NAME_TYPE, PUNICODE_STRING, PUCHAR *, PULONG, PUNICODE_STRING); +typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PSECURITY_STRING, + SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING); typedef NTSTATUS (NTAPI *PLSA_CRACK_SINGLE_NAME)(ULONG, BOOLEAN, PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, PULONG); @@ -256,6 +276,11 @@ typedef NTSTATUS (NTAPI *PLSA_AUDIT_ACCOUNT_LOGON)(ULONG, BOOLEAN, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS); typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING, PVOID, PVOID, ULONG, PVOID*, PULONG, PNTSTATUS); +typedef VOID (NTAPI *PLSA_PROTECT_MEMORY)(PVOID, ULONG); +typedef NTSTATUS (NTAPI *PLSA_OPEN_TOKEN_BY_LOGON_ID)(PLUID, HANDLE *); +typedef NTSTATUS (NTAPI *PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN)(PUCHAR, ULONG, PVOID, PUCHAR *, PULONG); +typedef PVOID (NTAPI *PLSA_ALLOCATE_PRIVATE_HEAP)(SIZE_T); +typedef VOID (NTAPI *PLSA_FREE_PRIVATE_HEAP)(PVOID);
/* Dispatch tables of functions used by SSP/AP */ typedef struct _SECPKG_DLL_FUNCTIONS { @@ -322,6 +347,21 @@ typedef struct _LSA_SECPKG_FUNCTION_TABLE { PLSA_CRACK_SINGLE_NAME CrackSingleName; PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; +#ifdef _WINCRED_H_ + CredReadFn *CrediRead; + CredReadDomainCredentialsFn *CrediReadDomainCredentials; + CredFreeCredentialsFn *CrediFreeCredentials; +#else + PLSA_PROTECT_MEMORY DummyFunction1; + PLSA_PROTECT_MEMORY DummyFunction2; + PLSA_PROTECT_MEMORY DummyFunction3; +#endif + PLSA_PROTECT_MEMORY LsaProtectMemory; + PLSA_PROTECT_MEMORY LsaUnprotectMemory; + PLSA_OPEN_TOKEN_BY_LOGON_ID OpenTokenByLogonId; + PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN ExpandAuthDataForDomain; + PLSA_ALLOCATE_PRIVATE_HEAP AllocatePrivateHeap; + PLSA_FREE_PRIVATE_HEAP FreePrivateHeap; } LSA_SECPKG_FUNCTION_TABLE, *PLSA_SECPKG_FUNCTION_TABLE;
@@ -330,7 +370,7 @@ typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG, PLSA_DISPATCH_TABLE, PLSA_STRING, PLSA_STRING, PLSA_STRING *); typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER)(LPWSTR, LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); -typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG, +typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PLSA_CLIENT_REQUEST, PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS); typedef VOID (NTAPI *PLSA_AP_LOGON_TERMINATED)(PLUID); typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_UNTRUSTED)(PLSA_CLIENT_REQUEST, @@ -345,7 +385,7 @@ typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX2)(PLSA_CLIENT_REQUEST, SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *); -typedef NTSTATUS (SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS, +typedef NTSTATUS (NTAPI SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS, PLSA_SECPKG_FUNCTION_TABLE); typedef NTSTATUS (NTAPI SpShutDownFn)(void); typedef NTSTATUS (NTAPI SpGetInfoFn)(PSecPkgInfoW); diff --git a/sdk/include/psdk/sspi.h b/sdk/include/psdk/sspi.h index c436fd85724..648ea3e160c 100644 --- a/sdk/include/psdk/sspi.h +++ b/sdk/include/psdk/sspi.h @@ -77,6 +77,19 @@ typedef struct _SECURITY_INTEGER } SECURITY_INTEGER, *PSECURITY_INTEGER; typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
+// UNICODE_STRING should have the same memory layout in 32 bit and 64 bit mode. +// In 32 bit mode SECURITY_STRING is simply a clone of UNICODE_STRING. +// It is used internal in kernel an security components. +#ifndef _NTDEF_ +typedef struct _SECURITY_STRING { + unsigned short Length; + unsigned short MaximumLength; + unsigned short *Buffer; +} SECURITY_STRING, *PSECURITY_STRING; +#else +typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING; +#endif + #define SSPIPFC_CREDPROV_DO_NOT_SAVE 0x00000001 #define SSPIPFC_NO_CHECKBOX 0x00000002