iketypes.idl 30 KB

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