Home | History | Annotate | Download | only in include
      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