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