https://git.reactos.org/?p=reactos.git;a=commitdiff;h=11fe17c3a1dfcdcbdff8fe872c7c91fc58546a86

commit 11fe17c3a1dfcdcbdff8fe872c7c91fc58546a86
Author:     Andreas Maier <[email protected]>
AuthorDate: Tue Jan 7 19:06:37 2020 +0100
Commit:     Thomas Faber <[email protected]>
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
 

Reply via email to