Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.5.29 from /tmp/build-mingw64-toolchain-joshualang/src/mingw-w64-svn-r5861/mingw-w64-headers/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 #endif
    216 
    217 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION0_ {
    218     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
    219     __C89_NAMELESS union {
    220         __C89_NAMELESS struct {
    221             UINT32 inboundRootArraySize;
    222             IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
    223         } __C89_NAMELESSSTRUCTNAME;
    224         IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
    225         IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
    226     } __C89_NAMELESSUNIONNAME1;
    227     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
    228     __C89_NAMELESS union {
    229         __C89_NAMELESS struct {
    230             UINT32 outboundRootArraySize;
    231             IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
    232         } __C89_NAMELESSSTRUCTNAME;
    233         IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
    234         IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
    235     } __C89_NAMELESSUNIONNAME2;
    236     UINT32 flags;
    237 } IKEEXT_CERTIFICATE_AUTHENTICATION0;
    238 
    239 #if NTDDI_VERSION >= NTDDI_WIN7
    240 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION1_ {
    241     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
    242     __C89_NAMELESS union {
    243         __C89_NAMELESS struct {
    244             UINT32 inboundRootArraySize;
    245             IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
    246         } __C89_NAMELESSSTRUCTNAME;
    247         IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
    248         IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
    249     } __C89_NAMELESSUNIONNAME1;
    250     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
    251     __C89_NAMELESS union {
    252         __C89_NAMELESS struct {
    253             UINT32 outboundRootArraySize;
    254             IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
    255         } __C89_NAMELESSSTRUCTNAME;
    256         IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
    257         IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
    258     } __C89_NAMELESSUNIONNAME2;
    259     UINT32 flags;
    260     FWP_BYTE_BLOB localCertLocationUrl;
    261 } IKEEXT_CERTIFICATE_AUTHENTICATION1;
    262 #endif
    263 
    264 #if (NTDDI_VERSION >= NTDDI_WIN8)
    265 typedef enum IKEEXT_CERT_CRITERIA_NAME_TYPE_ {
    266     IKEEXT_CERT_CRITERIA_DNS = 0,
    267     IKEEXT_CERT_CRITERIA_UPN = 1,
    268     IKEEXT_CERT_CRITERIA_RFC822 = 2,
    269     IKEEXT_CERT_CRITERIA_CN = 3,
    270     IKEEXT_CERT_CRITERIA_OU = 4,
    271     IKEEXT_CERT_CRITERIA_O = 5,
    272     IKEEXT_CERT_CRITERIA_DC = 6,
    273     IKEEXT_CERT_CRITERIA_NAME_TYPE_MAX = 7
    274 } IKEEXT_CERT_CRITERIA_NAME_TYPE;
    275 
    276 typedef struct IKEEXT_CERT_EKUS0_ {
    277     ULONG numEku;
    278     LPSTR *eku;
    279 } IKEEXT_CERT_EKUS0;
    280 
    281 typedef struct IKEEXT_CERT_NAME0_ {
    282     IKEEXT_CERT_CRITERIA_NAME_TYPE nameType;
    283     LPWSTR certName;
    284 } IKEEXT_CERT_NAME0;
    285 
    286 typedef struct IKEEXT_CERTIFICATE_CRITERIA0_ {
    287     FWP_BYTE_BLOB certData;
    288     FWP_BYTE_BLOB certHash;
    289     IKEEXT_CERT_EKUS0 *eku;
    290     IKEEXT_CERT_NAME0 *name;
    291     UINT32 flags;
    292 } IKEEXT_CERTIFICATE_CRITERIA0;
    293 
    294 typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION2_ {
    295     IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
    296     __C89_NAMELESS union {
    297         __C89_NAMELESS struct {
    298             UINT32 inboundRootArraySize;
    299             IKEEXT_CERTIFICATE_CRITERIA0 *inboundRootCriteria;
    300         } __C89_NAMELESSSTRUCTNAME1;
    301         __C89_NAMELESS struct {
    302             UINT32 inboundEnterpriseStoreArraySize;
    303             IKEEXT_CERTIFICATE_CRITERIA0 *inboundEnterpriseStoreCriteria;
    304         } __C89_NAMELESSSTRUCTNAME2;
    305         __C89_NAMELESS struct {
    306             UINT32 inboundRootStoreArraySize;
    307             IKEEXT_CERTIFICATE_CRITERIA0 *inboundTrustedRootStoreCriteria;
    308         } __C89_NAMELESSSTRUCTNAME3;
    309     } __C89_NAMELESSUNIONNAME1;
    310     IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
    311     __C89_NAMELESS union {
    312         __C89_NAMELESS struct {
    313             UINT32 outboundRootArraySize;
    314             IKEEXT_CERTIFICATE_CRITERIA0 *outboundRootCriteria;
    315         } __C89_NAMELESSSTRUCTNAME1;
    316         __C89_NAMELESS struct {
    317             UINT32 outboundEnterpriseStoreArraySize;
    318             IKEEXT_CERTIFICATE_CRITERIA0 *outboundEnterpriseStoreCriteria;
    319         } __C89_NAMELESSSTRUCTNAME2;
    320         __C89_NAMELESS struct {
    321             UINT32 outboundRootStoreArraySize;
    322             IKEEXT_CERTIFICATE_CRITERIA0 *outboundTrustedRootStoreCriteria;
    323         } __C89_NAMELESSSTRUCTNAME3;
    324     } __C89_NAMELESSUNIONNAME2;
    325     UINT32 flags;
    326     FWP_BYTE_BLOB localCertLocationUrl;
    327 } IKEEXT_CERTIFICATE_AUTHENTICATION2;
    328 #endif
    329 
    330 typedef struct IKEEXT_IPV6_CGA_AUTHENTICATION0_ {
    331     wchar_t *keyContainerName;
    332     wchar_t *cspName;
    333     UINT32 cspType;
    334     FWP_BYTE_ARRAY16 cgaModifier;
    335     BYTE cgaCollisionCount;
    336 } IKEEXT_IPV6_CGA_AUTHENTICATION0;
    337 
    338 #if (NTDDI_VERSION >= NTDDI_WIN8)
    339 typedef struct IKEEXT_KERBEROS_AUTHENTICATION1__ {
    340     UINT32 flags;
    341     wchar_t *proxyServer;
    342 } IKEEXT_KERBEROS_AUTHENTICATION1;
    343 #endif
    344 
    345 typedef struct IKEEXT_RESERVED_AUTHENTICATION0__ {
    346     UINT32 flags;
    347 } IKEEXT_RESERVED_AUTHENTICATION0;
    348 
    349 #if (NTDDI_VERSION >= NTDDI_WIN7)
    350 typedef struct IKEEXT_EAP_AUTHENTICATION0__ {
    351     UINT32 flags;
    352 } IKEEXT_EAP_AUTHENTICATION0;
    353 #endif
    354 
    355 typedef struct IKEEXT_AUTHENTICATION_METHOD0_ {
    356     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    357     __C89_NAMELESS union {
    358         IKEEXT_PRESHARED_KEY_AUTHENTICATION0 presharedKeyAuthentication;
    359         IKEEXT_CERTIFICATE_AUTHENTICATION0 certificateAuthentication;
    360         IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
    361         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
    362         IKEEXT_CERTIFICATE_AUTHENTICATION0 sslAuthentication;
    363         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
    364     } __C89_NAMELESSUNIONNAME;
    365 } IKEEXT_AUTHENTICATION_METHOD0;
    366 
    367 #if (NTDDI_VERSION >= NTDDI_WIN7)
    368 typedef struct IKEEXT_AUTHENTICATION_METHOD1_ {
    369     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    370     __C89_NAMELESS union {
    371         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
    372         IKEEXT_CERTIFICATE_AUTHENTICATION1 certificateAuthentication;
    373         IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
    374         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
    375         IKEEXT_CERTIFICATE_AUTHENTICATION1 sslAuthentication;
    376         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
    377         IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
    378     } __C89_NAMELESSUNIONNAME;
    379 } IKEEXT_AUTHENTICATION_METHOD1;
    380 #endif
    381 
    382 #if (NTDDI_VERSION >= NTDDI_WIN8)
    383 typedef struct IKEEXT_AUTHENTICATION_METHOD2_ {
    384     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    385     __C89_NAMELESS union {
    386         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
    387         IKEEXT_CERTIFICATE_AUTHENTICATION2 certificateAuthentication;
    388         IKEEXT_KERBEROS_AUTHENTICATION1 kerberosAuthentication;
    389         IKEEXT_RESERVED_AUTHENTICATION0 reservedAuthentication;
    390         IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
    391         IKEEXT_CERTIFICATE_AUTHENTICATION2 sslAuthentication;
    392         IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
    393         IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
    394     } __C89_NAMELESSUNIONNAME;
    395 } IKEEXT_AUTHENTICATION_METHOD2;
    396 #endif
    397 
    398 typedef struct IKEEXT_CIPHER_ALGORITHM0_ {
    399     IKEEXT_CIPHER_TYPE algoIdentifier;
    400     UINT32 keyLen;
    401     UINT32 rounds;
    402 } IKEEXT_CIPHER_ALGORITHM0;
    403 
    404 typedef struct IKEEXT_INTEGRITY_ALGORITHM0_ {
    405     IKEEXT_INTEGRITY_TYPE algoIdentifier;
    406 } IKEEXT_INTEGRITY_ALGORITHM0;
    407 
    408 typedef struct IKEEXT_PROPOSAL0_ {
    409     IKEEXT_CIPHER_ALGORITHM0 cipherAlgorithm;
    410     IKEEXT_INTEGRITY_ALGORITHM0 integrityAlgorithm;
    411     UINT32 maxLifetimeSeconds;
    412     IKEEXT_DH_GROUP dhGroup;
    413     UINT32 quickModeLimit;
    414 } IKEEXT_PROPOSAL0;
    415 
    416 typedef struct IKEEXT_POLICY0_ {
    417     UINT32 softExpirationTime;
    418     UINT32 numAuthenticationMethods;
    419     IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
    420     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    421     UINT32 numIkeProposals;
    422     IKEEXT_PROPOSAL0 *ikeProposals;
    423     UINT32 flags;
    424     UINT32 maxDynamicFilters;
    425 } IKEEXT_POLICY0;
    426 
    427 #if (NTDDI_VERSION >= NTDDI_WIN7)
    428 typedef struct IKEEXT_POLICY1_ {
    429     UINT32 softExpirationTime;
    430     UINT32 numAuthenticationMethods;
    431     IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
    432     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    433     UINT32 numIkeProposals;
    434     IKEEXT_PROPOSAL0 *ikeProposals;
    435     UINT32 flags;
    436     UINT32 maxDynamicFilters;
    437     UINT32 retransmitDurationSecs;
    438 } IKEEXT_POLICY1;
    439 #endif
    440 
    441 #if (NTDDI_VERSION >= NTDDI_WIN8)
    442 typedef struct IKEEXT_POLICY2_ {
    443     UINT32 softExpirationTime;
    444     UINT32 numAuthenticationMethods;
    445     IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
    446     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    447     UINT32 numIkeProposals;
    448     IKEEXT_PROPOSAL0 *ikeProposals;
    449     UINT32 flags;
    450     UINT32 maxDynamicFilters;
    451     UINT32 retransmitDurationSecs;
    452 } IKEEXT_POLICY2;
    453 #endif
    454 
    455 typedef struct IKEEXT_EM_POLICY0_ {
    456     UINT32 numAuthenticationMethods;
    457     IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
    458     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    459 } IKEEXT_EM_POLICY0;
    460 
    461 #if (NTDDI_VERSION >= NTDDI_WIN7)
    462 typedef struct IKEEXT_EM_POLICY1_ {
    463     UINT32 numAuthenticationMethods;
    464     IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
    465     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    466 } IKEEXT_EM_POLICY1;
    467 #endif
    468 
    469 #if (NTDDI_VERSION >= NTDDI_WIN8)
    470 typedef struct IKEEXT_EM_POLICY2_ {
    471     UINT32 numAuthenticationMethods;
    472     IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
    473     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
    474 } IKEEXT_EM_POLICY2;
    475 #endif
    476 
    477 typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0_ {
    478     UINT32 currentActiveMainModes;
    479     UINT32 totalMainModesStarted;
    480     UINT32 totalSuccessfulMainModes;
    481     UINT32 totalFailedMainModes;
    482     UINT32 totalResponderMainModes;
    483     UINT32 currentNewResponderMainModes;
    484     UINT32 currentActiveQuickModes;
    485     UINT32 totalQuickModesStarted;
    486     UINT32 totalSuccessfulQuickModes;
    487     UINT32 totalFailedQuickModes;
    488     UINT32 totalAcquires;
    489     UINT32 totalReinitAcquires;
    490     UINT32 currentActiveExtendedModes;
    491     UINT32 totalExtendedModesStarted;
    492     UINT32 totalSuccessfulExtendedModes;
    493     UINT32 totalFailedExtendedModes;
    494     UINT32 totalImpersonationExtendedModes;
    495     UINT32 totalImpersonationMainModes;
    496 } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0;
    497 
    498 #if (NTDDI_VERSION >= NTDDI_WIN7)
    499 typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1_ {
    500     UINT32 currentActiveMainModes;
    501     UINT32 totalMainModesStarted;
    502     UINT32 totalSuccessfulMainModes;
    503     UINT32 totalFailedMainModes;
    504     UINT32 totalResponderMainModes;
    505     UINT32 currentNewResponderMainModes;
    506     UINT32 currentActiveQuickModes;
    507     UINT32 totalQuickModesStarted;
    508     UINT32 totalSuccessfulQuickModes;
    509     UINT32 totalFailedQuickModes;
    510     UINT32 totalAcquires;
    511     UINT32 totalReinitAcquires;
    512     UINT32 currentActiveExtendedModes;
    513     UINT32 totalExtendedModesStarted;
    514     UINT32 totalSuccessfulExtendedModes;
    515     UINT32 totalFailedExtendedModes;
    516     UINT32 totalImpersonationExtendedModes;
    517     UINT32 totalImpersonationMainModes;
    518 } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;
    519 #endif
    520 
    521 typedef struct IKEEXT_KEYMODULE_STATISTICS0_ {
    522     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v4Statistics;
    523     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v6Statistics;
    524     UINT32 errorFrequencyTable[97];
    525     UINT32 mainModeNegotiationTime;
    526     UINT32 quickModeNegotiationTime;
    527     UINT32 extendedModeNegotiationTime;
    528 } IKEEXT_KEYMODULE_STATISTICS0;
    529 
    530 #if (NTDDI_VERSION >= NTDDI_WIN7)
    531 typedef struct IKEEXT_KEYMODULE_STATISTICS1_ {
    532     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
    533     IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
    534     UINT32 errorFrequencyTable[97];
    535     UINT32 mainModeNegotiationTime;
    536     UINT32 quickModeNegotiationTime;
    537     UINT32 extendedModeNegotiationTime;
    538 } IKEEXT_KEYMODULE_STATISTICS1;
    539 #endif
    540 
    541 typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0_ {
    542     UINT32 totalSocketReceiveFailures;
    543     UINT32 totalSocketSendFailures;
    544 } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;
    545 
    546 #if (NTDDI_VERSION >= NTDDI_WIN7)
    547 typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1_ {
    548     UINT32 totalSocketReceiveFailures;
    549     UINT32 totalSocketSendFailures;
    550 } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1;
    551 #endif
    552 
    553 typedef struct IKEEXT_COMMON_STATISTICS0_ {
    554     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
    555     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
    556     UINT32 totalPacketsReceived;
    557     UINT32 totalInvalidPacketsReceived;
    558     UINT32 currentQueuedWorkitems;
    559 } IKEEXT_COMMON_STATISTICS0;
    560 
    561 #if (NTDDI_VERSION >= NTDDI_WIN7)
    562 typedef struct IKEEXT_COMMON_STATISTICS1_ {
    563     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
    564     IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
    565     UINT32 totalPacketsReceived;
    566     UINT32 totalInvalidPacketsReceived;
    567     UINT32 currentQueuedWorkitems;
    568 } IKEEXT_COMMON_STATISTICS1;
    569 #endif
    570 
    571 typedef struct IKEEXT_STATISTICS0_ {
    572     IKEEXT_KEYMODULE_STATISTICS0 ikeStatistics;
    573     IKEEXT_KEYMODULE_STATISTICS0 authipStatistics;
    574     IKEEXT_COMMON_STATISTICS0 commonStatistics;
    575 } IKEEXT_STATISTICS0;
    576 
    577 #if (NTDDI_VERSION >= NTDDI_WIN7)
    578 typedef struct IKEEXT_STATISTICS1_ {
    579     IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
    580     IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
    581     IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
    582     IKEEXT_COMMON_STATISTICS1 commonStatistics;
    583 } IKEEXT_STATISTICS1;
    584 #endif
    585 
    586 typedef struct IKEEXT_TRAFFIC0_ {
    587     FWP_IP_VERSION ipVersion;
    588     __C89_NAMELESS union {
    589         UINT32 localV4Address;
    590         UINT8 localV6Address[16];
    591     } __C89_NAMELESSUNIONNAME1;
    592     __C89_NAMELESS union {
    593         UINT32 remoteV4Address;
    594         UINT8 remoteV6Address[16];
    595     } __C89_NAMELESSUNIONNAME2;
    596     UINT64 authIpFilterId;
    597 } IKEEXT_TRAFFIC0;
    598 
    599 typedef struct IKEEXT_COOKIE_PAIR0_ {
    600     IKEEXT_COOKIE initiator;
    601     IKEEXT_COOKIE responder;
    602 } IKEEXT_COOKIE_PAIR0;
    603 
    604 typedef struct IKEEXT_CERTIFICATE_CREDENTIAL0_ {
    605     FWP_BYTE_BLOB subjectName;
    606     FWP_BYTE_BLOB certHash;
    607     UINT32 flags;
    608 } IKEEXT_CERTIFICATE_CREDENTIAL0;
    609 
    610 typedef struct IKEEXT_NAME_CREDENTIAL0_ {
    611     wchar_t *principalName;
    612 } IKEEXT_NAME_CREDENTIAL0;
    613 typedef struct IKEEXT_CREDENTIAL0_ {
    614     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    615     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
    616     __C89_NAMELESS union {
    617         IKEEXT_PRESHARED_KEY_AUTHENTICATION0 *presharedKey;
    618         IKEEXT_CERTIFICATE_CREDENTIAL0 *certificate;
    619         IKEEXT_NAME_CREDENTIAL0 *name;
    620     } __C89_NAMELESSUNIONNAME;
    621 } IKEEXT_CREDENTIAL0;
    622 
    623 typedef struct IKEEXT_CREDENTIAL_PAIR0_ {
    624     IKEEXT_CREDENTIAL0 localCredentials;
    625     IKEEXT_CREDENTIAL0 peerCredentials;
    626 } IKEEXT_CREDENTIAL_PAIR0;
    627 
    628 typedef struct IKEEXT_CREDENTIALS0_ {
    629     UINT32 numCredentials;
    630     IKEEXT_CREDENTIAL_PAIR0 *credentials;
    631 } IKEEXT_CREDENTIALS0;
    632 
    633 typedef struct IKEEXT_SA_DETAILS0_ {
    634     UINT64 saId;
    635     IKEEXT_KEY_MODULE_TYPE keyModuleType;
    636     FWP_IP_VERSION ipVersion;
    637     __C89_NAMELESS union {
    638         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
    639     } __C89_NAMELESSUNIONNAME;
    640     IKEEXT_TRAFFIC0 ikeTraffic;
    641     IKEEXT_PROPOSAL0 ikeProposal;
    642     IKEEXT_COOKIE_PAIR0 cookiePair;
    643     IKEEXT_CREDENTIALS0 ikeCredentials;
    644     GUID ikePolicyKey;
    645     UINT64 virtualIfTunnelId;
    646 } IKEEXT_SA_DETAILS0;
    647 
    648 #if (NTDDI_VERSION >= NTDDI_WIN7)
    649 typedef struct IKEEXT_CERTIFICATE_CREDENTIAL1_ {
    650     FWP_BYTE_BLOB subjectName;
    651     FWP_BYTE_BLOB certHash;
    652     UINT32 flags;
    653     FWP_BYTE_BLOB certificate;
    654 } IKEEXT_CERTIFICATE_CREDENTIAL1;
    655 
    656 typedef struct IKEEXT_CREDENTIAL1_ {
    657     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    658     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
    659     __C89_NAMELESS union {
    660         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
    661         IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
    662         IKEEXT_NAME_CREDENTIAL0 *name;
    663     } __C89_NAMELESSUNIONNAME;
    664 } IKEEXT_CREDENTIAL1;
    665 
    666 typedef struct IKEEXT_CREDENTIAL_PAIR1_ {
    667     IKEEXT_CREDENTIAL1 localCredentials;
    668     IKEEXT_CREDENTIAL1 peerCredentials;
    669 } IKEEXT_CREDENTIAL_PAIR1;
    670 
    671 typedef struct IKEEXT_CREDENTIALS1_ {
    672     UINT32 numCredentials;
    673     IKEEXT_CREDENTIAL_PAIR1 *credentials;
    674 } IKEEXT_CREDENTIALS1;
    675 
    676 typedef struct IKEEXT_SA_DETAILS1_ {
    677     UINT64 saId;
    678     IKEEXT_KEY_MODULE_TYPE keyModuleType;
    679     FWP_IP_VERSION ipVersion;
    680     __C89_NAMELESS union {
    681         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
    682     } __C89_NAMELESSUNIONNAME;
    683     IKEEXT_TRAFFIC0 ikeTraffic;
    684     IKEEXT_PROPOSAL0 ikeProposal;
    685     IKEEXT_COOKIE_PAIR0 cookiePair;
    686     IKEEXT_CREDENTIALS1 ikeCredentials;
    687     GUID ikePolicyKey;
    688     UINT64 virtualIfTunnelId;
    689     FWP_BYTE_BLOB correlationKey;
    690 } IKEEXT_SA_DETAILS1;
    691 #endif
    692 
    693 #if (NTDDI_VERSION >= NTDDI_WIN8)
    694 typedef struct IKEEXT_CREDENTIAL2_ {
    695     IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
    696     IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
    697     __C89_NAMELESS union {
    698         IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
    699         IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
    700         IKEEXT_NAME_CREDENTIAL0 *name;
    701     } __C89_NAMELESSUNIONNAME;
    702 } IKEEXT_CREDENTIAL2;
    703 
    704 typedef struct IKEEXT_CREDENTIAL_PAIR2_ {
    705     IKEEXT_CREDENTIAL2 localCredentials;
    706     IKEEXT_CREDENTIAL2 peerCredentials;
    707 } IKEEXT_CREDENTIAL_PAIR2;
    708 
    709 typedef struct IKEEXT_CREDENTIALS2_ {
    710     UINT32 numCredentials;
    711     IKEEXT_CREDENTIAL_PAIR2 *credentials;
    712 } IKEEXT_CREDENTIALS2;
    713 
    714 typedef struct IKEEXT_SA_DETAILS2_ {
    715     UINT64 saId;
    716     IKEEXT_KEY_MODULE_TYPE keyModuleType;
    717     FWP_IP_VERSION ipVersion;
    718     __C89_NAMELESS union {
    719         IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
    720     } __C89_NAMELESSUNIONNAME;
    721     IKEEXT_TRAFFIC0 ikeTraffic;
    722     IKEEXT_PROPOSAL0 ikeProposal;
    723     IKEEXT_COOKIE_PAIR0 cookiePair;
    724     IKEEXT_CREDENTIALS2 ikeCredentials;
    725     GUID ikePolicyKey;
    726     UINT64 virtualIfTunnelId;
    727     FWP_BYTE_BLOB correlationKey;
    728 } IKEEXT_SA_DETAILS2;
    729 #endif
    730 
    731 typedef struct IKEEXT_SA_ENUM_TEMPLATE0_ {
    732     FWP_CONDITION_VALUE0 localSubNet;
    733     FWP_CONDITION_VALUE0 remoteSubNet;
    734     FWP_BYTE_BLOB localMainModeCertHash;
    735 } IKEEXT_SA_ENUM_TEMPLATE0;
    736 
    737 #endif /* WINAPI_PARTITION_DESKTOP.  */
    738 /* Begin additional prototypes for all interfaces */
    739 
    740 
    741 /* End additional prototypes */
    742 
    743 #ifdef __cplusplus
    744 }
    745 #endif
    746 
    747 #endif /* __iketypes_h__ */
    748