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