• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 4.12.1 from include/iketypes.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __iketypes_h__
17 #define __iketypes_h__
18 
19 /* Forward declarations */
20 
21 /* Headers for imported files */
22 
23 #include <fwptypes.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 /**
30  * This file is part of the mingw-w64 runtime package.
31  * No warranty is given; refer to the file DISCLAIMER within this package.
32  */
33 
34 #include <winapifamily.h>
35 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
36 
37 #define IKEEXT_ERROR_CODE_COUNT (ERROR_IPSEC_IKE_NEG_STATUS_END - ERROR_IPSEC_IKE_NEG_STATUS_BEGIN)
38 
39 /* Please keep in sync with winerror.h defines.  */
40 
41 #define IKEEXT_CERT_FLAG_ENABLE_ACCOUNT_MAPPING          (0x1)
42 #define IKEEXT_CERT_FLAG_DISABLE_REQUEST_PAYLOAD         (0x2)
43 #define IKEEXT_CERT_FLAG_USE_NAP_CERTIFICATE             (0x4)
44 #define IKEEXT_CERT_FLAG_INTERMEDIATE_CA                 (0x8)
45 #define IKEEXT_CERT_FLAG_IGNORE_INIT_CERT_MAP_FAILURE    (0x10)
46 #define IKEEXT_CERT_FLAG_PREFER_NAP_CERTIFICATE_OUTBOUND (0x20)
47 #if (NTDDI_VERSION >= NTDDI_WIN8)
48 #define IKEEXT_CERT_FLAG_SELECT_NAP_CERTIFICATE          (0x40)
49 #define IKEEXT_CERT_FLAG_VERIFY_NAP_CERTIFICATE          (0x80)
50 #define IKEEXT_CERT_FLAG_FOLLOW_RENEWAL_CERTIFICATE      (0x100)
51 #endif
52 
53 #define IKEEXT_CERT_AUTH_FLAG_SSL_ONE_WAY            (0x1)
54 #define IKEEXT_CERT_AUTH_FLAG_DISABLE_CRL_CHECK      (0x2)
55 #define IKEEXT_CERT_AUTH_ENABLE_CRL_CHECK_STRONG     (0x4)
56 #define IKEEXT_CERT_AUTH_DISABLE_SSL_CERT_VALIDATION (0x8)
57 #if (NTDDI_VERSION >= NTDDI_WIN7)
58 #define IKEEXT_CERT_AUTH_ALLOW_HTTP_CERT_LOOKUP      (0x10)
59 #define IKEEXT_CERT_AUTH_URL_CONTAINS_BUNDLE         (0x20)
60 #endif
61 
62 #define IKEEXT_KERB_AUTH_DISABLE_INITIATOR_TOKEN_GENERATION (0x1)
63 #define IKEEXT_KERB_AUTH_DONT_ACCEPT_EXPLICIT_CREDENTIALS   (0x2)
64 #if (NTDDI_VERSION >= NTDDI_WIN8)
65 #define IKEEXT_KERB_AUTH_FORCE_PROXY_ON_INITIATOR           (0x4)
66 #endif
67 
68 #define IKEEXT_RESERVED_AUTH_DISABLE_INITIATOR_TOKEN_GENERATION (0x1)
69 
70 #define IKEEXT_NTLM_V2_AUTH_DONT_ACCEPT_EXPLICIT_CREDENTIALS (0x1)
71 
72 #define IKEEXT_POLICY_FLAG_DISABLE_DIAGNOSTICS (0x00000001)
73 #define IKEEXT_POLICY_FLAG_NO_MACHINE_LUID_VERIFY (0x00000002)
74 #define IKEEXT_POLICY_FLAG_NO_IMPERSONATION_LUID_VERIFY (0x00000004)
75 #define IKEEXT_POLICY_FLAG_ENABLE_OPTIONAL_DH (0x00000008)
76 
77 #define IKEEXT_CERT_CREDENTIAL_FLAG_NAP_CERT (0x1)
78 
79 #if (NTDDI_VERSION >= NTDDI_WIN7)
80 #define IKEEXT_PSK_FLAG_LOCAL_AUTH_ONLY  (0x1)
81 #define IKEEXT_PSK_FLAG_REMOTE_AUTH_ONLY (0x2)
82 
83 #define IKEEXT_EAP_FLAG_LOCAL_AUTH_ONLY   (0x1)
84 #define IKEEXT_EAP_FLAG_REMOTE_AUTH_ONLY  (0x2)
85 #endif
86 
87 #ifndef __IPSEC_V4_UDP_ENCAPSULATION0_FWD_DECLARED
88 #define __IPSEC_V4_UDP_ENCAPSULATION0_FWD_DECLARED
89 typedef struct IPSEC_V4_UDP_ENCAPSULATION0_ IPSEC_V4_UDP_ENCAPSULATION0;
90 #endif
91 
92 typedef UINT64 IKEEXT_COOKIE;
93 
94 typedef enum IKEEXT_EM_SA_STATE_ {
95     IKEEXT_EM_SA_STATE_NONE = 0,
96     IKEEXT_EM_SA_STATE_SENT_ATTS = 1,
97     IKEEXT_EM_SA_STATE_SSPI_SENT = 2,
98     IKEEXT_EM_SA_STATE_AUTH_COMPLETE = 3,
99     IKEEXT_EM_SA_STATE_FINAL = 4,
100     IKEEXT_EM_SA_STATE_COMPLETE = 5,
101     IKEEXT_EM_SA_STATE_MAX = 6
102 } IKEEXT_EM_SA_STATE;
103 
104 typedef enum IKEEXT_SA_ROLE_ {
105     IKEEXT_SA_ROLE_INITIATOR = 0,
106     IKEEXT_SA_ROLE_RESPONDER = 1,
107     IKEEXT_SA_ROLE_MAX = 2
108 } IKEEXT_SA_ROLE;
109 
110 typedef enum IKEEXT_AUTHENTICATION_METHOD_TYPE_ {
111     IKEEXT_PRESHARED_KEY = 0,
112     IKEEXT_CERTIFICATE = 1,
113     IKEEXT_KERBEROS = 2,
114     IKEEXT_ANONYMOUS = 3,
115     IKEEXT_SSL = 4,
116     IKEEXT_NTLM_V2 = 5,
117     IKEEXT_IPV6_CGA = 6,
118     IKEEXT_CERTIFICATE_ECDSA_P256 = 7,
119     IKEEXT_CERTIFICATE_ECDSA_P384 = 8,
120     IKEEXT_SSL_ECDSA_P256 = 9,
121     IKEEXT_SSL_ECDSA_P384 = 10,
122     IKEEXT_EAP = 11,
123     IKEEXT_RESERVED = 12,
124     IKEEXT_AUTHENTICATION_METHOD_TYPE_MAX = 13
125 } IKEEXT_AUTHENTICATION_METHOD_TYPE;
126 
127 typedef enum IKEEXT_KEY_MODULE_TYPE_ {
128     IKEEXT_KEY_MODULE_IKE = 0,
129     IKEEXT_KEY_MODULE_AUTHIP = 1,
130     IKEEXT_KEY_MODULE_IKEV2 = 2,
131     IKEEXT_KEY_MODULE_MAX = 3
132 } IKEEXT_KEY_MODULE_TYPE;
133 
134 typedef enum IKEEXT_MM_SA_STATE_ {
135     IKEEXT_MM_SA_STATE_NONE = 0,
136     IKEEXT_MM_SA_STATE_SA_SENT = 1,
137     IKEEXT_MM_SA_STATE_SSPI_SENT = 2,
138     IKEEXT_MM_SA_STATE_FINAL = 3,
139     IKEEXT_MM_SA_STATE_FINAL_SENT = 4,
140     IKEEXT_MM_SA_STATE_COMPLETE = 5,
141     IKEEXT_MM_SA_STATE_MAX = 6
142 } IKEEXT_MM_SA_STATE;
143 
144 typedef enum IKEEXT_QM_SA_STATE_ {
145     IKEEXT_QM_SA_STATE_NONE = 0,
146     IKEEXT_QM_SA_STATE_INITIAL = 1,
147     IKEEXT_QM_SA_STATE_FINAL = 2,
148     IKEEXT_QM_SA_STATE_COMPLETE = 3,
149     IKEEXT_QM_SA_STATE_MAX = 4
150 } IKEEXT_QM_SA_STATE;
151 
152 typedef enum IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE_ {
153     IKEEXT_IMPERSONATION_NONE = 0,
154     IKEEXT_IMPERSONATION_SOCKET_PRINCIPAL = 1,
155     IKEEXT_IMPERSONATION_MAX = 2
156 } IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE;
157 
158 typedef enum IKEEXT_CERT_CONFIG_TYPE_ {
159     IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST = 0,
160     IKEEXT_CERT_CONFIG_ENTERPRISE_STORE = 1,
161     IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE = 2,
162     IKEEXT_CERT_CONFIG_UNSPECIFIED = 3,
163     IKEEXT_CERT_CONFIG_TYPE_MAX = 4
164 } IKEEXT_CERT_CONFIG_TYPE;
165 
166 typedef enum IKEEXT_CIPHER_TYPE_ {
167     IKEEXT_CIPHER_DES = 0,
168     IKEEXT_CIPHER_3DES = 1,
169     IKEEXT_CIPHER_AES_128 = 2,
170     IKEEXT_CIPHER_AES_192 = 3,
171     IKEEXT_CIPHER_AES_256 = 4,
172     IKEEXT_CIPHER_TYPE_MAX = 5
173 } IKEEXT_CIPHER_TYPE;
174 
175 typedef enum IKEEXT_INTEGRITY_TYPE_ {
176     IKEEXT_INTEGRITY_MD5 = 0,
177     IKEEXT_INTEGRITY_SHA1 = 1,
178     IKEEXT_INTEGRITY_SHA_256 = 2,
179     IKEEXT_INTEGRITY_SHA_384 = 3,
180     IKEEXT_INTEGRITY_TYPE_MAX = 4
181 } IKEEXT_INTEGRITY_TYPE;
182 
183 typedef enum IKEEXT_DH_GROUP_ {
184     IKEEXT_DH_GROUP_NONE = 0,
185     IKEEXT_DH_GROUP_1 = 1,
186     IKEEXT_DH_GROUP_2 = 2,
187     IKEEXT_DH_GROUP_14 = 3,
188     IKEEXT_DH_GROUP_2048 = IKEEXT_DH_GROUP_14,
189     IKEEXT_DH_ECP_256 = 4,
190     IKEEXT_DH_ECP_384 = 5,
191     IKEEXT_DH_GROUP_24 = 6,
192     IKEEXT_DH_GROUP_MAX = 7
193 } IKEEXT_DH_GROUP;
194 
195 typedef struct IKEEXT_CERT_ROOT_CONFIG0_ {
196     FWP_BYTE_BLOB certData;
197     UINT32 flags;
198 } IKEEXT_CERT_ROOT_CONFIG0;
199 
200 typedef struct IKEEXT_KERBEROS_AUTHENTICATION0__ {
201     UINT32 flags;
202 } IKEEXT_KERBEROS_AUTHENTICATION0;
203 
204 typedef struct IKEEXT_NTLM_V2_AUTHENTICATION0__ {
205     UINT32 flags;
206 } IKEEXT_NTLM_V2_AUTHENTICATION0;
207 
208 typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION0__ {
209     FWP_BYTE_BLOB presharedKey;
210 } IKEEXT_PRESHARED_KEY_AUTHENTICATION0;
211 
212 typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION1__ {
213     FWP_BYTE_BLOB presharedKey;
214     UINT32 flags;
215 } IKEEXT_PRESHARED_KEY_AUTHENTICATION1;
216 
217 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION0_ {
218     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
219     __C89_NAMELESS union {
220         __C89_NAMELESS struct {
221             UINT32 inboundRootArraySize;
222             IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
223         } __C89_NAMELESSSTRUCTNAME;
224         IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
225         IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
226     } __C89_NAMELESSUNIONNAME1;
227     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
228     __C89_NAMELESS union {
229         __C89_NAMELESS struct {
230             UINT32 outboundRootArraySize;
231             IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
232         } __C89_NAMELESSSTRUCTNAME;
233         IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
234         IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
235     } __C89_NAMELESSUNIONNAME2;
236     UINT32 flags;
237 } IKEEXT_CERTIFICATE_AUTHENTICATION0;
238 
239 #if NTDDI_VERSION >= NTDDI_WIN7
240 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION1_ {
241     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
242     __C89_NAMELESS union {
243         __C89_NAMELESS struct {
244             UINT32 inboundRootArraySize;
245             IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
246         } __C89_NAMELESSSTRUCTNAME;
247         IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
248         IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
249     } __C89_NAMELESSUNIONNAME1;
250     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
251     __C89_NAMELESS union {
252         __C89_NAMELESS struct {
253             UINT32 outboundRootArraySize;
254             IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
255         } __C89_NAMELESSSTRUCTNAME;
256         IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
257         IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
258     } __C89_NAMELESSUNIONNAME2;
259     UINT32 flags;
260     FWP_BYTE_BLOB localCertLocationUrl;
261 } IKEEXT_CERTIFICATE_AUTHENTICATION1;
262 #endif
263 
264 #if (NTDDI_VERSION >= NTDDI_WIN8)
265 typedef enum IKEEXT_CERT_CRITERIA_NAME_TYPE_ {
266     IKEEXT_CERT_CRITERIA_DNS = 0,
267     IKEEXT_CERT_CRITERIA_UPN = 1,
268     IKEEXT_CERT_CRITERIA_RFC822 = 2,
269     IKEEXT_CERT_CRITERIA_CN = 3,
270     IKEEXT_CERT_CRITERIA_OU = 4,
271     IKEEXT_CERT_CRITERIA_O = 5,
272     IKEEXT_CERT_CRITERIA_DC = 6,
273     IKEEXT_CERT_CRITERIA_NAME_TYPE_MAX = 7
274 } IKEEXT_CERT_CRITERIA_NAME_TYPE;
275 
276 typedef struct IKEEXT_CERT_EKUS0_ {
277     ULONG numEku;
278     LPSTR *eku;
279 } IKEEXT_CERT_EKUS0;
280 
281 typedef struct IKEEXT_CERT_NAME0_ {
282     IKEEXT_CERT_CRITERIA_NAME_TYPE nameType;
283     LPWSTR certName;
284 } IKEEXT_CERT_NAME0;
285 
286 typedef struct IKEEXT_CERTIFICATE_CRITERIA0_ {
287     FWP_BYTE_BLOB certData;
288     FWP_BYTE_BLOB certHash;
289     IKEEXT_CERT_EKUS0 *eku;
290     IKEEXT_CERT_NAME0 *name;
291     UINT32 flags;
292 } IKEEXT_CERTIFICATE_CRITERIA0;
293 
294 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION2_ {
295     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
296     __C89_NAMELESS union {
297         __C89_NAMELESS struct {
298             UINT32 inboundRootArraySize;
299             IKEEXT_CERTIFICATE_CRITERIA0 *inboundRootCriteria;
300         } __C89_NAMELESSSTRUCTNAME1;
301         __C89_NAMELESS struct {
302             UINT32 inboundEnterpriseStoreArraySize;
303             IKEEXT_CERTIFICATE_CRITERIA0 *inboundEnterpriseStoreCriteria;
304         } __C89_NAMELESSSTRUCTNAME2;
305         __C89_NAMELESS struct {
306             UINT32 inboundRootStoreArraySize;
307             IKEEXT_CERTIFICATE_CRITERIA0 *inboundTrustedRootStoreCriteria;
308         } __C89_NAMELESSSTRUCTNAME3;
309     } __C89_NAMELESSUNIONNAME1;
310     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
311     __C89_NAMELESS union {
312         __C89_NAMELESS struct {
313             UINT32 outboundRootArraySize;
314             IKEEXT_CERTIFICATE_CRITERIA0 *outboundRootCriteria;
315         } __C89_NAMELESSSTRUCTNAME1;
316         __C89_NAMELESS struct {
317             UINT32 outboundEnterpriseStoreArraySize;
318             IKEEXT_CERTIFICATE_CRITERIA0 *outboundEnterpriseStoreCriteria;
319         } __C89_NAMELESSSTRUCTNAME2;
320         __C89_NAMELESS struct {
321             UINT32 outboundRootStoreArraySize;
322             IKEEXT_CERTIFICATE_CRITERIA0 *outboundTrustedRootStoreCriteria;
323         } __C89_NAMELESSSTRUCTNAME3;
324     } __C89_NAMELESSUNIONNAME2;
325     UINT32 flags;
326     FWP_BYTE_BLOB localCertLocationUrl;
327 } IKEEXT_CERTIFICATE_AUTHENTICATION2;
328 #endif
329 
330 typedef struct IKEEXT_IPV6_CGA_AUTHENTICATION0_ {
331     wchar_t *keyContainerName;
332     wchar_t *cspName;
333     UINT32 cspType;
334     FWP_BYTE_ARRAY16 cgaModifier;
335     BYTE cgaCollisionCount;
336 } IKEEXT_IPV6_CGA_AUTHENTICATION0;
337 
338 #if (NTDDI_VERSION >= NTDDI_WIN8)
339 typedef struct IKEEXT_KERBEROS_AUTHENTICATION1__ {
340     UINT32 flags;
341     wchar_t *proxyServer;
342 } IKEEXT_KERBEROS_AUTHENTICATION1;
343 #endif
344 
345 typedef struct IKEEXT_RESERVED_AUTHENTICATION0__ {
346     UINT32 flags;
347 } IKEEXT_RESERVED_AUTHENTICATION0;
348 
349 #if (NTDDI_VERSION >= NTDDI_WIN7)
350 typedef struct IKEEXT_EAP_AUTHENTICATION0__ {
351     UINT32 flags;
352 } IKEEXT_EAP_AUTHENTICATION0;
353 #endif
354 
355 typedef struct IKEEXT_AUTHENTICATION_METHOD0_ {
356     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
357     __C89_NAMELESS union {
358         IKEEXT_PRESHARED_KEY_AUTHENTICATION0 presharedKeyAuthentication;
359         IKEEXT_CERTIFICATE_AUTHENTICATION0 certificateAuthentication;
360         IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
361         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
362         IKEEXT_CERTIFICATE_AUTHENTICATION0 sslAuthentication;
363         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
364     } __C89_NAMELESSUNIONNAME;
365 } IKEEXT_AUTHENTICATION_METHOD0;
366 
367 #if (NTDDI_VERSION >= NTDDI_WIN7)
368 typedef struct IKEEXT_AUTHENTICATION_METHOD1_ {
369     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
370     __C89_NAMELESS union {
371         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
372         IKEEXT_CERTIFICATE_AUTHENTICATION1 certificateAuthentication;
373         IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
374         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
375         IKEEXT_CERTIFICATE_AUTHENTICATION1 sslAuthentication;
376         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
377         IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
378     } __C89_NAMELESSUNIONNAME;
379 } IKEEXT_AUTHENTICATION_METHOD1;
380 #endif
381 
382 #if (NTDDI_VERSION >= NTDDI_WIN8)
383 typedef struct IKEEXT_AUTHENTICATION_METHOD2_ {
384     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
385     __C89_NAMELESS union {
386         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
387         IKEEXT_CERTIFICATE_AUTHENTICATION2 certificateAuthentication;
388         IKEEXT_KERBEROS_AUTHENTICATION1 kerberosAuthentication;
389         IKEEXT_RESERVED_AUTHENTICATION0 reservedAuthentication;
390         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
391         IKEEXT_CERTIFICATE_AUTHENTICATION2 sslAuthentication;
392         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
393         IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
394     } __C89_NAMELESSUNIONNAME;
395 } IKEEXT_AUTHENTICATION_METHOD2;
396 #endif
397 
398 typedef struct IKEEXT_CIPHER_ALGORITHM0_ {
399     IKEEXT_CIPHER_TYPE algoIdentifier;
400     UINT32 keyLen;
401     UINT32 rounds;
402 } IKEEXT_CIPHER_ALGORITHM0;
403 
404 typedef struct IKEEXT_INTEGRITY_ALGORITHM0_ {
405     IKEEXT_INTEGRITY_TYPE algoIdentifier;
406 } IKEEXT_INTEGRITY_ALGORITHM0;
407 
408 typedef struct IKEEXT_PROPOSAL0_ {
409     IKEEXT_CIPHER_ALGORITHM0 cipherAlgorithm;
410     IKEEXT_INTEGRITY_ALGORITHM0 integrityAlgorithm;
411     UINT32 maxLifetimeSeconds;
412     IKEEXT_DH_GROUP dhGroup;
413     UINT32 quickModeLimit;
414 } IKEEXT_PROPOSAL0;
415 
416 typedef struct IKEEXT_POLICY0_ {
417     UINT32 softExpirationTime;
418     UINT32 numAuthenticationMethods;
419     IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
420     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
421     UINT32 numIkeProposals;
422     IKEEXT_PROPOSAL0 *ikeProposals;
423     UINT32 flags;
424     UINT32 maxDynamicFilters;
425 } IKEEXT_POLICY0;
426 
427 #if (NTDDI_VERSION >= NTDDI_WIN7)
428 typedef struct IKEEXT_POLICY1_ {
429     UINT32 softExpirationTime;
430     UINT32 numAuthenticationMethods;
431     IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
432     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
433     UINT32 numIkeProposals;
434     IKEEXT_PROPOSAL0 *ikeProposals;
435     UINT32 flags;
436     UINT32 maxDynamicFilters;
437     UINT32 retransmitDurationSecs;
438 } IKEEXT_POLICY1;
439 #endif
440 
441 #if (NTDDI_VERSION >= NTDDI_WIN8)
442 typedef struct IKEEXT_POLICY2_ {
443     UINT32 softExpirationTime;
444     UINT32 numAuthenticationMethods;
445     IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
446     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
447     UINT32 numIkeProposals;
448     IKEEXT_PROPOSAL0 *ikeProposals;
449     UINT32 flags;
450     UINT32 maxDynamicFilters;
451     UINT32 retransmitDurationSecs;
452 } IKEEXT_POLICY2;
453 #endif
454 
455 typedef struct IKEEXT_EM_POLICY0_ {
456     UINT32 numAuthenticationMethods;
457     IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
458     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
459 } IKEEXT_EM_POLICY0;
460 
461 #if (NTDDI_VERSION >= NTDDI_WIN7)
462 typedef struct IKEEXT_EM_POLICY1_ {
463     UINT32 numAuthenticationMethods;
464     IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
465     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
466 } IKEEXT_EM_POLICY1;
467 #endif
468 
469 #if (NTDDI_VERSION >= NTDDI_WIN8)
470 typedef struct IKEEXT_EM_POLICY2_ {
471     UINT32 numAuthenticationMethods;
472     IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
473     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
474 } IKEEXT_EM_POLICY2;
475 #endif
476 
477 typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0_ {
478     UINT32 currentActiveMainModes;
479     UINT32 totalMainModesStarted;
480     UINT32 totalSuccessfulMainModes;
481     UINT32 totalFailedMainModes;
482     UINT32 totalResponderMainModes;
483     UINT32 currentNewResponderMainModes;
484     UINT32 currentActiveQuickModes;
485     UINT32 totalQuickModesStarted;
486     UINT32 totalSuccessfulQuickModes;
487     UINT32 totalFailedQuickModes;
488     UINT32 totalAcquires;
489     UINT32 totalReinitAcquires;
490     UINT32 currentActiveExtendedModes;
491     UINT32 totalExtendedModesStarted;
492     UINT32 totalSuccessfulExtendedModes;
493     UINT32 totalFailedExtendedModes;
494     UINT32 totalImpersonationExtendedModes;
495     UINT32 totalImpersonationMainModes;
496 } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0;
497 
498 #if (NTDDI_VERSION >= NTDDI_WIN7)
499 typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1_ {
500     UINT32 currentActiveMainModes;
501     UINT32 totalMainModesStarted;
502     UINT32 totalSuccessfulMainModes;
503     UINT32 totalFailedMainModes;
504     UINT32 totalResponderMainModes;
505     UINT32 currentNewResponderMainModes;
506     UINT32 currentActiveQuickModes;
507     UINT32 totalQuickModesStarted;
508     UINT32 totalSuccessfulQuickModes;
509     UINT32 totalFailedQuickModes;
510     UINT32 totalAcquires;
511     UINT32 totalReinitAcquires;
512     UINT32 currentActiveExtendedModes;
513     UINT32 totalExtendedModesStarted;
514     UINT32 totalSuccessfulExtendedModes;
515     UINT32 totalFailedExtendedModes;
516     UINT32 totalImpersonationExtendedModes;
517     UINT32 totalImpersonationMainModes;
518 } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;
519 #endif
520 
521 typedef struct IKEEXT_KEYMODULE_STATISTICS0_ {
522     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v4Statistics;
523     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v6Statistics;
524     UINT32 errorFrequencyTable[97];
525     UINT32 mainModeNegotiationTime;
526     UINT32 quickModeNegotiationTime;
527     UINT32 extendedModeNegotiationTime;
528 } IKEEXT_KEYMODULE_STATISTICS0;
529 
530 #if (NTDDI_VERSION >= NTDDI_WIN7)
531 typedef struct IKEEXT_KEYMODULE_STATISTICS1_ {
532     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
533     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
534     UINT32 errorFrequencyTable[97];
535     UINT32 mainModeNegotiationTime;
536     UINT32 quickModeNegotiationTime;
537     UINT32 extendedModeNegotiationTime;
538 } IKEEXT_KEYMODULE_STATISTICS1;
539 #endif
540 
541 typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0_ {
542     UINT32 totalSocketReceiveFailures;
543     UINT32 totalSocketSendFailures;
544 } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;
545 
546 #if (NTDDI_VERSION >= NTDDI_WIN7)
547 typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1_ {
548     UINT32 totalSocketReceiveFailures;
549     UINT32 totalSocketSendFailures;
550 } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1;
551 #endif
552 
553 typedef struct IKEEXT_COMMON_STATISTICS0_ {
554     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
555     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
556     UINT32 totalPacketsReceived;
557     UINT32 totalInvalidPacketsReceived;
558     UINT32 currentQueuedWorkitems;
559 } IKEEXT_COMMON_STATISTICS0;
560 
561 #if (NTDDI_VERSION >= NTDDI_WIN7)
562 typedef struct IKEEXT_COMMON_STATISTICS1_ {
563     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
564     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
565     UINT32 totalPacketsReceived;
566     UINT32 totalInvalidPacketsReceived;
567     UINT32 currentQueuedWorkitems;
568 } IKEEXT_COMMON_STATISTICS1;
569 #endif
570 
571 typedef struct IKEEXT_STATISTICS0_ {
572     IKEEXT_KEYMODULE_STATISTICS0 ikeStatistics;
573     IKEEXT_KEYMODULE_STATISTICS0 authipStatistics;
574     IKEEXT_COMMON_STATISTICS0 commonStatistics;
575 } IKEEXT_STATISTICS0;
576 
577 #if (NTDDI_VERSION >= NTDDI_WIN7)
578 typedef struct IKEEXT_STATISTICS1_ {
579     IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
580     IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
581     IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
582     IKEEXT_COMMON_STATISTICS1 commonStatistics;
583 } IKEEXT_STATISTICS1;
584 #endif
585 
586 typedef struct IKEEXT_TRAFFIC0_ {
587     FWP_IP_VERSION ipVersion;
588     __C89_NAMELESS union {
589         UINT32 localV4Address;
590         UINT8 localV6Address[16];
591     } __C89_NAMELESSUNIONNAME1;
592     __C89_NAMELESS union {
593         UINT32 remoteV4Address;
594         UINT8 remoteV6Address[16];
595     } __C89_NAMELESSUNIONNAME2;
596     UINT64 authIpFilterId;
597 } IKEEXT_TRAFFIC0;
598 
599 typedef struct IKEEXT_COOKIE_PAIR0_ {
600     IKEEXT_COOKIE initiator;
601     IKEEXT_COOKIE responder;
602 } IKEEXT_COOKIE_PAIR0;
603 
604 typedef struct IKEEXT_CERTIFICATE_CREDENTIAL0_ {
605     FWP_BYTE_BLOB subjectName;
606     FWP_BYTE_BLOB certHash;
607     UINT32 flags;
608 } IKEEXT_CERTIFICATE_CREDENTIAL0;
609 
610 typedef struct IKEEXT_NAME_CREDENTIAL0_ {
611     wchar_t *principalName;
612 } IKEEXT_NAME_CREDENTIAL0;
613 typedef struct IKEEXT_CREDENTIAL0_ {
614     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
615     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
616     __C89_NAMELESS union {
617         IKEEXT_PRESHARED_KEY_AUTHENTICATION0 *presharedKey;
618         IKEEXT_CERTIFICATE_CREDENTIAL0 *certificate;
619         IKEEXT_NAME_CREDENTIAL0 *name;
620     } __C89_NAMELESSUNIONNAME;
621 } IKEEXT_CREDENTIAL0;
622 
623 typedef struct IKEEXT_CREDENTIAL_PAIR0_ {
624     IKEEXT_CREDENTIAL0 localCredentials;
625     IKEEXT_CREDENTIAL0 peerCredentials;
626 } IKEEXT_CREDENTIAL_PAIR0;
627 
628 typedef struct IKEEXT_CREDENTIALS0_ {
629     UINT32 numCredentials;
630     IKEEXT_CREDENTIAL_PAIR0 *credentials;
631 } IKEEXT_CREDENTIALS0;
632 
633 typedef struct IKEEXT_SA_DETAILS0_ {
634     UINT64 saId;
635     IKEEXT_KEY_MODULE_TYPE keyModuleType;
636     FWP_IP_VERSION ipVersion;
637     __C89_NAMELESS union {
638         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
639     } __C89_NAMELESSUNIONNAME;
640     IKEEXT_TRAFFIC0 ikeTraffic;
641     IKEEXT_PROPOSAL0 ikeProposal;
642     IKEEXT_COOKIE_PAIR0 cookiePair;
643     IKEEXT_CREDENTIALS0 ikeCredentials;
644     GUID ikePolicyKey;
645     UINT64 virtualIfTunnelId;
646 } IKEEXT_SA_DETAILS0;
647 
648 #if (NTDDI_VERSION >= NTDDI_WIN7)
649 typedef struct IKEEXT_CERTIFICATE_CREDENTIAL1_ {
650     FWP_BYTE_BLOB subjectName;
651     FWP_BYTE_BLOB certHash;
652     UINT32 flags;
653     FWP_BYTE_BLOB certificate;
654 } IKEEXT_CERTIFICATE_CREDENTIAL1;
655 
656 typedef struct IKEEXT_CREDENTIAL1_ {
657     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
658     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
659     __C89_NAMELESS union {
660         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
661         IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
662         IKEEXT_NAME_CREDENTIAL0 *name;
663     } __C89_NAMELESSUNIONNAME;
664 } IKEEXT_CREDENTIAL1;
665 
666 typedef struct IKEEXT_CREDENTIAL_PAIR1_ {
667     IKEEXT_CREDENTIAL1 localCredentials;
668     IKEEXT_CREDENTIAL1 peerCredentials;
669 } IKEEXT_CREDENTIAL_PAIR1;
670 
671 typedef struct IKEEXT_CREDENTIALS1_ {
672     UINT32 numCredentials;
673     IKEEXT_CREDENTIAL_PAIR1 *credentials;
674 } IKEEXT_CREDENTIALS1;
675 
676 typedef struct IKEEXT_SA_DETAILS1_ {
677     UINT64 saId;
678     IKEEXT_KEY_MODULE_TYPE keyModuleType;
679     FWP_IP_VERSION ipVersion;
680     __C89_NAMELESS union {
681         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
682     } __C89_NAMELESSUNIONNAME;
683     IKEEXT_TRAFFIC0 ikeTraffic;
684     IKEEXT_PROPOSAL0 ikeProposal;
685     IKEEXT_COOKIE_PAIR0 cookiePair;
686     IKEEXT_CREDENTIALS1 ikeCredentials;
687     GUID ikePolicyKey;
688     UINT64 virtualIfTunnelId;
689     FWP_BYTE_BLOB correlationKey;
690 } IKEEXT_SA_DETAILS1;
691 #endif
692 
693 #if (NTDDI_VERSION >= NTDDI_WIN8)
694 typedef struct IKEEXT_CREDENTIAL2_ {
695     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
696     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
697     __C89_NAMELESS union {
698         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
699         IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
700         IKEEXT_NAME_CREDENTIAL0 *name;
701     } __C89_NAMELESSUNIONNAME;
702 } IKEEXT_CREDENTIAL2;
703 
704 typedef struct IKEEXT_CREDENTIAL_PAIR2_ {
705     IKEEXT_CREDENTIAL2 localCredentials;
706     IKEEXT_CREDENTIAL2 peerCredentials;
707 } IKEEXT_CREDENTIAL_PAIR2;
708 
709 typedef struct IKEEXT_CREDENTIALS2_ {
710     UINT32 numCredentials;
711     IKEEXT_CREDENTIAL_PAIR2 *credentials;
712 } IKEEXT_CREDENTIALS2;
713 
714 typedef struct IKEEXT_SA_DETAILS2_ {
715     UINT64 saId;
716     IKEEXT_KEY_MODULE_TYPE keyModuleType;
717     FWP_IP_VERSION ipVersion;
718     __C89_NAMELESS union {
719         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
720     } __C89_NAMELESSUNIONNAME;
721     IKEEXT_TRAFFIC0 ikeTraffic;
722     IKEEXT_PROPOSAL0 ikeProposal;
723     IKEEXT_COOKIE_PAIR0 cookiePair;
724     IKEEXT_CREDENTIALS2 ikeCredentials;
725     GUID ikePolicyKey;
726     UINT64 virtualIfTunnelId;
727     FWP_BYTE_BLOB correlationKey;
728 } IKEEXT_SA_DETAILS2;
729 #endif
730 
731 typedef struct IKEEXT_SA_ENUM_TEMPLATE0_ {
732     FWP_CONDITION_VALUE0 localSubNet;
733     FWP_CONDITION_VALUE0 remoteSubNet;
734     FWP_BYTE_BLOB localMainModeCertHash;
735 } IKEEXT_SA_ENUM_TEMPLATE0;
736 
737 #endif /* WINAPI_PARTITION_DESKTOP.  */
738 /* Begin additional prototypes for all interfaces */
739 
740 
741 /* End additional prototypes */
742 
743 #ifdef __cplusplus
744 }
745 #endif
746 
747 #endif /* __iketypes_h__ */
748