ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/sspi.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 72359 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef __SSPI_H__
7 #define __SSPI_H__
8
9 #include <_mingw_unicode.h>
10 #include <ntsecapi.h>
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 #ifdef SECURITY_WIN32
17 #define ISSP_LEVEL 32
18 #define ISSP_MODE 1
19 #endif
20
21 #ifdef SECURITY_KERNEL
22 #define ISSP_LEVEL 32
23
24 #ifdef ISSP_MODE
25 #undef ISSP_MODE
26 #endif
27 #define ISSP_MODE 0
28 #endif
29
30 #ifdef SECURITY_MAC
31 #define ISSP_LEVEL 32
32 #define ISSP_MODE 1
33 #endif
34
35 #ifndef ISSP_LEVEL
36 #error You must define one of SECURITY_WIN32,SECURITY_KERNEL,or
37 #error SECURITY_MAC
38 #endif
39
40 #if defined(_NO_KSECDD_IMPORT_)
41
42 #define KSECDDDECLSPEC
43 #else
44
45 #define KSECDDDECLSPEC __declspec(dllimport)
46 #endif
47
48 typedef WCHAR SEC_WCHAR;
49 typedef CHAR SEC_CHAR;
50
51 #ifndef __SECSTATUS_DEFINED__
52 typedef LONG SECURITY_STATUS;
53 #define __SECSTATUS_DEFINED__
54 #endif
55
56 #ifndef WINAPI
57 #if defined(_ARM_)
58 #define WINAPI
59 #else
60 #define WINAPI __stdcall
61 #endif
62 #endif
63
64 #define SEC_TEXT TEXT
65 #define SEC_FAR
66 #define __SEC_FAR
67 #define SEC_ENTRY WINAPI
68
69 #if defined(UNICODE)
70 typedef SEC_WCHAR *SECURITY_PSTR;
71 typedef CONST SEC_WCHAR *SECURITY_PCSTR;
72 #else
73 typedef SEC_CHAR *SECURITY_PSTR;
74 typedef CONST SEC_CHAR *SECURITY_PCSTR;
75 #endif
76
77
78 #ifndef __SECHANDLE_DEFINED__
79 typedef struct _SecHandle {
80 ULONG_PTR dwLower;
81 ULONG_PTR dwUpper;
82 } SecHandle,*PSecHandle;
83
84 #define __SECHANDLE_DEFINED__
85 #endif
86
87 #define SecInvalidateHandle(x) ((PSecHandle) x)->dwLower = ((ULONG_PTR) ((INT_PTR)-1)); ((PSecHandle) x)->dwUpper = ((ULONG_PTR) ((INT_PTR)-1));
88 #define SecIsValidHandle(x) ((((PSecHandle) x)->dwLower!=((ULONG_PTR) ((INT_PTR) -1))) && (((PSecHandle) x)->dwUpper!=((ULONG_PTR) ((INT_PTR) -1))))
89
90 #define SEC_DELETED_HANDLE ((ULONG_PTR)(-2))
91
92 typedef SecHandle CredHandle;
93 typedef PSecHandle PCredHandle;
94
95 typedef SecHandle CtxtHandle;
96 typedef PSecHandle PCtxtHandle;
97
98 #ifdef WIN32_CHICAGO
99 __MINGW_EXTENSION typedef unsigned __int64 QWORD;
100 typedef QWORD SECURITY_INTEGER,*PSECURITY_INTEGER;
101 #define SEC_SUCCESS(Status) ((Status) >= 0)
102 #elif defined(_NTDEF_) || defined(_WINNT_)
103 typedef LARGE_INTEGER _SECURITY_INTEGER,SECURITY_INTEGER,*PSECURITY_INTEGER;
104 #else
105 typedef struct _SECURITY_INTEGER {
106 unsigned __LONG32 LowPart;
107 __LONG32 HighPart;
108 } SECURITY_INTEGER,*PSECURITY_INTEGER;
109 #endif
110
111 #ifndef SECURITY_MAC
112 typedef SECURITY_INTEGER TimeStamp;
113 typedef SECURITY_INTEGER *PTimeStamp;
114 #else
115 typedef unsigned __LONG32 TimeStamp;
116 typedef unsigned __LONG32 *PTimeStamp;
117 #endif
118
119 #ifndef _NTDEF_
120 typedef struct _SECURITY_STRING {
121 unsigned short Length;
122 unsigned short MaximumLength;
123 unsigned short *Buffer;
124 } SECURITY_STRING,*PSECURITY_STRING;
125 #else
126 typedef UNICODE_STRING SECURITY_STRING,*PSECURITY_STRING;
127 #endif
128
129 typedef struct _SecPkgInfoW {
130 unsigned __LONG32 fCapabilities;
131 unsigned short wVersion;
132 unsigned short wRPCID;
133 unsigned __LONG32 cbMaxToken;
134 SEC_WCHAR *Name;
135 SEC_WCHAR *Comment;
136 } SecPkgInfoW,*PSecPkgInfoW;
137
138 typedef struct _SecPkgInfoA {
139 unsigned __LONG32 fCapabilities;
140 unsigned short wVersion;
141 unsigned short wRPCID;
142 unsigned __LONG32 cbMaxToken;
143 SEC_CHAR *Name;
144 SEC_CHAR *Comment;
145 } SecPkgInfoA,*PSecPkgInfoA;
146
147 #define SecPkgInfo __MINGW_NAME_AW(SecPkgInfo)
148 #define PSecPkgInfo __MINGW_NAME_AW(PSecPkgInfo)
149
150 #define SECPKG_FLAG_INTEGRITY 0x00000001
151 #define SECPKG_FLAG_PRIVACY 0x00000002
152 #define SECPKG_FLAG_TOKEN_ONLY 0x00000004
153 #define SECPKG_FLAG_DATAGRAM 0x00000008
154 #define SECPKG_FLAG_CONNECTION 0x00000010
155 #define SECPKG_FLAG_MULTI_REQUIRED 0x00000020
156 #define SECPKG_FLAG_CLIENT_ONLY 0x00000040
157 #define SECPKG_FLAG_EXTENDED_ERROR 0x00000080
158 #define SECPKG_FLAG_IMPERSONATION 0x00000100
159 #define SECPKG_FLAG_ACCEPT_WIN32_NAME 0x00000200
160 #define SECPKG_FLAG_STREAM 0x00000400
161 #define SECPKG_FLAG_NEGOTIABLE 0x00000800
162 #define SECPKG_FLAG_GSS_COMPATIBLE 0x00001000
163 #define SECPKG_FLAG_LOGON 0x00002000
164 #define SECPKG_FLAG_ASCII_BUFFERS 0x00004000
165 #define SECPKG_FLAG_FRAGMENT 0x00008000
166 #define SECPKG_FLAG_MUTUAL_AUTH 0x00010000
167 #define SECPKG_FLAG_DELEGATION 0x00020000
168 #define SECPKG_FLAG_READONLY_WITH_CHECKSUM 0x00040000
169 #define SECPKG_FLAG_RESTRICTED_TOKENS 0x00080000
170 #define SECPKG_FLAG_NEGO_EXTENDER 0x00100000
171 #define SECPKG_FLAG_NEGOTIABLE2 0x00200000
172 #define SECPKG_FLAG_APPCONTAINER_PASSTHROUGH 0x00400000
173 #define SECPKG_FLAG_APPCONTAINER_CHECKS 0x00800000
174 #define SECPKG_FLAG_CREDENTIAL_ISOLATION_ENABLED 0x01000000
175 #define SECPKG_FLAG_APPLY_LOOPBACK 0x02000000
176
177 #define SECPKG_ID_NONE 0xFFFF
178
179 #define SECPKG_CALLFLAGS_APPCONTAINER 0x00000001
180 #define SECPKG_CALLFLAGS_APPCONTAINER_AUTHCAPABLE 0x00000002
181 #define SECPKG_CALLFLAGS_FORCE_SUPPLIED 0x00000004
182 #define SECPKG_CALLFLAGS_APPCONTAINER_UPNCAPABLE 0x00000008
183
184 typedef struct _SecBuffer {
185 unsigned __LONG32 cbBuffer;
186 unsigned __LONG32 BufferType;
187 void *pvBuffer;
188 } SecBuffer,*PSecBuffer;
189
190 typedef struct _SecBufferDesc {
191 unsigned __LONG32 ulVersion;
192 unsigned __LONG32 cBuffers;
193 PSecBuffer pBuffers;
194 } SecBufferDesc,*PSecBufferDesc;
195
196 #define SECBUFFER_VERSION 0
197
198 #define SECBUFFER_EMPTY 0
199 #define SECBUFFER_DATA 1
200 #define SECBUFFER_TOKEN 2
201 #define SECBUFFER_PKG_PARAMS 3
202 #define SECBUFFER_MISSING 4
203 #define SECBUFFER_EXTRA 5
204 #define SECBUFFER_STREAM_TRAILER 6
205 #define SECBUFFER_STREAM_HEADER 7
206 #define SECBUFFER_NEGOTIATION_INFO 8
207 #define SECBUFFER_PADDING 9
208 #define SECBUFFER_STREAM 10
209 #define SECBUFFER_MECHLIST 11
210 #define SECBUFFER_MECHLIST_SIGNATURE 12
211 #define SECBUFFER_TARGET 13
212 #define SECBUFFER_CHANNEL_BINDINGS 14
213 #define SECBUFFER_CHANGE_PASS_RESPONSE 15
214 #define SECBUFFER_TARGET_HOST 16
215 #define SECBUFFER_ALERT 17
216 #define SECBUFFER_APPLICATION_PROTOCOLS 18
217 #define SECBUFFER_SRTP_PROTECTION_PROFILES 19
218 #define SECBUFFER_SRTP_MASTER_KEY_IDENTIFIER 20
219 #define SECBUFFER_TOKEN_BINDING 21
220 #define SECBUFFER_PRESHARED_KEY 22
221 #define SECBUFFER_PRESHARED_KEY_IDENTITY 23
222 #define SECBUFFER_DTLS_MTU 24
223 #define SECBUFFER_SEND_GENERIC_TLS_EXTENSION 25
224 #define SECBUFFER_SUBSCRIBE_GENERIC_TLS_EXTENSION 26
225 #define SECBUFFER_FLAGS 27
226 #define SECBUFFER_TRAFFIC_SECRETS 28
227
228 #define SECBUFFER_ATTRMASK 0xF0000000
229 #define SECBUFFER_READONLY 0x80000000
230 #define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000
231 #define SECBUFFER_RESERVED 0x60000000
232
233 typedef struct _SEC_NEGOTIATION_INFO {
234 unsigned __LONG32 Size;
235 unsigned __LONG32 NameLength;
236 SEC_WCHAR *Name;
237 void *Reserved;
238 } SEC_NEGOTIATION_INFO,*PSEC_NEGOTIATION_INFO;
239
240 typedef struct _SEC_CHANNEL_BINDINGS {
241 unsigned __LONG32 dwInitiatorAddrType;
242 unsigned __LONG32 cbInitiatorLength;
243 unsigned __LONG32 dwInitiatorOffset;
244 unsigned __LONG32 dwAcceptorAddrType;
245 unsigned __LONG32 cbAcceptorLength;
246 unsigned __LONG32 dwAcceptorOffset;
247 unsigned __LONG32 cbApplicationDataLength;
248 unsigned __LONG32 dwApplicationDataOffset;
249 } SEC_CHANNEL_BINDINGS,*PSEC_CHANNEL_BINDINGS;
250
251 typedef enum _SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT {
252 SecApplicationProtocolNegotiationExt_None,
253 SecApplicationProtocolNegotiationExt_NPN,
254 SecApplicationProtocolNegotiationExt_ALPN
255 } SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT,*PSEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT;
256
257 typedef struct _SEC_APPLICATION_PROTOCOL_LIST {
258 SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT ProtoNegoExt;
259 unsigned short ProtocolListSize;
260 unsigned char ProtocolList[ANYSIZE_ARRAY];
261 } SEC_APPLICATION_PROTOCOL_LIST,*PSEC_APPLICATION_PROTOCOL_LIST;
262
263 typedef struct _SEC_APPLICATION_PROTOCOLS {
264 unsigned __LONG32 ProtocolListsSize;
265 SEC_APPLICATION_PROTOCOL_LIST ProtocolLists[ANYSIZE_ARRAY];
266 } SEC_APPLICATION_PROTOCOLS,*PSEC_APPLICATION_PROTOCOLS;
267
268 typedef struct _SEC_SRTP_PROTECTION_PROFILES {
269 unsigned short ProfilesSize;
270 unsigned short ProfilesList[ANYSIZE_ARRAY];
271 } SEC_SRTP_PROTECTION_PROFILES,*PSEC_SRTP_PROTECTION_PROFILES;
272
273 typedef struct _SEC_SRTP_MASTER_KEY_IDENTIFIER {
274 unsigned char MasterKeyIdentifierSize;
275 unsigned char MasterKeyIdentifier[ANYSIZE_ARRAY];
276 } SEC_SRTP_MASTER_KEY_IDENTIFIER,*PSEC_SRTP_MASTER_KEY_IDENTIFIER;
277
278 typedef struct _SEC_TOKEN_BINDING {
279 unsigned char MajorVersion;
280 unsigned char MinorVersion;
281 unsigned short KeyParametersSize;
282 unsigned char KeyParameters[ANYSIZE_ARRAY];
283 } SEC_TOKEN_BINDING,*PSEC_TOKEN_BINDING;
284
285 typedef struct _SEC_PRESHAREDKEY {
286 unsigned short KeySize;
287 unsigned char Key[ANYSIZE_ARRAY];
288 } SEC_PRESHAREDKEY,*PSEC_PRESHAREDKEY;
289
290 typedef struct _SEC_PRESHAREDKEY_IDENTITY {
291 unsigned short KeyIdentitySize;
292 unsigned char KeyIdentity[ANYSIZE_ARRAY];
293 } SEC_PRESHAREDKEY_IDENTITY,*PSEC_PRESHAREDKEY_IDENTITY;
294
295 typedef struct _SEC_DTLS_MTU {
296 unsigned short PathMTU;
297 } SEC_DTLS_MTU,*PSEC_DTLS_MTU;
298
299 typedef struct _SEC_FLAGS {
300 unsigned long long Flags;
301 } SEC_FLAGS,*PSEC_FLAGS;
302
303 typedef enum _SEC_TRAFFIC_SECRET_TYPE {
304 SecTrafficSecret_None,
305 SecTrafficSecret_Client,
306 SecTrafficSecret_Server
307 } SEC_TRAFFIC_SECRET_TYPE,*PSEC_TRAFFIC_SECRET_TYPE;
308
309 #define SZ_ALG_MAX_SIZE 64
310
311 typedef struct _SEC_TRAFFIC_SECRETS {
312 wchar_t SymmetricAlgId[SZ_ALG_MAX_SIZE];
313 wchar_t ChainingMode[SZ_ALG_MAX_SIZE];
314 wchar_t HashAlgId[SZ_ALG_MAX_SIZE];
315 unsigned short KeySize;
316 unsigned short IvSize;
317 unsigned short MsgSequenceStart;
318 unsigned short MsgSequenceEnd;
319 SEC_TRAFFIC_SECRET_TYPE TrafficSecretType;
320 unsigned short TrafficSecretSize;
321 unsigned char TrafficSecret[ANYSIZE_ARRAY];
322 } SEC_TRAFFIC_SECRETS,*PSEC_TRAFFIC_SECRETS;
323
324 #define SECURITY_NATIVE_DREP 0x00000010
325 #define SECURITY_NETWORK_DREP 0x00000000
326
327 #define SECPKG_CRED_INBOUND 0x00000001
328 #define SECPKG_CRED_OUTBOUND 0x00000002
329 #define SECPKG_CRED_BOTH 0x00000003
330 #define SECPKG_CRED_DEFAULT 0x00000004
331 #define SECPKG_CRED_RESERVED 0xF0000000
332
333 #define SECPKG_CRED_AUTOLOGON_RESTRICTED 0x00000010
334 #define SECPKG_CRED_PROCESS_POLICY_ONLY 0x00000020
335
336 #define ISC_REQ_DELEGATE 0x00000001
337 #define ISC_REQ_MUTUAL_AUTH 0x00000002
338 #define ISC_REQ_REPLAY_DETECT 0x00000004
339 #define ISC_REQ_SEQUENCE_DETECT 0x00000008
340 #define ISC_REQ_CONFIDENTIALITY 0x00000010
341 #define ISC_REQ_USE_SESSION_KEY 0x00000020
342 #define ISC_REQ_PROMPT_FOR_CREDS 0x00000040
343 #define ISC_REQ_USE_SUPPLIED_CREDS 0x00000080
344 #define ISC_REQ_ALLOCATE_MEMORY 0x00000100
345 #define ISC_REQ_USE_DCE_STYLE 0x00000200
346 #define ISC_REQ_DATAGRAM 0x00000400
347 #define ISC_REQ_CONNECTION 0x00000800
348 #define ISC_REQ_CALL_LEVEL 0x00001000
349 #define ISC_REQ_FRAGMENT_SUPPLIED 0x00002000
350 #define ISC_REQ_EXTENDED_ERROR 0x00004000
351 #define ISC_REQ_STREAM 0x00008000
352 #define ISC_REQ_INTEGRITY 0x00010000
353 #define ISC_REQ_IDENTIFY 0x00020000
354 #define ISC_REQ_NULL_SESSION 0x00040000
355 #define ISC_REQ_MANUAL_CRED_VALIDATION 0x00080000
356 #define ISC_REQ_RESERVED1 0x00100000
357 #define ISC_REQ_FRAGMENT_TO_FIT 0x00200000
358 #define ISC_REQ_FORWARD_CREDENTIALS 0x00400000
359 #define ISC_REQ_NO_INTEGRITY 0x00800000
360 #define ISC_REQ_USE_HTTP_STYLE 0x01000000
361 #define ISC_REQ_UNVERIFIED_TARGET_NAME 0x20000000
362 #define ISC_REQ_CONFIDENTIALITY_ONLY 0x40000000
363 #define ISC_REQ_MESSAGES 0x0000000100000000
364
365 #define ISC_RET_DELEGATE 0x00000001
366 #define ISC_RET_MUTUAL_AUTH 0x00000002
367 #define ISC_RET_REPLAY_DETECT 0x00000004
368 #define ISC_RET_SEQUENCE_DETECT 0x00000008
369 #define ISC_RET_CONFIDENTIALITY 0x00000010
370 #define ISC_RET_USE_SESSION_KEY 0x00000020
371 #define ISC_RET_USED_COLLECTED_CREDS 0x00000040
372 #define ISC_RET_USED_SUPPLIED_CREDS 0x00000080
373 #define ISC_RET_ALLOCATED_MEMORY 0x00000100
374 #define ISC_RET_USED_DCE_STYLE 0x00000200
375 #define ISC_RET_DATAGRAM 0x00000400
376 #define ISC_RET_CONNECTION 0x00000800
377 #define ISC_RET_INTERMEDIATE_RETURN 0x00001000
378 #define ISC_RET_CALL_LEVEL 0x00002000
379 #define ISC_RET_EXTENDED_ERROR 0x00004000
380 #define ISC_RET_STREAM 0x00008000
381 #define ISC_RET_INTEGRITY 0x00010000
382 #define ISC_RET_IDENTIFY 0x00020000
383 #define ISC_RET_NULL_SESSION 0x00040000
384 #define ISC_RET_MANUAL_CRED_VALIDATION 0x00080000
385 #define ISC_RET_RESERVED1 0x00100000
386 #define ISC_RET_FRAGMENT_ONLY 0x00200000
387 #define ISC_RET_FORWARD_CREDENTIALS 0x00400000
388 #define ISC_RET_USED_HTTP_STYLE 0x01000000
389 #define ISC_RET_NO_ADDITIONAL_TOKEN 0x02000000
390 #define ISC_RET_REAUTHENTICATION 0x08000000
391 #define ISC_RET_CONFIDENTIALITY_ONLY 0x40000000
392 #define ISC_RET_MESSAGES 0x0000000100000000
393
394 #define ASC_REQ_DELEGATE 0x00000001
395 #define ASC_REQ_MUTUAL_AUTH 0x00000002
396 #define ASC_REQ_REPLAY_DETECT 0x00000004
397 #define ASC_REQ_SEQUENCE_DETECT 0x00000008
398 #define ASC_REQ_CONFIDENTIALITY 0x00000010
399 #define ASC_REQ_USE_SESSION_KEY 0x00000020
400 #define ASC_REQ_SESSION_TICKET 0x00000040
401 #define ASC_REQ_ALLOCATE_MEMORY 0x00000100
402 #define ASC_REQ_USE_DCE_STYLE 0x00000200
403 #define ASC_REQ_DATAGRAM 0x00000400
404 #define ASC_REQ_CONNECTION 0x00000800
405 #define ASC_REQ_CALL_LEVEL 0x00001000
406 #define ASC_REQ_FRAGMENT_SUPPLIED 0x00002000
407 #define ASC_REQ_EXTENDED_ERROR 0x00008000
408 #define ASC_REQ_STREAM 0x00010000
409 #define ASC_REQ_INTEGRITY 0x00020000
410 #define ASC_REQ_LICENSING 0x00040000
411 #define ASC_REQ_IDENTIFY 0x00080000
412 #define ASC_REQ_ALLOW_NULL_SESSION 0x00100000
413 #define ASC_REQ_ALLOW_NON_USER_LOGONS 0x00200000
414 #define ASC_REQ_ALLOW_CONTEXT_REPLAY 0x00400000
415 #define ASC_REQ_FRAGMENT_TO_FIT 0x00800000
416 #define ASC_REQ_NO_TOKEN 0x01000000
417 #define ASC_REQ_PROXY_BINDINGS 0x04000000
418 #define ASC_REQ_ALLOW_MISSING_BINDINGS 0x10000000
419 #define ASC_REQ_MESSAGES 0x0000000100000000
420
421 #define ASC_RET_DELEGATE 0x00000001
422 #define ASC_RET_MUTUAL_AUTH 0x00000002
423 #define ASC_RET_REPLAY_DETECT 0x00000004
424 #define ASC_RET_SEQUENCE_DETECT 0x00000008
425 #define ASC_RET_CONFIDENTIALITY 0x00000010
426 #define ASC_RET_USE_SESSION_KEY 0x00000020
427 #define ASC_RET_SESSION_TICKET 0x00000040
428 #define ASC_RET_ALLOCATED_MEMORY 0x00000100
429 #define ASC_RET_USED_DCE_STYLE 0x00000200
430 #define ASC_RET_DATAGRAM 0x00000400
431 #define ASC_RET_CONNECTION 0x00000800
432 #define ASC_RET_CALL_LEVEL 0x00002000
433 #define ASC_RET_THIRD_LEG_FAILED 0x00004000
434 #define ASC_RET_EXTENDED_ERROR 0x00008000
435 #define ASC_RET_STREAM 0x00010000
436 #define ASC_RET_INTEGRITY 0x00020000
437 #define ASC_RET_LICENSING 0x00040000
438 #define ASC_RET_IDENTIFY 0x00080000
439 #define ASC_RET_NULL_SESSION 0x00100000
440 #define ASC_RET_ALLOW_NON_USER_LOGONS 0x00200000
441 #define ASC_RET_ALLOW_CONTEXT_REPLAY 0x00400000
442 #define ASC_RET_FRAGMENT_ONLY 0x00800000
443 #define ASC_RET_NO_TOKEN 0x01000000
444 #define ASC_RET_NO_ADDITIONAL_TOKEN 0x02000000
445 #define ASC_RET_MESSAGES 0x0000000100000000
446
447 #define SECPKG_CRED_ATTR_NAMES 1
448 #define SECPKG_CRED_ATTR_SSI_PROVIDER 2
449 #define SECPKG_CRED_ATTR_KDC_PROXY_SETTINGS 3
450 #define SECPKG_CRED_ATTR_CERT 4
451 #define SECPKG_CRED_ATTR_PAC_BYPASS 5
452
453 typedef struct _SecPkgCredentials_NamesW
454 {
455 SEC_WCHAR *sUserName;
456 } SecPkgCredentials_NamesW,*PSecPkgCredentials_NamesW;
457
458 typedef struct _SecPkgCredentials_NamesA
459 {
460 SEC_CHAR *sUserName;
461 } SecPkgCredentials_NamesA,*PSecPkgCredentials_NamesA;
462
463 #define SecPkgCredentials_Names __MINGW_NAME_AW(SecPkgCredentials_Names)
464 #define PSecPkgCredentials_Names __MINGW_NAME_AW(PSecPkgCredentials_Names)
465
466 typedef struct _SecPkgCredentials_SSIProviderW {
467 SEC_WCHAR *sProviderName;
468 unsigned __LONG32 ProviderInfoLength;
469 char *ProviderInfo;
470 } SecPkgCredentials_SSIProviderW,*PSecPkgCredentials_SSIProviderW;
471
472 typedef struct _SecPkgCredentials_SSIProviderA {
473 SEC_CHAR *sProviderName;
474 unsigned __LONG32 ProviderInfoLength;
475 char *ProviderInfo;
476 } SecPkgCredentials_SSIProviderA,*PSecPkgCredentials_SSIProviderA;
477
478 #define SecPkgCredentials_SSIProvider __MINGW_NAME_AW(SecPkgCredentials_SSIProvider)
479 #define PSecPkgCredentials_SSIProvider __MINGW_NAME_AW(PSecPkgCredentials_SSIProvider)
480
481 #define KDC_PROXY_SETTINGS_V1 1
482 #define KDC_PROXY_SETTINGS_FLAGS_FORCEPROXY 0x1
483
484 typedef struct _SecPkgCredentials_KdcProxySettingsW {
485 ULONG Version;
486 ULONG Flags;
487 USHORT ProxyServerOffset;
488 USHORT ProxyServerLength;
489 USHORT ClientTlsCredOffset;
490 USHORT ClientTlsCredLength;
491 } SecPkgCredentials_KdcProxySettingsW,*PSecPkgCredentials_KdcProxySettingsW;
492
493 typedef struct _SecPkgCredentials_Cert {
494 unsigned __LONG32 EncodedCertSize;
495 unsigned char *EncodedCert;
496 } SecPkgCredentials_Cert,*PSecPkgCredentials_Cert;
497
498 #define SECPKG_ATTR_SIZES 0
499 #define SECPKG_ATTR_NAMES 1
500 #define SECPKG_ATTR_LIFESPAN 2
501 #define SECPKG_ATTR_DCE_INFO 3
502 #define SECPKG_ATTR_STREAM_SIZES 4
503 #define SECPKG_ATTR_KEY_INFO 5
504 #define SECPKG_ATTR_AUTHORITY 6
505 #define SECPKG_ATTR_PROTO_INFO 7
506 #define SECPKG_ATTR_PASSWORD_EXPIRY 8
507 #define SECPKG_ATTR_SESSION_KEY 9
508 #define SECPKG_ATTR_PACKAGE_INFO 10
509 #define SECPKG_ATTR_USER_FLAGS 11
510 #define SECPKG_ATTR_NEGOTIATION_INFO 12
511 #define SECPKG_ATTR_NATIVE_NAMES 13
512 #define SECPKG_ATTR_FLAGS 14
513 #define SECPKG_ATTR_USE_VALIDATED 15
514 #define SECPKG_ATTR_CREDENTIAL_NAME 16
515 #define SECPKG_ATTR_TARGET_INFORMATION 17
516 #define SECPKG_ATTR_ACCESS_TOKEN 18
517 #define SECPKG_ATTR_TARGET 19
518 #define SECPKG_ATTR_AUTHENTICATION_ID 20
519 #define SECPKG_ATTR_LOGOFF_TIME 21
520 #define SECPKG_ATTR_NEGO_KEYS 22
521 #define SECPKG_ATTR_PROMPTING_NEEDED 24
522 #define SECPKG_ATTR_UNIQUE_BINDINGS 25
523 #define SECPKG_ATTR_ENDPOINT_BINDINGS 26
524 #define SECPKG_ATTR_CLIENT_SPECIFIED_TARGET 27
525 #define SECPKG_ATTR_LAST_CLIENT_TOKEN_STATUS 30
526 #define SECPKG_ATTR_NEGO_PKG_INFO 31
527 #define SECPKG_ATTR_NEGO_STATUS 32
528 #define SECPKG_ATTR_CONTEXT_DELETED 33
529 #define SECPKG_ATTR_DTLS_MTU 34
530 #define SECPKG_ATTR_DATAGRAM_SIZES SECPKG_ATTR_STREAM_SIZES
531 #define SECPKG_ATTR_SUBJECT_SECURITY_ATTRIBUTES 128
532 #define SECPKG_ATTR_APPLICATION_PROTOCOL 35
533 #define SECPKG_ATTR_NEGOTIATED_TLS_EXTENSIONS 36
534 #define SECPKG_ATTR_IS_LOOPBACK 37
535
536 typedef struct _SecPkgContext_SubjectAttributes {
537 void *AttributeInfo;
538 } SecPkgContext_SubjectAttributes,*PSecPkgContext_SubjectAttributes;
539
540 #define SECPKG_ATTR_NEGO_INFO_FLAG_NO_KERBEROS 0x1
541 #define SECPKG_ATTR_NEGO_INFO_FLAG_NO_NTLM 0x2
542
543 typedef enum _SECPKG_CRED_CLASS {
544 SecPkgCredClass_None = 0,
545 SecPkgCredClass_Ephemeral = 10,
546 SecPkgCredClass_PersistedGeneric = 20,
547 SecPkgCredClass_PersistedSpecific = 30,
548 SecPkgCredClass_Explicit = 40
549 } SECPKG_CRED_CLASS,*PSECPKG_CRED_CLASS;
550
551 typedef struct _SecPkgContext_CredInfo {
552 SECPKG_CRED_CLASS CredClass;
553 unsigned __LONG32 IsPromptingNeeded;
554 } SecPkgContext_CredInfo,*PSecPkgContext_CredInfo;
555
556 typedef struct _SecPkgContext_NegoPackageInfo {
557 unsigned __LONG32 PackageMask;
558 } SecPkgContext_NegoPackageInfo,*PSecPkgContext_NegoPackageInfo;
559
560 typedef struct _SecPkgContext_NegoStatus {
561 unsigned __LONG32 LastStatus;
562 } SecPkgContext_NegoStatus,*PSecPkgContext_NegoStatus;
563
564 typedef struct _SecPkgContext_Sizes {
565 unsigned __LONG32 cbMaxToken;
566 unsigned __LONG32 cbMaxSignature;
567 unsigned __LONG32 cbBlockSize;
568 unsigned __LONG32 cbSecurityTrailer;
569 } SecPkgContext_Sizes,*PSecPkgContext_Sizes;
570
571 typedef struct _SecPkgContext_StreamSizes {
572 unsigned __LONG32 cbHeader;
573 unsigned __LONG32 cbTrailer;
574 unsigned __LONG32 cbMaximumMessage;
575 unsigned __LONG32 cBuffers;
576 unsigned __LONG32 cbBlockSize;
577 } SecPkgContext_StreamSizes,*PSecPkgContext_StreamSizes;
578
579 typedef SecPkgContext_StreamSizes SecPkgContext_DatagramSizes;
580 typedef PSecPkgContext_StreamSizes PSecPkgContext_DatagramSizes;
581
582 typedef struct _SecPkgContext_NamesW {
583 SEC_WCHAR *sUserName;
584 } SecPkgContext_NamesW,*PSecPkgContext_NamesW;
585
586 typedef enum _SECPKG_ATTR_LCT_STATUS {
587 SecPkgAttrLastClientTokenYes,
588 SecPkgAttrLastClientTokenNo,
589 SecPkgAttrLastClientTokenMaybe
590 } SECPKG_ATTR_LCT_STATUS,*PSECPKG_ATTR_LCT_STATUS;
591
592 typedef struct _SecPkgContext_LastClientTokenStatus {
593 SECPKG_ATTR_LCT_STATUS LastClientTokenStatus;
594 } SecPkgContext_LastClientTokenStatus,*PSecPkgContext_LastClientTokenStatus;
595
596 typedef struct _SecPkgContext_NamesA {
597 SEC_CHAR *sUserName;
598 } SecPkgContext_NamesA,*PSecPkgContext_NamesA;
599
600 #define SecPkgContext_Names __MINGW_NAME_AW(SecPkgContext_Names)
601 #define PSecPkgContext_Names __MINGW_NAME_AW(PSecPkgContext_Names)
602
603 typedef struct _SecPkgContext_Lifespan {
604 TimeStamp tsStart;
605 TimeStamp tsExpiry;
606 } SecPkgContext_Lifespan,*PSecPkgContext_Lifespan;
607
608 typedef struct _SecPkgContext_DceInfo {
609 unsigned __LONG32 AuthzSvc;
610 void *pPac;
611 } SecPkgContext_DceInfo,*PSecPkgContext_DceInfo;
612
613 typedef struct _SecPkgContext_KeyInfoA {
614 SEC_CHAR *sSignatureAlgorithmName;
615 SEC_CHAR *sEncryptAlgorithmName;
616 unsigned __LONG32 KeySize;
617 unsigned __LONG32 SignatureAlgorithm;
618 unsigned __LONG32 EncryptAlgorithm;
619 } SecPkgContext_KeyInfoA,*PSecPkgContext_KeyInfoA;
620
621 typedef struct _SecPkgContext_KeyInfoW {
622 SEC_WCHAR *sSignatureAlgorithmName;
623 SEC_WCHAR *sEncryptAlgorithmName;
624 unsigned __LONG32 KeySize;
625 unsigned __LONG32 SignatureAlgorithm;
626 unsigned __LONG32 EncryptAlgorithm;
627 } SecPkgContext_KeyInfoW,*PSecPkgContext_KeyInfoW;
628
629 #define SecPkgContext_KeyInfo __MINGW_NAME_AW(SecPkgContext_KeyInfo)
630 #define PSecPkgContext_KeyInfo __MINGW_NAME_AW(PSecPkgContext_KeyInfo)
631
632 typedef struct _SecPkgContext_AuthorityA {
633 SEC_CHAR *sAuthorityName;
634 } SecPkgContext_AuthorityA,*PSecPkgContext_AuthorityA;
635
636 typedef struct _SecPkgContext_AuthorityW {
637 SEC_WCHAR *sAuthorityName;
638 } SecPkgContext_AuthorityW,*PSecPkgContext_AuthorityW;
639
640 #define SecPkgContext_Authority __MINGW_NAME_AW(SecPkgContext_Authority)
641 #define PSecPkgContext_Authority __MINGW_NAME_AW(PSecPkgContext_Authority)
642
643 typedef struct _SecPkgContext_ProtoInfoA {
644 SEC_CHAR *sProtocolName;
645 unsigned __LONG32 majorVersion;
646 unsigned __LONG32 minorVersion;
647 } SecPkgContext_ProtoInfoA,*PSecPkgContext_ProtoInfoA;
648
649 typedef struct _SecPkgContext_ProtoInfoW {
650 SEC_WCHAR *sProtocolName;
651 unsigned __LONG32 majorVersion;
652 unsigned __LONG32 minorVersion;
653 } SecPkgContext_ProtoInfoW,*PSecPkgContext_ProtoInfoW;
654
655 #define SecPkgContext_ProtoInfo __MINGW_NAME_AW(SecPkgContext_ProtoInfo)
656 #define PSecPkgContext_ProtoInfo __MINGW_NAME_AW(PSecPkgContext_ProtoInfo)
657
658 typedef struct _SecPkgContext_PasswordExpiry {
659 TimeStamp tsPasswordExpires;
660 } SecPkgContext_PasswordExpiry,*PSecPkgContext_PasswordExpiry;
661
662 typedef struct _SecPkgContext_LogoffTime {
663 TimeStamp tsLogoffTime;
664 } SecPkgContext_LogoffTime,*PSecPkgContext_LogoffTime;
665
666 typedef struct _SecPkgContext_SessionKey {
667 unsigned __LONG32 SessionKeyLength;
668 unsigned char *SessionKey;
669 } SecPkgContext_SessionKey,*PSecPkgContext_SessionKey;
670
671 typedef struct _SecPkgContext_NegoKeys {
672 unsigned __LONG32 KeyType;
673 unsigned short KeyLength;
674 unsigned char *KeyValue;
675 unsigned __LONG32 VerifyKeyType;
676 unsigned short VerifyKeyLength;
677 unsigned char *VerifyKeyValue;
678 } SecPkgContext_NegoKeys,*PSecPkgContext_NegoKeys;
679
680 typedef struct _SecPkgContext_PackageInfoW {
681 PSecPkgInfoW PackageInfo;
682 } SecPkgContext_PackageInfoW,*PSecPkgContext_PackageInfoW;
683
684 typedef struct _SecPkgContext_PackageInfoA {
685 PSecPkgInfoA PackageInfo;
686 } SecPkgContext_PackageInfoA,*PSecPkgContext_PackageInfoA;
687
688 typedef struct _SecPkgContext_UserFlags {
689 unsigned __LONG32 UserFlags;
690 } SecPkgContext_UserFlags,*PSecPkgContext_UserFlags;
691
692 typedef struct _SecPkgContext_Flags {
693 unsigned __LONG32 Flags;
694 } SecPkgContext_Flags,*PSecPkgContext_Flags;
695
696 #define SecPkgContext_PackageInfo __MINGW_NAME_AW(SecPkgContext_PackageInfo)
697 #define PSecPkgContext_PackageInfo __MINGW_NAME_AW(PSecPkgContext_PackageInfo)
698
699 typedef struct _SecPkgContext_NegotiationInfoA {
700 PSecPkgInfoA PackageInfo;
701 unsigned __LONG32 NegotiationState;
702 } SecPkgContext_NegotiationInfoA,*PSecPkgContext_NegotiationInfoA;
703
704 typedef struct _SecPkgContext_NegotiationInfoW {
705 PSecPkgInfoW PackageInfo;
706 unsigned __LONG32 NegotiationState;
707 } SecPkgContext_NegotiationInfoW,*PSecPkgContext_NegotiationInfoW;
708
709 #define SecPkgContext_NegotiationInfo __MINGW_NAME_AW(SecPkgContext_NegotiationInfo)
710 #define PSecPkgContext_NegotiationInfo __MINGW_NAME_AW(PSecPkgContext_NegotiationInfo)
711
712 #define SECPKG_NEGOTIATION_COMPLETE 0
713 #define SECPKG_NEGOTIATION_OPTIMISTIC 1
714 #define SECPKG_NEGOTIATION_IN_PROGRESS 2
715 #define SECPKG_NEGOTIATION_DIRECT 3
716 #define SECPKG_NEGOTIATION_TRY_MULTICRED 4
717
718 typedef struct _SecPkgContext_NativeNamesW {
719 SEC_WCHAR *sClientName;
720 SEC_WCHAR *sServerName;
721 } SecPkgContext_NativeNamesW,*PSecPkgContext_NativeNamesW;
722
723 typedef struct _SecPkgContext_NativeNamesA {
724 SEC_CHAR *sClientName;
725 SEC_CHAR *sServerName;
726 } SecPkgContext_NativeNamesA,*PSecPkgContext_NativeNamesA;
727
728 #define SecPkgContext_NativeNames __MINGW_NAME_AW(SecPkgContext_NativeNames)
729 #define PSecPkgContext_NativeNames __MINGW_NAME_AW(PSecPkgContext_NativeNames)
730
731 typedef struct _SecPkgContext_CredentialNameW {
732 unsigned __LONG32 CredentialType;
733 SEC_WCHAR *sCredentialName;
734 } SecPkgContext_CredentialNameW,*PSecPkgContext_CredentialNameW;
735
736 typedef struct _SecPkgContext_CredentialNameA {
737 unsigned __LONG32 CredentialType;
738 SEC_CHAR *sCredentialName;
739 } SecPkgContext_CredentialNameA,*PSecPkgContext_CredentialNameA;
740
741 #define SecPkgContext_CredentialName __MINGW_NAME_AW(SecPkgContext_CredentialName)
742 #define PSecPkgContext_CredentialName __MINGW_NAME_AW(PSecPkgContext_CredentialName)
743
744 typedef struct _SecPkgContext_AccessToken {
745 void *AccessToken;
746 } SecPkgContext_AccessToken,*PSecPkgContext_AccessToken;
747
748 typedef struct _SecPkgContext_TargetInformation {
749 unsigned __LONG32 MarshalledTargetInfoLength;
750 unsigned char *MarshalledTargetInfo;
751 } SecPkgContext_TargetInformation,*PSecPkgContext_TargetInformation;
752
753 typedef struct _SecPkgContext_AuthzID {
754 unsigned __LONG32 AuthzIDLength;
755 char *AuthzID;
756 } SecPkgContext_AuthzID,*PSecPkgContext_AuthzID;
757
758 typedef struct _SecPkgContext_Target {
759 unsigned __LONG32 TargetLength;
760 char *Target;
761 } SecPkgContext_Target,*PSecPkgContext_Target;
762
763 typedef struct _SecPkgContext_ClientSpecifiedTarget {
764 SEC_WCHAR *sTargetName;
765 } SecPkgContext_ClientSpecifiedTarget,*PSecPkgContext_ClientSpecifiedTarget;
766
767 typedef struct _SecPkgContext_Bindings {
768 unsigned __LONG32 BindingsLength;
769 SEC_CHANNEL_BINDINGS *Bindings;
770 } SecPkgContext_Bindings,*PSecPkgContext_Bindings;
771
772 typedef enum _SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS {
773 SecApplicationProtocolNegotiationStatus_None,
774 SecApplicationProtocolNegotiationStatus_Success,
775 SecApplicationProtocolNegotiationStatus_SelectedClientOnly
776 } SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS,*PSEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS;
777
778 #define MAX_PROTOCOL_ID_SIZE 0xff
779
780 typedef struct _SecPkgContext_ApplicationProtocol {
781 SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS ProtoNegoStatus;
782 SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT ProtoNegoExt;
783 unsigned char ProtocolIdSize;
784 unsigned char ProtocolId[MAX_PROTOCOL_ID_SIZE];
785 } SecPkgContext_ApplicationProtocol,*PSecPkgContext_ApplicationProtocol;
786
787 typedef struct _SecPkgContext_NegotiatedTlsExtensions {
788 unsigned __LONG32 ExtensionsCount;
789 unsigned short *Extensions;
790 } SecPkgContext_NegotiatedTlsExtensions,*PSecPkgContext_NegotiatedTlsExtensions;
791
792 typedef struct _SECPKG_APP_MODE_INFO {
793 ULONG UserFunction;
794 ULONG_PTR Argument1;
795 ULONG_PTR Argument2;
796 SecBuffer UserData;
797 BOOLEAN ReturnToLsa;
798 } SECPKG_APP_MODE_INFO,*PSECPKG_APP_MODE_INFO;
799
800 typedef void (WINAPI *SEC_GET_KEY_FN) (void *Arg,void *Principal,unsigned __LONG32 KeyVer,void **Key,SECURITY_STATUS *Status);
801
802 #define SECPKG_CONTEXT_EXPORT_RESET_NEW 0x00000001
803 #define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002
804 #define SECPKG_CONTEXT_EXPORT_TO_KERNEL 0x00000004
805
806 KSECDDDECLSPEC SECURITY_STATUS WINAPI AcquireCredentialsHandleW(
807 #if ISSP_MODE==0
808 PSECURITY_STRING pPrincipal,PSECURITY_STRING pPackage,
809 #else
810 SEC_WCHAR *pszPrincipal,SEC_WCHAR *pszPackage,
811 #endif
812 unsigned __LONG32 fCredentialUse,void *pvLogonId,void *pAuthData,SEC_GET_KEY_FN pGetKeyFn,void *pvGetKeyArgument,PCredHandle phCredential,PTimeStamp ptsExpiry);
813
814 typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
815 #if ISSP_MODE==0
816 PSECURITY_STRING,PSECURITY_STRING,
817 #else
818 SEC_WCHAR *,SEC_WCHAR *,
819 #endif
820 unsigned __LONG32,void *,void *,SEC_GET_KEY_FN,void *,PCredHandle,PTimeStamp);
821
822 SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR *pszPrincipal,SEC_CHAR *pszPackage,unsigned __LONG32 fCredentialUse,void *pvLogonId,void *pAuthData,SEC_GET_KEY_FN pGetKeyFn,void *pvGetKeyArgument,PCredHandle phCredential,PTimeStamp ptsExpiry);
823
824 typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR *,SEC_CHAR *,unsigned __LONG32,void *,void *,SEC_GET_KEY_FN,void *,PCredHandle,PTimeStamp);
825
826 #define AcquireCredentialsHandle __MINGW_NAME_AW(AcquireCredentialsHandle)
827 #define ACQUIRE_CREDENTIALS_HANDLE_FN __MINGW_NAME_UAW(ACQUIRE_CREDENTIALS_HANDLE_FN)
828
829 KSECDDDECLSPEC SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle phCredential);
830
831 typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);
832
833 KSECDDDECLSPEC SECURITY_STATUS WINAPI AddCredentialsW(PCredHandle hCredentials,
834 #if ISSP_MODE==0
835 PSECURITY_STRING pPrincipal,PSECURITY_STRING pPackage,
836 #else
837 SEC_WCHAR *pszPrincipal,SEC_WCHAR *pszPackage,
838 #endif
839 unsigned __LONG32 fCredentialUse,void *pAuthData,SEC_GET_KEY_FN pGetKeyFn,void *pvGetKeyArgument,PTimeStamp ptsExpiry);
840
841 typedef SECURITY_STATUS (WINAPI *ADD_CREDENTIALS_FN_W)(PCredHandle,
842 #if ISSP_MODE==0
843 PSECURITY_STRING,PSECURITY_STRING,
844 #else
845 SEC_WCHAR *,SEC_WCHAR *,
846 #endif
847 unsigned __LONG32,void *,SEC_GET_KEY_FN,void *,PTimeStamp);
848
849 SECURITY_STATUS WINAPI AddCredentialsA(PCredHandle hCredentials,SEC_CHAR *pszPrincipal,SEC_CHAR *pszPackage,unsigned __LONG32 fCredentialUse,void *pAuthData,SEC_GET_KEY_FN pGetKeyFn,void *pvGetKeyArgument,PTimeStamp ptsExpiry);
850
851 typedef SECURITY_STATUS (WINAPI *ADD_CREDENTIALS_FN_A)(PCredHandle,SEC_CHAR *,SEC_CHAR *,unsigned __LONG32,void *,SEC_GET_KEY_FN,void *,PTimeStamp);
852
853 #define AddCredentials __MINGW_NAME_AW(AddCredentials)
854 #define ADD_CREDENTIALS_FN __MINGW_NAME_UAW(ADD_CREDENTIALS_FN)
855
856 KSECDDDECLSPEC SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle phCredential,PCtxtHandle phContext,
857 #if ISSP_MODE==0
858 PSECURITY_STRING pTargetName,
859 #else
860 SEC_WCHAR *pszTargetName,
861 #endif
862 unsigned __LONG32 fContextReq,unsigned __LONG32 Reserved1,unsigned __LONG32 TargetDataRep,PSecBufferDesc pInput,unsigned __LONG32 Reserved2,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
863
864 typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,
865 #if ISSP_MODE==0
866 PSECURITY_STRING,
867 #else
868 SEC_WCHAR *,
869 #endif
870 unsigned __LONG32,unsigned __LONG32,unsigned __LONG32,PSecBufferDesc,unsigned __LONG32,PCtxtHandle,PSecBufferDesc,unsigned __LONG32 *,PTimeStamp);
871
872 SECURITY_STATUS WINAPI InitializeSecurityContextA(PCredHandle phCredential,PCtxtHandle phContext,SEC_CHAR *pszTargetName,unsigned __LONG32 fContextReq,unsigned __LONG32 Reserved1,unsigned __LONG32 TargetDataRep,PSecBufferDesc pInput,unsigned __LONG32 Reserved2,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
873
874 typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR *,unsigned __LONG32,unsigned __LONG32,unsigned __LONG32,PSecBufferDesc,unsigned __LONG32,PCtxtHandle,PSecBufferDesc,unsigned __LONG32 *,PTimeStamp);
875
876 #define InitializeSecurityContext __MINGW_NAME_AW(InitializeSecurityContext)
877 #define INITIALIZE_SECURITY_CONTEXT_FN __MINGW_NAME_UAW(INITIALIZE_SECURITY_CONTEXT_FN)
878
879 KSECDDDECLSPEC SECURITY_STATUS WINAPI AcceptSecurityContext(PCredHandle phCredential,PCtxtHandle phContext,PSecBufferDesc pInput,unsigned __LONG32 fContextReq,unsigned __LONG32 TargetDataRep,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
880
881 typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,unsigned __LONG32,unsigned __LONG32,PCtxtHandle,PSecBufferDesc,unsigned __LONG32 *,PTimeStamp);
882
883 SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle phContext,PSecBufferDesc pToken);
884
885 typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc);
886
887 KSECDDDECLSPEC SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle phContext);
888
889 typedef SECURITY_STATUS (WINAPI *IMPERSONATE_SECURITY_CONTEXT_FN)(PCtxtHandle);
890
891 KSECDDDECLSPEC SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle phContext);
892
893 typedef SECURITY_STATUS (WINAPI *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle);
894
895 KSECDDDECLSPEC SECURITY_STATUS WINAPI QuerySecurityContextToken(PCtxtHandle phContext,HANDLE *Token);
896
897 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_CONTEXT_TOKEN_FN)(PCtxtHandle,HANDLE *);
898
899 KSECDDDECLSPEC SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle phContext);
900
901 typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);
902
903 KSECDDDECLSPEC SECURITY_STATUS WINAPI ApplyControlToken(PCtxtHandle phContext,PSecBufferDesc pInput);
904
905 typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN)(PCtxtHandle,PSecBufferDesc);
906
907 KSECDDDECLSPEC SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer);
908
909 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,unsigned __LONG32,void *);
910
911 SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer);
912
913 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,unsigned __LONG32,void *);
914
915 #define QueryContextAttributes __MINGW_NAME_AW(QueryContextAttributes)
916 #define QUERY_CONTEXT_ATTRIBUTES_FN __MINGW_NAME_UAW(QUERY_CONTEXT_ATTRIBUTES_FN)
917
918 SECURITY_STATUS WINAPI QueryContextAttributesExW(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
919
920 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_EX_FN_W)(PCtxtHandle,unsigned __LONG32,void*,unsigned __LONG32);
921
922 SECURITY_STATUS WINAPI QueryContextAttributesExA(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
923
924 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_EX_FN_A)(PCtxtHandle,unsigned __LONG32,void*,unsigned __LONG32);
925
926 #define QueryContextAttributesEx __MINGW_NAME_AW(QueryContextAttributesEx)
927 #define QUERY_CONTEXT_ATTRIBUTES_EX_FN __MINGW_NAME_UAW(QUERY_CONTEXT_ATTRIBUTES_EX_FN)
928
929 SECURITY_STATUS WINAPI SetContextAttributesW(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
930
931 typedef SECURITY_STATUS (WINAPI *SET_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,unsigned __LONG32,void *,unsigned __LONG32);
932
933 SECURITY_STATUS WINAPI SetContextAttributesA(PCtxtHandle phContext,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
934
935 typedef SECURITY_STATUS (WINAPI *SET_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,unsigned __LONG32,void *,unsigned __LONG32);
936
937 #define SetContextAttributes __MINGW_NAME_AW(SetContextAttributes)
938 #define SET_CONTEXT_ATTRIBUTES_FN __MINGW_NAME_UAW(SET_CONTEXT_ATTRIBUTES_FN)
939
940 KSECDDDECLSPEC SECURITY_STATUS WINAPI QueryCredentialsAttributesW(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer);
941
942 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,unsigned __LONG32,void *);
943
944 SECURITY_STATUS WINAPI QueryCredentialsAttributesA(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer);
945
946 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,unsigned __LONG32,void *);
947
948 #define QueryCredentialsAttributes __MINGW_NAME_AW(QueryCredentialsAttributes)
949 #define QUERY_CREDENTIALS_ATTRIBUTES_FN __MINGW_NAME_UAW(QUERY_CREDENTIALS_ATTRIBUTES_FN)
950
951 SECURITY_STATUS WINAPI QueryCredentialsAttributesExW(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
952
953 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_W)(PCredHandle,unsigned __LONG32,void*,unsigned __LONG32);
954
955 SECURITY_STATUS WINAPI QueryCredentialsAttributesExA(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
956
957 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_A)(PCredHandle,unsigned __LONG32,void*,unsigned __LONG32);
958
959 #define QueryCredentialsAttributesEx __MINGW_NAME_AW(QueryCredentialsAttributesEx)
960 #define QUERY_CREDENTIALS_ATTRIBUTES_EX_FN __MINGW_NAME_UAW(QUERY_CREDENTIALS_ATTRIBUTES_EX_FN)
961
962 KSECDDDECLSPEC SECURITY_STATUS WINAPI SetCredentialsAttributesW(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
963
964 typedef SECURITY_STATUS (WINAPI *SET_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,unsigned __LONG32,void *,unsigned __LONG32);
965
966 SECURITY_STATUS WINAPI SetCredentialsAttributesA(PCredHandle phCredential,unsigned __LONG32 ulAttribute,void *pBuffer,unsigned __LONG32 cbBuffer);
967
968 typedef SECURITY_STATUS (WINAPI *SET_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,unsigned __LONG32,void *,unsigned __LONG32);
969
970 #define SetCredentialsAttributes __MINGW_NAME_AW(SetCredentialsAttributes)
971 #define SET_CREDENTIALS_ATTRIBUTES_FN __MINGW_NAME_UAW(SET_CREDENTIALS_ATTRIBUTES_FN)
972
973 SECURITY_STATUS WINAPI FreeContextBuffer(void *pvContextBuffer);
974
975 typedef SECURITY_STATUS (WINAPI *FREE_CONTEXT_BUFFER_FN)(void *);
976
977 KSECDDDECLSPEC SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle phContext,unsigned __LONG32 fQOP,PSecBufferDesc pMessage,unsigned __LONG32 MessageSeqNo);
978
979 typedef SECURITY_STATUS (WINAPI *MAKE_SIGNATURE_FN)(PCtxtHandle,unsigned __LONG32,PSecBufferDesc,unsigned __LONG32);
980
981 KSECDDDECLSPEC SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle phContext,PSecBufferDesc pMessage,unsigned __LONG32 MessageSeqNo,unsigned __LONG32 *pfQOP);
982
983 typedef SECURITY_STATUS (WINAPI *VERIFY_SIGNATURE_FN)(PCtxtHandle,PSecBufferDesc,unsigned __LONG32,unsigned __LONG32 *);
984
985 #define SECQOP_WRAP_NO_ENCRYPT 0x80000001
986 #define SECQOP_WRAP_OOB_DATA 0x40000000
987
988 SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle phContext,unsigned __LONG32 fQOP,PSecBufferDesc pMessage,unsigned __LONG32 MessageSeqNo);
989
990 typedef SECURITY_STATUS (WINAPI *ENCRYPT_MESSAGE_FN)(PCtxtHandle,unsigned __LONG32,PSecBufferDesc,unsigned __LONG32);
991
992 SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle phContext,PSecBufferDesc pMessage,unsigned __LONG32 MessageSeqNo,unsigned __LONG32 *pfQOP);
993
994 typedef SECURITY_STATUS (WINAPI *DECRYPT_MESSAGE_FN)(PCtxtHandle,PSecBufferDesc,unsigned __LONG32,unsigned __LONG32 *);
995
996 KSECDDDECLSPEC SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(unsigned __LONG32 *pcPackages,PSecPkgInfoW *ppPackageInfo);
997
998 typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(unsigned __LONG32 *,PSecPkgInfoW *);
999
1000 SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(unsigned __LONG32 *pcPackages,PSecPkgInfoA *ppPackageInfo);
1001
1002 typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(unsigned __LONG32 *,PSecPkgInfoA *);
1003
1004 #define EnumerateSecurityPackages __MINGW_NAME_AW(EnumerateSecurityPackages)
1005 #define ENUMERATE_SECURITY_PACKAGES_FN __MINGW_NAME_UAW(ENUMERATE_SECURITY_PACKAGES_FN)
1006
1007 KSECDDDECLSPEC SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(
1008 #if ISSP_MODE==0
1009 PSECURITY_STRING pPackageName,
1010 #else
1011 SEC_WCHAR *pszPackageName,
1012 #endif
1013 PSecPkgInfoW *ppPackageInfo);
1014
1015 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_W)(
1016 #if ISSP_MODE==0
1017 PSECURITY_STRING,
1018 #else
1019 SEC_WCHAR *,
1020 #endif
1021 PSecPkgInfoW *);
1022
1023 SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR *pszPackageName,PSecPkgInfoA *ppPackageInfo);
1024
1025 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_A)(SEC_CHAR *,PSecPkgInfoA *);
1026
1027 #define QuerySecurityPackageInfo __MINGW_NAME_AW(QuerySecurityPackageInfo)
1028 #define QUERY_SECURITY_PACKAGE_INFO_FN __MINGW_NAME_UAW(QUERY_SECURITY_PACKAGE_INFO_FN)
1029
1030 typedef enum _SecDelegationType {
1031 SecFull,SecService,SecTree,SecDirectory,SecObject
1032 } SecDelegationType,*PSecDelegationType;
1033
1034 SECURITY_STATUS WINAPI DelegateSecurityContext(PCtxtHandle phContext,
1035 #if ISSP_MODE==0
1036 PSECURITY_STRING pTarget,
1037 #else
1038 SEC_CHAR *pszTarget,
1039 #endif
1040 SecDelegationType DelegationType,PTimeStamp pExpiry,PSecBuffer pPackageParameters,PSecBufferDesc pOutput);
1041
1042 KSECDDDECLSPEC SECURITY_STATUS WINAPI ExportSecurityContext(PCtxtHandle phContext,ULONG fFlags,PSecBuffer pPackedContext,void **pToken);
1043
1044 typedef SECURITY_STATUS (WINAPI *EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle,ULONG,PSecBuffer,void **);
1045
1046 KSECDDDECLSPEC SECURITY_STATUS WINAPI ImportSecurityContextW(
1047 #if ISSP_MODE==0
1048 PSECURITY_STRING pszPackage,
1049 #else
1050 SEC_WCHAR *pszPackage,
1051 #endif
1052 PSecBuffer pPackedContext,void *Token,PCtxtHandle phContext);
1053
1054 typedef SECURITY_STATUS (WINAPI *IMPORT_SECURITY_CONTEXT_FN_W)(
1055 #if ISSP_MODE==0
1056 PSECURITY_STRING,
1057 #else
1058 SEC_WCHAR *,
1059 #endif
1060 PSecBuffer,VOID *,PCtxtHandle);
1061
1062 SECURITY_STATUS WINAPI ImportSecurityContextA(SEC_CHAR *pszPackage,PSecBuffer pPackedContext,VOID *Token,PCtxtHandle phContext);
1063
1064 typedef SECURITY_STATUS (WINAPI *IMPORT_SECURITY_CONTEXT_FN_A)(SEC_CHAR *,PSecBuffer,void *,PCtxtHandle);
1065
1066 #define ImportSecurityContext __MINGW_NAME_AW(ImportSecurityContext)
1067 #define IMPORT_SECURITY_CONTEXT_FN __MINGW_NAME_UAW(IMPORT_SECURITY_CONTEXT_FN)
1068
1069 #if ISSP_MODE==0
1070 KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPN(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING Spn,PULONG Length,BOOLEAN Allocate);
1071 KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPNEx(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING TargetInfo,PUNICODE_STRING Spn,PULONG Length,BOOLEAN Allocate);
1072 KSECDDDECLSPEC NTSTATUS NTAPI SecMakeSPNEx2(PUNICODE_STRING ServiceClass,PUNICODE_STRING ServiceName,PUNICODE_STRING InstanceName,USHORT InstancePort,PUNICODE_STRING Referrer,PUNICODE_STRING InTargetInfo,PUNICODE_STRING Spn,PULONG TotalSize,BOOLEAN Allocate,BOOLEAN IsTargetInfoMarshaled);
1073 KSECDDDECLSPEC NTSTATUS WINAPI SecLookupAccountSid(PSID Sid,PULONG NameSize,PUNICODE_STRING NameBuffer,PULONG DomainSize,PUNICODE_STRING DomainBuffer,PSID_NAME_USE NameUse);
1074 KSECDDDECLSPEC NTSTATUS WINAPI SecLookupAccountName(PUNICODE_STRING Name,PULONG SidSize,PSID Sid,PSID_NAME_USE NameUse,PULONG DomainSize,PUNICODE_STRING ReferencedDomain);
1075 KSECDDDECLSPEC NTSTATUS WINAPI SecLookupWellKnownSid(WELL_KNOWN_SID_TYPE SidType,PSID Sid,ULONG SidBufferSize,PULONG SidSize);
1076 #endif
1077
1078 #define SECURITY_ENTRYPOINT_ANSIW "InitSecurityInterfaceW"
1079 #define SECURITY_ENTRYPOINT_ANSIA "InitSecurityInterfaceA"
1080 #define SECURITY_ENTRYPOINTW SEC_TEXT("InitSecurityInterfaceW")
1081 #define SECURITY_ENTRYPOINTA SEC_TEXT("InitSecurityInterfaceA")
1082 #define SECURITY_ENTRYPOINT16 "INITSECURITYINTERFACEA"
1083
1084 #ifdef SECURITY_WIN32
1085 #define SECURITY_ENTRYPOINT __MINGW_NAME_AW(SECURITY_ENTRYPOINT)
1086 #define SECURITY_ENTRYPOINT_ANSI __MINGW_NAME_AW(SECURITY_ENTRYPOINT_ANSI)
1087 #else
1088 #define SECURITY_ENTRYPOINT SECURITY_ENTRYPOINT16
1089 #define SECURITY_ENTRYPOINT_ANSI SECURITY_ENTRYPOINT16
1090 #endif
1091
1092 #define FreeCredentialHandle FreeCredentialsHandle
1093
1094 #if ISSP_MODE != 0
1095
1096 SECURITY_STATUS SEC_ENTRY ChangeAccountPasswordW(SEC_WCHAR* pszPackageName,
1097 SEC_WCHAR* pszDomainName,
1098 SEC_WCHAR* pszAccountName,
1099 SEC_WCHAR* pszOldPassword,
1100 SEC_WCHAR* pszNewPassword,
1101 BOOLEAN bImpersonating,
1102 unsigned __LONG32 dwReserved,
1103 PSecBufferDesc pOutput);
1104
1105 typedef SECURITY_STATUS (SEC_ENTRY *CHANGE_PASSWORD_FN_W)(SEC_WCHAR*,
1106 SEC_WCHAR*,
1107 SEC_WCHAR*,
1108 SEC_WCHAR*,
1109 SEC_WCHAR*,
1110 BOOLEAN,
1111 unsigned __LONG32,
1112 PSecBufferDesc);
1113
1114 SECURITY_STATUS SEC_ENTRY ChangeAccountPasswordA(SEC_CHAR* pszPackageName,
1115 SEC_CHAR* pszDomainName,
1116 SEC_CHAR* pszAccountName,
1117 SEC_CHAR* pszOldPassword,
1118 SEC_CHAR* pszNewPassword,
1119 BOOLEAN bImpersonating,
1120 unsigned __LONG32 dwReserved,
1121 PSecBufferDesc pOutput);
1122
1123 typedef SECURITY_STATUS (SEC_ENTRY *CHANGE_PASSWORD_FN_A)(SEC_CHAR*,
1124 SEC_CHAR*,
1125 SEC_CHAR*,
1126 SEC_CHAR*,
1127 SEC_CHAR*,
1128 BOOLEAN,
1129 unsigned __LONG32,
1130 PSecBufferDesc);
1131
1132 #define ChangeAccountPassword __MINGW_NAME_AW(ChangeAccountPassword)
1133 #define CHANGE_PASSWORD_FN __MINGW_NAME_UAW(CHANGE_PASSWORD_FN)
1134
1135 #endif
1136
1137 typedef struct _SECURITY_FUNCTION_TABLE_W {
1138 unsigned __LONG32 dwVersion;
1139 ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
1140 QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
1141 ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
1142 FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
1143 void *Reserved2;
1144 INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
1145 ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
1146 COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
1147 DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
1148 APPLY_CONTROL_TOKEN_FN ApplyControlToken;
1149 QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
1150 IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
1151 REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
1152 MAKE_SIGNATURE_FN MakeSignature;
1153 VERIFY_SIGNATURE_FN VerifySignature;
1154 FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
1155 QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
1156 void *Reserved3;
1157 void *Reserved4;
1158 EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext;
1159 IMPORT_SECURITY_CONTEXT_FN_W ImportSecurityContextW;
1160 ADD_CREDENTIALS_FN_W AddCredentialsW;
1161 void *Reserved8;
1162 QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
1163 ENCRYPT_MESSAGE_FN EncryptMessage;
1164 DECRYPT_MESSAGE_FN DecryptMessage;
1165 SET_CONTEXT_ATTRIBUTES_FN_W SetContextAttributesW;
1166 SET_CREDENTIALS_ATTRIBUTES_FN_W SetCredentialsAttributesW;
1167 #if ISSP_MODE != 0
1168 CHANGE_PASSWORD_FN_W ChangeAccountPasswordW;
1169 #else
1170 void* Reserved9;
1171 #endif
1172 #if NTDDI_VERSION > NTDDI_WINBLUE
1173 QUERY_CONTEXT_ATTRIBUTES_EX_FN_W QueryContextAttributesExW;
1174 QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_W QueryCredentialsAttributesExW;
1175 #endif
1176 } SecurityFunctionTableW,*PSecurityFunctionTableW;
1177
1178 typedef struct _SECURITY_FUNCTION_TABLE_A {
1179 unsigned __LONG32 dwVersion;
1180 ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA;
1181 QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
1182 ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA;
1183 FREE_CREDENTIALS_HANDLE_FN FreeCredentialHandle;
1184 void *Reserved2;
1185 INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA;
1186 ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
1187 COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
1188 DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
1189 APPLY_CONTROL_TOKEN_FN ApplyControlToken;
1190 QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA;
1191 IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
1192 REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
1193 MAKE_SIGNATURE_FN MakeSignature;
1194 VERIFY_SIGNATURE_FN VerifySignature;
1195 FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
1196 QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA;
1197 void *Reserved3;
1198 void *Reserved4;
1199 EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext;
1200 IMPORT_SECURITY_CONTEXT_FN_A ImportSecurityContextA;
1201 ADD_CREDENTIALS_FN_A AddCredentialsA;
1202 void *Reserved8;
1203 QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
1204 ENCRYPT_MESSAGE_FN EncryptMessage;
1205 DECRYPT_MESSAGE_FN DecryptMessage;
1206 SET_CONTEXT_ATTRIBUTES_FN_A SetContextAttributesA;
1207 SET_CREDENTIALS_ATTRIBUTES_FN_A SetCredentialsAttributesA;
1208 #if ISSP_MODE != 0
1209 CHANGE_PASSWORD_FN_A ChangeAccountPasswordA;
1210 #else
1211 void* Reserved9;
1212 #endif
1213 #if NTDDI_VERSION > NTDDI_WINBLUE
1214 QUERY_CONTEXT_ATTRIBUTES_EX_FN_A QueryContextAttributesExA;
1215 QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_A QueryCredentialsAttributesExA;
1216 #endif
1217 } SecurityFunctionTableA,*PSecurityFunctionTableA;
1218
1219 #define SecurityFunctionTable __MINGW_NAME_AW(SecurityFunctionTable)
1220 #define PSecurityFunctionTable __MINGW_NAME_AW(PSecurityFunctionTable)
1221
1222 #define SECURITY_
1223
1224 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION 1
1225 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_2 2
1226 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_3 3
1227 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_4 4
1228 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_5 5
1229
1230 PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(void);
1231
1232 typedef PSecurityFunctionTableA (WINAPI *INIT_SECURITY_INTERFACE_A)(void);
1233
1234 KSECDDDECLSPEC PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(void);
1235
1236 typedef PSecurityFunctionTableW (WINAPI *INIT_SECURITY_INTERFACE_W)(void);
1237
1238 #define InitSecurityInterface __MINGW_NAME_AW(InitSecurityInterface)
1239 #define INIT_SECURITY_INTERFACE __MINGW_NAME_UAW(INIT_SECURITY_INTERFACE)
1240
1241 #ifdef SECURITY_WIN32
1242
1243 SECURITY_STATUS WINAPI SaslEnumerateProfilesA(LPSTR *ProfileList,ULONG *ProfileCount);
1244 SECURITY_STATUS WINAPI SaslEnumerateProfilesW(LPWSTR *ProfileList,ULONG *ProfileCount);
1245
1246 #define SaslEnumerateProfiles __MINGW_NAME_AW(SaslEnumerateProfiles)
1247
1248 SECURITY_STATUS WINAPI SaslGetProfilePackageA(LPSTR ProfileName,PSecPkgInfoA *PackageInfo);
1249 SECURITY_STATUS WINAPI SaslGetProfilePackageW(LPWSTR ProfileName,PSecPkgInfoW *PackageInfo);
1250
1251 #define SaslGetProfilePackage __MINGW_NAME_AW(SaslGetProfilePackage)
1252
1253 SECURITY_STATUS WINAPI SaslIdentifyPackageA(PSecBufferDesc pInput,PSecPkgInfoA *PackageInfo);
1254 SECURITY_STATUS WINAPI SaslIdentifyPackageW(PSecBufferDesc pInput,PSecPkgInfoW *PackageInfo);
1255
1256 #define SaslIdentifyPackage __MINGW_NAME_AW(SaslIdentifyPackage)
1257
1258 SECURITY_STATUS WINAPI SaslInitializeSecurityContextW(PCredHandle phCredential,PCtxtHandle phContext,LPWSTR pszTargetName,unsigned __LONG32 fContextReq,unsigned __LONG32 Reserved1,unsigned __LONG32 TargetDataRep,PSecBufferDesc pInput,unsigned __LONG32 Reserved2,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
1259 SECURITY_STATUS WINAPI SaslInitializeSecurityContextA(PCredHandle phCredential,PCtxtHandle phContext,LPSTR pszTargetName,unsigned __LONG32 fContextReq,unsigned __LONG32 Reserved1,unsigned __LONG32 TargetDataRep,PSecBufferDesc pInput,unsigned __LONG32 Reserved2,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
1260
1261 #define SaslInitializeSecurityContext __MINGW_NAME_AW(SaslInitializeSecurityContext)
1262
1263 SECURITY_STATUS WINAPI SaslAcceptSecurityContext(PCredHandle phCredential,PCtxtHandle phContext,PSecBufferDesc pInput,unsigned __LONG32 fContextReq,unsigned __LONG32 TargetDataRep,PCtxtHandle phNewContext,PSecBufferDesc pOutput,unsigned __LONG32 *pfContextAttr,PTimeStamp ptsExpiry);
1264
1265 #define SASL_OPTION_SEND_SIZE 1
1266 #define SASL_OPTION_RECV_SIZE 2
1267 #define SASL_OPTION_AUTHZ_STRING 3
1268 #define SASL_OPTION_AUTHZ_PROCESSING 4
1269
1270 typedef enum _SASL_AUTHZID_STATE {
1271 Sasl_AuthZIDForbidden,Sasl_AuthZIDProcessed
1272 } SASL_AUTHZID_STATE;
1273
1274 SECURITY_STATUS WINAPI SaslSetContextOption(PCtxtHandle ContextHandle,ULONG Option,PVOID Value,ULONG Size);
1275 SECURITY_STATUS WINAPI SaslGetContextOption(PCtxtHandle ContextHandle,ULONG Option,PVOID Value,ULONG Size,PULONG Needed);
1276 #endif
1277
1278 #ifndef _AUTH_IDENTITY_EX2_DEFINED
1279 #define _AUTH_IDENTITY_EX2_DEFINED
1280
1281 #define SEC_WINNT_AUTH_IDENTITY_VERSION_2 0x201
1282
1283 typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
1284 unsigned __LONG32 Version;
1285 unsigned short cbHeaderLength;
1286 unsigned __LONG32 cbStructureLength;
1287 unsigned __LONG32 UserOffset;
1288 unsigned short UserLength;
1289 unsigned __LONG32 DomainOffset;
1290 unsigned short DomainLength;
1291 unsigned __LONG32 PackedCredentialsOffset;
1292 unsigned short PackedCredentialsLength;
1293 unsigned __LONG32 Flags;
1294 unsigned __LONG32 PackageListOffset;
1295 unsigned short PackageListLength;
1296 } SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;
1297
1298 #endif
1299
1300 #ifndef _AUTH_IDENTITY_DEFINED
1301 #define _AUTH_IDENTITY_DEFINED
1302
1303 #define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
1304 #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
1305
1306 typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
1307 unsigned short *User;
1308 unsigned __LONG32 UserLength;
1309 unsigned short *Domain;
1310 unsigned __LONG32 DomainLength;
1311 unsigned short *Password;
1312 unsigned __LONG32 PasswordLength;
1313 unsigned __LONG32 Flags;
1314 } SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W;
1315
1316 typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
1317 unsigned char *User;
1318 unsigned __LONG32 UserLength;
1319 unsigned char *Domain;
1320 unsigned __LONG32 DomainLength;
1321 unsigned char *Password;
1322 unsigned __LONG32 PasswordLength;
1323 unsigned __LONG32 Flags;
1324 } SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A;
1325
1326 #define SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(SEC_WINNT_AUTH_IDENTITY)
1327 #define PSEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(PSEC_WINNT_AUTH_IDENTITY)
1328 #define _SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(_SEC_WINNT_AUTH_IDENTITY)
1329 #endif
1330
1331 #ifndef SEC_WINNT_AUTH_IDENTITY_VERSION
1332 #define SEC_WINNT_AUTH_IDENTITY_VERSION 0x200
1333
1334 typedef struct _SEC_WINNT_AUTH_IDENTITY_EXW {
1335 unsigned __LONG32 Version;
1336 unsigned __LONG32 Length;
1337 unsigned short *User;
1338 unsigned __LONG32 UserLength;
1339 unsigned short *Domain;
1340 unsigned __LONG32 DomainLength;
1341 unsigned short *Password;
1342 unsigned __LONG32 PasswordLength;
1343 unsigned __LONG32 Flags;
1344 unsigned short *PackageList;
1345 unsigned __LONG32 PackageListLength;
1346 } SEC_WINNT_AUTH_IDENTITY_EXW,*PSEC_WINNT_AUTH_IDENTITY_EXW;
1347
1348 typedef struct _SEC_WINNT_AUTH_IDENTITY_EXA {
1349 unsigned __LONG32 Version;
1350 unsigned __LONG32 Length;
1351 unsigned char *User;
1352 unsigned __LONG32 UserLength;
1353 unsigned char *Domain;
1354 unsigned __LONG32 DomainLength;
1355 unsigned char *Password;
1356 unsigned __LONG32 PasswordLength;
1357 unsigned __LONG32 Flags;
1358 unsigned char *PackageList;
1359 unsigned __LONG32 PackageListLength;
1360 } SEC_WINNT_AUTH_IDENTITY_EXA,*PSEC_WINNT_AUTH_IDENTITY_EXA;
1361
1362 #define SEC_WINNT_AUTH_IDENTITY_EX __MINGW_NAME_AW(SEC_WINNT_AUTH_IDENTITY_EX)
1363 #define PSEC_WINNT_AUTH_IDENTITY_EX __MINGW_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_EX)
1364 #endif
1365
1366 #ifndef _AUTH_IDENTITY_INFO_DEFINED
1367 #define _AUTH_IDENTITY_INFO_DEFINED
1368
1369 typedef union _SEC_WINNT_AUTH_IDENTITY_INFO {
1370 SEC_WINNT_AUTH_IDENTITY_EXW AuthIdExw;
1371 SEC_WINNT_AUTH_IDENTITY_EXA AuthIdExa;
1372 SEC_WINNT_AUTH_IDENTITY_A AuthId_a;
1373 SEC_WINNT_AUTH_IDENTITY_W AuthId_w;
1374 SEC_WINNT_AUTH_IDENTITY_EX2 AuthIdEx2;
1375 } SEC_WINNT_AUTH_IDENTITY_INFO, *PSEC_WINNT_AUTH_IDENTITY_INFO;
1376
1377 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED 0x10
1378 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED 0x20
1379 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED 0x40
1380 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_ENCRYPTED 0x80
1381
1382 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED 0x10000
1383 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_NULL_USER 0x20000
1384 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_NULL_DOMAIN 0x40000
1385 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER 0x80000
1386
1387 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_USE_MASK 0xff000000
1388 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_CREDPROV_DO_NOT_SAVE 0x80000000
1389 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_SAVE_CRED_BY_CALLER SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_CREDPROV_DO_NOT_SAVE
1390 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_SAVE_CRED_CHECKED 0x40000000
1391 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_NO_CHECKBOX 0x20000000
1392 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_CREDPROV_DO_NOT_LOAD 0x10000000
1393
1394 #define SEC_WINNT_AUTH_IDENTITY_FLAGS_VALID_SSPIPFC_FLAGS \
1395 (SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_CREDPROV_DO_NOT_SAVE | \
1396 SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_SAVE_CRED_CHECKED | \
1397 SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_NO_CHECKBOX | \
1398 SEC_WINNT_AUTH_IDENTITY_FLAGS_SSPIPFC_CREDPROV_DO_NOT_LOAD)
1399
1400 #endif
1401
1402 #define SSPIPFC_CREDPROV_DO_NOT_SAVE 0x00000001
1403 #define SSPIPFC_SAVE_CRED_BY_CALLER SSPIPFC_CREDPROV_DO_NOT_SAVE
1404 #define SSPIPFC_NO_CHECKBOX 0x00000002
1405 #define SSPIPFC_CREDPROV_DO_NOT_LOAD 0x00000004
1406 #define SSPIPFC_USE_CREDUIBROKER 0x00000008
1407 #define SSPIPFC_VALID_FLAGS \
1408 (SSPIPFC_CREDPROV_DO_NOT_SAVE | SSPIPFC_NO_CHECKBOX | SSPIPFC_CREDPROV_DO_NOT_LOAD | SSPIPFC_USE_CREDUIBROKER)
1409
1410 #ifndef _SSPIPFC_NONE_
1411
1412 typedef PVOID PSEC_WINNT_AUTH_IDENTITY_OPAQUE;
1413
1414 unsigned __LONG32 SEC_ENTRY SspiPromptForCredentialsW(
1415 PCWSTR pszTargetName,
1416 #ifdef _CREDUI_INFO_DEFINED
1417 PCREDUI_INFOW pUiInfo,
1418 #else
1419 PVOID pUiInfo,
1420 #endif
1421 unsigned __LONG32 dwAuthError,
1422 PCWSTR pszPackage,
1423 PSEC_WINNT_AUTH_IDENTITY_OPAQUE pInputAuthIdentity,
1424 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity,
1425 int* pfSave,
1426 unsigned __LONG32 dwFlags
1427 );
1428
1429 unsigned __LONG32 SEC_ENTRY SspiPromptForCredentialsA(
1430 PCSTR pszTargetName,
1431 #ifdef _CREDUI_INFO_DEFINED
1432 PCREDUI_INFOA pUiInfo,
1433 #else
1434 PVOID pUiInfo,
1435 #endif
1436 unsigned __LONG32 dwAuthError,
1437 PCSTR pszPackage,
1438 PSEC_WINNT_AUTH_IDENTITY_OPAQUE pInputAuthIdentity,
1439 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity,
1440 int* pfSave,
1441 unsigned __LONG32 dwFlags
1442 );
1443
1444 #else
1445
1446 typedef PSEC_WINNT_AUTH_IDENTITY_INFO PSEC_WINNT_AUTH_IDENTITY_OPAQUE;
1447
1448 #endif
1449
1450 #ifdef _SEC_WINNT_AUTH_TYPES
1451
1452 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_PASSWORD =
1453 { 0x28bfc32f, 0x10f6, 0x4738, { 0x98, 0xd1, 0x1a, 0xc0, 0x61, 0xdf, 0x71, 0x6a } };
1454
1455 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_CERT =
1456 { 0x235f69ad, 0x73fb, 0x4dbc, { 0x82, 0x3, 0x6, 0x29, 0xe7, 0x39, 0x33, 0x9b } };
1457
1458 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_CREDMAN_CERT =
1459 { 0x7cb72412, 0x1016, 0x491a, { 0x8c, 0x87, 0x4d, 0x2a, 0xa1, 0xb7, 0xdd, 0x3a } };
1460
1461 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_NGC =
1462 { 0x10a47879, 0x5ebf, 0x4b85, { 0xbd, 0x8d, 0xc2, 0x1b, 0xb4, 0xf4, 0x9c, 0x8a } };
1463
1464 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_FIDO =
1465 { 0x32e8f8d7, 0x7871, 0x4bcc, { 0x83, 0xc5, 0x46, 0xf, 0x66, 0xc6, 0x13, 0x5c } };
1466
1467 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_KEYTAB =
1468 { 0xd587aae8, 0xf78f, 0x4455, { 0xa1, 0x12, 0xc9, 0x34, 0xbe, 0xee, 0x7c, 0xe1 } };
1469
1470 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_CSP_DATA =
1471 { 0x68fd9879, 0x79c, 0x4dfe, { 0x82, 0x81, 0x57, 0x8a, 0xad, 0xc1, 0xc1, 0x0 } };
1472
1473 EXTERN_C __declspec(selectany) const GUID SEC_WINNT_AUTH_DATA_TYPE_SMARTCARD_CONTEXTS =
1474 { 0xb86c4ff3, 0x49d7, 0x4dc4, { 0xb5, 0x60, 0xb1, 0x16, 0x36, 0x85, 0xb2, 0x36 } };
1475
1476 EXTERN_C __declspec(selectany) const GUID CREDUIWIN_STRUCTURE_TYPE_SSPIPFC =
1477 { 0x3c3e93d9, 0xd96b, 0x49b5, { 0x94, 0xa7, 0x45, 0x85, 0x92, 0x8, 0x83, 0x37 } };
1478
1479 EXTERN_C __declspec(selectany) const GUID SSPIPFC_STRUCTURE_TYPE_CREDUI_CONTEXT =
1480 { 0xc2fffe6f, 0x503d, 0x4c3d, { 0xa9, 0x5e, 0xbc, 0xe8, 0x21, 0x21, 0x3d, 0x44 } };
1481
1482 typedef struct _SEC_WINNT_AUTH_BYTE_VECTOR {
1483 unsigned __LONG32 ByteArrayOffset;
1484 unsigned short ByteArrayLength;
1485 } SEC_WINNT_AUTH_BYTE_VECTOR, *PSEC_WINNT_AUTH_BYTE_VECTOR;
1486
1487 typedef struct _SEC_WINNT_AUTH_DATA {
1488 GUID CredType;
1489 SEC_WINNT_AUTH_BYTE_VECTOR CredData;
1490 } SEC_WINNT_AUTH_DATA, *PSEC_WINNT_AUTH_DATA;
1491
1492 typedef struct _SEC_WINNT_AUTH_PACKED_CREDENTIALS {
1493 unsigned short cbHeaderLength;
1494 unsigned short cbStructureLength;
1495 SEC_WINNT_AUTH_DATA AuthData;
1496 } SEC_WINNT_AUTH_PACKED_CREDENTIALS, *PSEC_WINNT_AUTH_PACKED_CREDENTIALS;
1497
1498 typedef struct _SEC_WINNT_AUTH_DATA_PASSWORD {
1499 SEC_WINNT_AUTH_BYTE_VECTOR UnicodePassword;
1500 } SEC_WINNT_AUTH_DATA_PASSWORD, PSEC_WINNT_AUTH_DATA_PASSWORD;
1501
1502 typedef struct _SEC_WINNT_AUTH_CERTIFICATE_DATA {
1503 unsigned short cbHeaderLength;
1504 unsigned short cbStructureLength;
1505 SEC_WINNT_AUTH_BYTE_VECTOR Certificate;
1506 } SEC_WINNT_AUTH_CERTIFICATE_DATA, *PSEC_WINNT_AUTH_CERTIFICATE_DATA;
1507
1508 typedef struct _SEC_WINNT_AUTH_NGC_DATA {
1509 LUID LogonId;
1510 unsigned __LONG32 Flags;
1511 SEC_WINNT_AUTH_BYTE_VECTOR CspInfo;
1512 SEC_WINNT_AUTH_BYTE_VECTOR UserIdKeyAuthTicket;
1513 SEC_WINNT_AUTH_BYTE_VECTOR DecryptionKeyName;
1514 SEC_WINNT_AUTH_BYTE_VECTOR DecryptionKeyAuthTicket;
1515 } SEC_WINNT_AUTH_NGC_DATA, *PSEC_WINNT_AUTH_NGC_DATA;
1516
1517 #define NGC_DATA_FLAG_KERB_CERTIFICATE_LOGON_FLAG_CHECK_DUPLICATES 1
1518 #define NGC_DATA_FLAG_KERB_CERTIFICATE_LOGON_FLAG_USE_CERTIFICATE_INFO 2
1519 #define NGC_DATA_FLAG_IS_SMARTCARD_DATA 4
1520
1521 typedef struct _SEC_WINNT_AUTH_DATA_TYPE_SMARTCARD_CONTEXTS_DATA {
1522 PVOID pcc;
1523 PVOID hProv;
1524 LPWSTR pwszECDHKeyName;
1525 } SEC_WINNT_AUTH_DATA_TYPE_SMARTCARD_CONTEXTS_DATA, *PSEC_WINNT_AUTH_DATA_TYPE_SMARTCARD_CONTEXTS_DATA;
1526
1527 typedef struct _SEC_WINNT_AUTH_FIDO_DATA {
1528 unsigned short cbHeaderLength;
1529 unsigned short cbStructureLength;
1530 SEC_WINNT_AUTH_BYTE_VECTOR Secret;
1531 SEC_WINNT_AUTH_BYTE_VECTOR NewSecret;
1532 SEC_WINNT_AUTH_BYTE_VECTOR EncryptedNewSecret;
1533 SEC_WINNT_AUTH_BYTE_VECTOR NetworkLogonBuffer;
1534 ULONG64 ulSignatureCount;
1535 } SEC_WINNT_AUTH_FIDO_DATA, *PSEC_WINNT_AUTH_FIDO_DATA;
1536
1537 typedef struct _SEC_WINNT_CREDUI_CONTEXT_VECTOR {
1538 ULONG CredUIContextArrayOffset;
1539 USHORT CredUIContextCount;
1540 } SEC_WINNT_CREDUI_CONTEXT_VECTOR, *PSEC_WINNT_CREDUI_CONTEXT_VECTOR;
1541
1542 typedef struct _SEC_WINNT_AUTH_SHORT_VECTOR {
1543 ULONG ShortArrayOffset;
1544 USHORT ShortArrayCount;
1545 } SEC_WINNT_AUTH_SHORT_VECTOR, *PSEC_WINNT_AUTH_SHORT_VECTOR;
1546
1547 typedef struct _CREDUIWIN_MARSHALED_CONTEXT {
1548 GUID StructureType;
1549 USHORT cbHeaderLength;
1550 LUID LogonId;
1551 GUID MarshaledDataType;
1552 ULONG MarshaledDataOffset;
1553 USHORT MarshaledDataLength;
1554 } CREDUIWIN_MARSHALED_CONTEXT, *PCREDUIWIN_MARSHALED_CONTEXT;
1555
1556 typedef struct _SEC_WINNT_CREDUI_CONTEXT {
1557 USHORT cbHeaderLength;
1558 HANDLE CredUIContextHandle;
1559 #ifdef _CREDUI_INFO_DEFINED
1560 PCREDUI_INFOW UIInfo;
1561 #else
1562 PVOID UIInfo;
1563 #endif
1564 ULONG dwAuthError;
1565 PSEC_WINNT_AUTH_IDENTITY_OPAQUE pInputAuthIdentity;
1566 PUNICODE_STRING TargetName;
1567 } SEC_WINNT_CREDUI_CONTEXT, *PSEC_WINNT_CREDUI_CONTEXT;
1568
1569 typedef struct _SEC_WINNT_AUTH_PACKED_CREDENTIALS_EX {
1570 unsigned short cbHeaderLength;
1571 unsigned __LONG32 Flags;
1572 SEC_WINNT_AUTH_BYTE_VECTOR PackedCredentials;
1573 SEC_WINNT_AUTH_SHORT_VECTOR PackageList;
1574 } SEC_WINNT_AUTH_PACKED_CREDENTIALS_EX, *PSEC_WINNT_AUTH_PACKED_CREDENTIALS_EX;
1575
1576 SECURITY_STATUS SEC_ENTRY SspiGetCredUIContext(HANDLE ContextHandle, GUID* CredType,
1577 LUID* LogonId,
1578 PSEC_WINNT_CREDUI_CONTEXT_VECTOR* CredUIContexts,
1579 HANDLE* TokenHandle);
1580 SECURITY_STATUS SEC_ENTRY SspiUpdateCredentials(HANDLE ContextHandle, GUID* CredType,
1581 ULONG FlatCredUIContextLength,
1582 PUCHAR FlatCredUIContext);
1583 SECURITY_STATUS SEC_ENTRY SspiUnmarshalCredUIContext(PUCHAR MarshaledCredUIContext,
1584 ULONG MarshaledCredUIContextLength,
1585 PSEC_WINNT_CREDUI_CONTEXT* CredUIContext);
1586
1587 #endif
1588
1589 #define SEC_WINNT_AUTH_IDENTITY_MARSHALLED 0x4
1590 #define SEC_WINNT_AUTH_IDENTITY_ONLY 0x8
1591
1592 typedef struct _SECURITY_PACKAGE_OPTIONS {
1593 unsigned __LONG32 Size;
1594 unsigned __LONG32 Type;
1595 unsigned __LONG32 Flags;
1596 unsigned __LONG32 SignatureSize;
1597 void *Signature;
1598 } SECURITY_PACKAGE_OPTIONS,*PSECURITY_PACKAGE_OPTIONS;
1599
1600 #define SECPKG_OPTIONS_TYPE_UNKNOWN 0
1601 #define SECPKG_OPTIONS_TYPE_LSA 1
1602 #define SECPKG_OPTIONS_TYPE_SSPI 2
1603
1604 #define SECPKG_OPTIONS_PERMANENT 0x00000001
1605
1606 #define AddSecurityPackage __MINGW_NAME_AW(AddSecurityPackage)
1607 #define DeleteSecurityPackage __MINGW_NAME_AW(DeleteSecurityPackage)
1608
1609 SECURITY_STATUS WINAPI AddSecurityPackageA(LPSTR pszPackageName,PSECURITY_PACKAGE_OPTIONS pOptions);
1610 SECURITY_STATUS WINAPI AddSecurityPackageW(LPWSTR pszPackageName,PSECURITY_PACKAGE_OPTIONS pOptions);
1611
1612 SECURITY_STATUS WINAPI DeleteSecurityPackageA(SEC_CHAR *pszPackageName);
1613 SECURITY_STATUS WINAPI DeleteSecurityPackageW(SEC_WCHAR *pszPackageName);
1614
1615 #if ISSP_MODE == 0
1616
1617 typedef struct _SspiAsyncContext SspiAsyncContext;
1618
1619 typedef void (*SspiAsyncNotifyCallback)(SspiAsyncContext* Handle, PVOID CallbackData);
1620
1621 SspiAsyncContext* SspiCreateAsyncContext();
1622 void SspiFreeAsyncContext(SspiAsyncContext* Handle);
1623 NTSTATUS SspiReinitAsyncContext(SspiAsyncContext* Handle);
1624 SECURITY_STATUS SspiSetAsyncNotifyCallback(SspiAsyncContext* Context,
1625 SspiAsyncNotifyCallback Callback,
1626 void* CallbackData);
1627 BOOLEAN SspiAsyncContextRequiresNotify(SspiAsyncContext* AsyncContext);
1628 SECURITY_STATUS SspiGetAsyncCallStatus(SspiAsyncContext* Handle);
1629
1630 SECURITY_STATUS SspiAcquireCredentialsHandleAsyncW(
1631 SspiAsyncContext* AsyncContext,
1632 #if ISSP_MODE == 0
1633 PSECURITY_STRING pszPrincipal,
1634 PSECURITY_STRING pszPackage,
1635 #else
1636 LPWSTR pszPrincipal,
1637 LPWSTR pszPackage,
1638 #endif
1639 unsigned __LONG32 fCredentialUse,
1640 void* pvLogonId,
1641 void* pAuthData,
1642 SEC_GET_KEY_FN pGetKeyFn,
1643 void* pvGetKeyArgument,
1644 PCredHandle phCredential,
1645 PTimeStamp ptsExpiry
1646 );
1647
1648 SECURITY_STATUS SspiAcquireCredentialsHandleAsyncA(
1649 SspiAsyncContext* AsyncContext,
1650 LPSTR pszPrincipal,
1651 LPSTR pszPackage,
1652 unsigned __LONG32 fCredentialUse,
1653 void * pvLogonId,
1654 void * pAuthData,
1655 SEC_GET_KEY_FN pGetKeyFn,
1656 void * pvGetKeyArgument,
1657 PCredHandle phCredential,
1658 PTimeStamp ptsExpiry
1659 );
1660
1661 SECURITY_STATUS SspiInitializeSecurityContextAsyncW(
1662 SspiAsyncContext* AsyncContext,
1663 PCredHandle phCredential,
1664 PCtxtHandle phContext,
1665 #if ISSP_MODE == 0
1666 PSECURITY_STRING pszTargetName,
1667 #else
1668 LPWSTR pszTargetName,
1669 #endif
1670 unsigned __LONG32 fContextReq,
1671 unsigned __LONG32 Reserved1,
1672 unsigned __LONG32 TargetDataRep,
1673 PSecBufferDesc pInput,
1674 unsigned __LONG32 Reserved2,
1675 PCtxtHandle phNewContext,
1676 PSecBufferDesc pOutput,
1677 unsigned __LONG32* pfContextAttr,
1678 PTimeStamp ptsExpiry
1679 );
1680
1681 SECURITY_STATUS SspiInitializeSecurityContextAsyncA(
1682 SspiAsyncContext* AsyncContext,
1683 PCredHandle phCredential,
1684 PCtxtHandle phContext,
1685 LPSTR pszTargetName,
1686 unsigned __LONG32 fContextReq,
1687 unsigned __LONG32 Reserved1,
1688 unsigned __LONG32 TargetDataRep,
1689 PSecBufferDesc pInput,
1690 unsigned __LONG32 Reserved2,
1691 PCtxtHandle phNewContext,
1692 PSecBufferDesc pOutput,
1693 unsigned __LONG32* pfContextAttr,
1694 PTimeStamp ptsExpiry
1695 );
1696
1697 SECURITY_STATUS SspiAcceptSecurityContextAsync(
1698 SspiAsyncContext* AsyncContext,
1699 PCredHandle phCredential,
1700 PCtxtHandle phContext,
1701 PSecBufferDesc pInput,
1702 unsigned __LONG32 fContextReq,
1703 unsigned __LONG32 TargetDataRep,
1704 PCtxtHandle phNewContext,
1705 PSecBufferDesc pOutput,
1706 unsigned __LONG32* pfContextAttr,
1707 PTimeStamp ptsExpiry
1708 );
1709
1710 SECURITY_STATUS SspiFreeCredentialsHandleAsync(
1711 SspiAsyncContext* AsyncContext,
1712 PCredHandle phCredential
1713 );
1714
1715 SECURITY_STATUS SspiDeleteSecurityContextAsync(
1716 SspiAsyncContext* AsyncContext,
1717 PCtxtHandle phContext
1718 );
1719
1720 #define SspiAcquireCredentialsHandleAsync __MINGW_NAME_AW(SspiAcquireCredentialsHandleAsync)
1721 #define SspiInitializeSecurityContextAsync __MINGW_NAME_AW(SspiInitializeSecurityContextAsync)
1722
1723 #endif
1724
1725 SECURITY_STATUS SEC_ENTRY SspiPrepareForCredRead(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
1726 PCWSTR pszTargetName, PULONG pCredmanCredentialType,
1727 PCWSTR* ppszCredmanTargetName);
1728
1729 SECURITY_STATUS SEC_ENTRY SspiPrepareForCredWrite(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
1730 PCWSTR pszTargetName, PULONG pCredmanCredentialType,
1731 PCWSTR* ppszCredmanTargetName, PCWSTR* ppszCredmanUserName,
1732 PUCHAR *ppCredentialBlob, PULONG pCredentialBlobSize);
1733
1734 #define SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 1
1735 #define SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS 2
1736 #define SEC_WINNT_AUTH_IDENTITY_ENCRYPT_FOR_SYSTEM 4
1737
1738 SECURITY_STATUS SEC_ENTRY SspiEncryptAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
1739
1740 SECURITY_STATUS SEC_ENTRY SspiEncryptAuthIdentityEx(ULONG Options, PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
1741
1742 SECURITY_STATUS SEC_ENTRY SspiDecryptAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE EncryptedAuthData);
1743
1744 SECURITY_STATUS SEC_ENTRY SspiDecryptAuthIdentityEx(ULONG Options, PSEC_WINNT_AUTH_IDENTITY_OPAQUE EncryptedAuthData);
1745
1746 BOOLEAN SEC_ENTRY SspiIsAuthIdentityEncrypted(PSEC_WINNT_AUTH_IDENTITY_OPAQUE EncryptedAuthData);
1747
1748 #if NTDDI_VERSION >= NTDDI_WIN7
1749
1750 SECURITY_STATUS SEC_ENTRY SspiEncodeAuthIdentityAsStrings(PSEC_WINNT_AUTH_IDENTITY_OPAQUE pAuthIdentity,
1751 PCWSTR* ppszUserName, PCWSTR* ppszDomainName,
1752 PCWSTR* ppszPackedCredentialsString);
1753
1754 SECURITY_STATUS SEC_ENTRY SspiValidateAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
1755
1756 SECURITY_STATUS SEC_ENTRY SspiCopyAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData,
1757 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* AuthDataCopy);
1758
1759 VOID SEC_ENTRY SspiFreeAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
1760
1761 VOID SEC_ENTRY SspiZeroAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData);
1762
1763 VOID SEC_ENTRY SspiLocalFree(PVOID DataBuffer);
1764
1765 SECURITY_STATUS SEC_ENTRY SspiEncodeStringsAsAuthIdentity(PCWSTR pszUserName, PCWSTR pszDomainName,
1766 PCWSTR pszPackedCredentialsString,
1767 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity);
1768
1769 SECURITY_STATUS SEC_ENTRY SspiCompareAuthIdentities(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity1,
1770 PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity2,
1771 PBOOLEAN SameSuppliedUser, PBOOLEAN SameSuppliedIdentity);
1772
1773 SECURITY_STATUS SEC_ENTRY SspiMarshalAuthIdentity(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
1774 unsigned __LONG32* AuthIdentityLength,
1775 char** AuthIdentityByteArray);
1776
1777 SECURITY_STATUS SEC_ENTRY SspiUnmarshalAuthIdentity(unsigned __LONG32 AuthIdentityLength,
1778 char* AuthIdentityByteArray,
1779 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity);
1780
1781 BOOLEAN SEC_ENTRY SspiIsPromptingNeeded(unsigned __LONG32 ErrorOrNtStatus);
1782
1783 SECURITY_STATUS SEC_ENTRY SspiGetTargetHostName(PCWSTR pszTargetName, PWSTR* pszHostName);
1784
1785 SECURITY_STATUS SEC_ENTRY SspiExcludePackage(PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
1786 PCWSTR pszPackageName,
1787 PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppNewAuthIdentity);
1788
1789 #endif
1790
1791 #ifdef __cplusplus
1792 }
1793 #endif
1794 #endif