Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-07-10 22:01:25 +0400
committerCorinna Vinschen <corinna@vinschen.de>2008-07-10 22:01:25 +0400
commitc68cb84e880db21841e85ae40533c904f7a95d23 (patch)
tree6a1ab23a4bb9ad514300c822f1522623c988c505 /winsup/cygwin/cyglsa.h
parent9035519215c95286690c8e9c29bc9dc97583ab5c (diff)
* cyglsa.h (SECURITY_STRING): Define.
(enum _SECPKG_NAME_TYPE): Define. (struct _SECPKG_CALL_INFO): Define. (struct _LSA_SECPKG_FUNCS): Extend to full size. Define unused functions lazily. (cygprf_t): Define. * sec_auth.cc (lsaauth): Use actual primary group if no admins group. Add (disabled) code to fetch token from profil data.
Diffstat (limited to 'winsup/cygwin/cyglsa.h')
-rw-r--r--winsup/cygwin/cyglsa.h64
1 files changed, 62 insertions, 2 deletions
diff --git a/winsup/cygwin/cyglsa.h b/winsup/cygwin/cyglsa.h
index b9da92b61..4349de8cd 100644
--- a/winsup/cygwin/cyglsa.h
+++ b/winsup/cygwin/cyglsa.h
@@ -23,6 +23,8 @@ extern "C" {
/* Datastructures not defined in w32api. */
typedef PVOID *PLSA_CLIENT_REQUEST;
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+
typedef struct _SECPKG_CLIENT_INFO
{
LUID LogonId;
@@ -33,6 +35,23 @@ typedef struct _SECPKG_CLIENT_INFO
BOOLEAN Restricted;
} SECPKG_CLIENT_INFO, *PSECPKG_CLIENT_INFO;
+typedef enum _SECPKG_NAME_TYPE
+{
+ SecNameSamCompatible,
+ SecNameAlternateId,
+ SecNameFlat,
+ SecNameDN,
+ SecNameSPN
+} SECPKG_NAME_TYPE, *PSECPKG_NAME_TYPE;
+
+typedef struct _SECPKG_CALL_INFO
+{
+ ULONG ProcessId;
+ ULONG ThreadId;
+ ULONG Attributes;
+ ULONG CallCount;
+} SECPKG_CALL_INFO, *PSECPKG_CALL_INFO;
+
/* The table returned by LsaApInitializePackage is actually a
LSA_SECPKG_FUNCTION_TABLE even though that's not documented.
We need only a subset of this table, basically the LSA_DISPATCH_TABLE
@@ -41,7 +60,7 @@ typedef struct _LSA_SECPKG_FUNCS
{
NTSTATUS (NTAPI *CreateLogonSession)(PLUID);
NTSTATUS (NTAPI *DeleteLogonSession)(PLUID);
- NTSTATUS (NTAPI *AddCredentials)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *AddCredentials)(PLUID, ULONG, PLSA_STRING, PLSA_STRING);
NTSTATUS (NTAPI *GetCredentials)(PVOID); /* wrong prototype, unused */
NTSTATUS (NTAPI *DeleteCredentials)(PVOID); /* wrong prototype, unused */
PVOID (NTAPI *AllocateLsaHeap)(ULONG);
@@ -54,10 +73,41 @@ typedef struct _LSA_SECPKG_FUNCS
PVOID, PVOID);
NTSTATUS (NTAPI *ImpersonateClient)(VOID);
NTSTATUS (NTAPI *UnloadPackage)(VOID);
- NTSTATUS (NTAPI *DuplicateHandle)(HANDLE,PHANDLE);
+ NTSTATUS (NTAPI *DuplicateHandle)(HANDLE, PHANDLE);
NTSTATUS (NTAPI *SaveSupplementalCredentials)(VOID);
NTSTATUS (NTAPI *CreateThread)(PVOID); /* wrong prototype, unused */
NTSTATUS (NTAPI *GetClientInfo)(PSECPKG_CLIENT_INFO);
+ NTSTATUS (NTAPI *RegisterNotification)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *CancelNotification)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *MapBuffer)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *CreateToken)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *AuditLogon)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *CallPackage)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *FreeReturnBuffer)(PVOID); /* wrong prototype, unused */
+ BOOLEAN (NTAPI *GetCallInfo)(PSECPKG_CALL_INFO);
+ NTSTATUS (NTAPI *CallPackageEx)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *CreateSharedMemory)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *AllocateSharedMemory)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *FreeSharedMemory)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *DeleteSharedMemory)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *OpenSamUser)(PSECURITY_STRING, SECPKG_NAME_TYPE,
+ PSECURITY_STRING, BOOLEAN, ULONG, PVOID *);
+ NTSTATUS (NTAPI *GetUserCredentials)(PVOID, PVOID, PULONG, PVOID *, PULONG);
+ NTSTATUS (NTAPI *GetUserAuthData)(PVOID, PUCHAR *, PULONG);
+ NTSTATUS (NTAPI *CloseSamUser)(PVOID);
+ NTSTATUS (NTAPI *ConvertAuthDataToToken)(PVOID, ULONG,
+ SECURITY_IMPERSONATION_LEVEL,
+ PTOKEN_SOURCE, SECURITY_LOGON_TYPE,
+ PUNICODE_STRING, PHANDLE, PLUID,
+ PUNICODE_STRING, PNTSTATUS);
+ NTSTATUS (NTAPI *ClientCallback)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *UpdateCredentials)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *GetAuthDataForUser)(PSECURITY_STRING, SECPKG_NAME_TYPE,
+ PSECURITY_STRING, PUCHAR *, PULONG,
+ PUNICODE_STRING);
+ NTSTATUS (NTAPI *CrackSingleName)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *AuditAccountLogon)(PVOID); /* wrong prototype, unused */
+ NTSTATUS (NTAPI *CallPackagePassthrough)(PVOID); /* wrong prototype, unused */
} LSA_SECPKG_FUNCS, *PLSA_SECPKG_FUNCS;
typedef enum _LSA_TOKEN_INFORMATION_TYPE
@@ -142,6 +192,16 @@ typedef struct
BYTE data[1];
} cyglsa_t;
+typedef struct
+{
+ DWORD magic_pre;
+ HANDLE token;
+ DWORD magic_post;
+} cygprf_t;
+
+#define MAGIC_PRE 0x12345678UL
+#define MAGIC_POST 0x87654321UL
+
#ifdef __cplusplus
}
#endif