cpp_quote("/**") cpp_quote(" * This file is part of the mingw-w64 runtime package.") cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.") cpp_quote(" */") cpp_quote("") cpp_quote("#include ") cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") cpp_quote("") #include "winerror.h" import "fwptypes.idl"; cpp_quote("#define IKEEXT_ERROR_CODE_COUNT (ERROR_IPSEC_IKE_NEG_STATUS_END - ERROR_IPSEC_IKE_NEG_STATUS_BEGIN)") cpp_quote("") cpp_quote("/* Please keep in sync with winerror.h defines. */") #define IKEEXT_ERROR_CODE_COUNT 97 cpp_quote("") cpp_quote("#define IKEEXT_CERT_FLAG_ENABLE_ACCOUNT_MAPPING (0x1)") cpp_quote("#define IKEEXT_CERT_FLAG_DISABLE_REQUEST_PAYLOAD (0x2)") cpp_quote("#define IKEEXT_CERT_FLAG_USE_NAP_CERTIFICATE (0x4)") cpp_quote("#define IKEEXT_CERT_FLAG_INTERMEDIATE_CA (0x8)") cpp_quote("#define IKEEXT_CERT_FLAG_IGNORE_INIT_CERT_MAP_FAILURE (0x10)") cpp_quote("#define IKEEXT_CERT_FLAG_PREFER_NAP_CERTIFICATE_OUTBOUND (0x20)") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") cpp_quote("#define IKEEXT_CERT_FLAG_SELECT_NAP_CERTIFICATE (0x40)") cpp_quote("#define IKEEXT_CERT_FLAG_VERIFY_NAP_CERTIFICATE (0x80)") cpp_quote("#define IKEEXT_CERT_FLAG_FOLLOW_RENEWAL_CERTIFICATE (0x100)") cpp_quote("#endif") cpp_quote("") cpp_quote("#define IKEEXT_CERT_AUTH_FLAG_SSL_ONE_WAY (0x1)") cpp_quote("#define IKEEXT_CERT_AUTH_FLAG_DISABLE_CRL_CHECK (0x2)") cpp_quote("#define IKEEXT_CERT_AUTH_ENABLE_CRL_CHECK_STRONG (0x4)") cpp_quote("#define IKEEXT_CERT_AUTH_DISABLE_SSL_CERT_VALIDATION (0x8)") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") cpp_quote("#define IKEEXT_CERT_AUTH_ALLOW_HTTP_CERT_LOOKUP (0x10)") cpp_quote("#define IKEEXT_CERT_AUTH_URL_CONTAINS_BUNDLE (0x20)") cpp_quote("#endif") cpp_quote("") cpp_quote("#define IKEEXT_KERB_AUTH_DISABLE_INITIATOR_TOKEN_GENERATION (0x1)") cpp_quote("#define IKEEXT_KERB_AUTH_DONT_ACCEPT_EXPLICIT_CREDENTIALS (0x2)") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") cpp_quote("#define IKEEXT_KERB_AUTH_FORCE_PROXY_ON_INITIATOR (0x4)") cpp_quote("#endif") cpp_quote("") cpp_quote("#define IKEEXT_RESERVED_AUTH_DISABLE_INITIATOR_TOKEN_GENERATION (0x1)") cpp_quote("") cpp_quote("#define IKEEXT_NTLM_V2_AUTH_DONT_ACCEPT_EXPLICIT_CREDENTIALS (0x1)") cpp_quote("") cpp_quote("#define IKEEXT_POLICY_FLAG_DISABLE_DIAGNOSTICS (0x00000001)") cpp_quote("#define IKEEXT_POLICY_FLAG_NO_MACHINE_LUID_VERIFY (0x00000002)") cpp_quote("#define IKEEXT_POLICY_FLAG_NO_IMPERSONATION_LUID_VERIFY (0x00000004)") cpp_quote("#define IKEEXT_POLICY_FLAG_ENABLE_OPTIONAL_DH (0x00000008)") cpp_quote("") cpp_quote("#define IKEEXT_CERT_CREDENTIAL_FLAG_NAP_CERT (0x1)") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") cpp_quote("#define IKEEXT_PSK_FLAG_LOCAL_AUTH_ONLY (0x1)") cpp_quote("#define IKEEXT_PSK_FLAG_REMOTE_AUTH_ONLY (0x2)") cpp_quote("") cpp_quote("#define IKEEXT_EAP_FLAG_LOCAL_AUTH_ONLY (0x1)") cpp_quote("#define IKEEXT_EAP_FLAG_REMOTE_AUTH_ONLY (0x2)") cpp_quote("#endif") cpp_quote("") cpp_quote("#ifndef __IPSEC_V4_UDP_ENCAPSULATION0_FWD_DECLARED") cpp_quote("#define __IPSEC_V4_UDP_ENCAPSULATION0_FWD_DECLARED") typedef struct IPSEC_V4_UDP_ENCAPSULATION0_ IPSEC_V4_UDP_ENCAPSULATION0; cpp_quote("#endif") cpp_quote("") typedef UINT64 IKEEXT_COOKIE; cpp_quote("") typedef [v1_enum] enum IKEEXT_EM_SA_STATE_ { IKEEXT_EM_SA_STATE_NONE, IKEEXT_EM_SA_STATE_SENT_ATTS, IKEEXT_EM_SA_STATE_SSPI_SENT, IKEEXT_EM_SA_STATE_AUTH_COMPLETE, IKEEXT_EM_SA_STATE_FINAL, IKEEXT_EM_SA_STATE_COMPLETE, IKEEXT_EM_SA_STATE_MAX } IKEEXT_EM_SA_STATE; cpp_quote("") typedef [v1_enum] enum IKEEXT_SA_ROLE_ { IKEEXT_SA_ROLE_INITIATOR, IKEEXT_SA_ROLE_RESPONDER, IKEEXT_SA_ROLE_MAX } IKEEXT_SA_ROLE; cpp_quote("") typedef [v1_enum] enum IKEEXT_AUTHENTICATION_METHOD_TYPE_ { IKEEXT_PRESHARED_KEY, IKEEXT_CERTIFICATE, IKEEXT_KERBEROS, IKEEXT_ANONYMOUS, IKEEXT_SSL, IKEEXT_NTLM_V2, IKEEXT_IPV6_CGA, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384, IKEEXT_EAP, IKEEXT_RESERVED, IKEEXT_AUTHENTICATION_METHOD_TYPE_MAX } IKEEXT_AUTHENTICATION_METHOD_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_KEY_MODULE_TYPE_ { IKEEXT_KEY_MODULE_IKE, IKEEXT_KEY_MODULE_AUTHIP, IKEEXT_KEY_MODULE_IKEV2, IKEEXT_KEY_MODULE_MAX } IKEEXT_KEY_MODULE_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_MM_SA_STATE_ { IKEEXT_MM_SA_STATE_NONE, IKEEXT_MM_SA_STATE_SA_SENT, IKEEXT_MM_SA_STATE_SSPI_SENT, IKEEXT_MM_SA_STATE_FINAL, IKEEXT_MM_SA_STATE_FINAL_SENT, IKEEXT_MM_SA_STATE_COMPLETE, IKEEXT_MM_SA_STATE_MAX } IKEEXT_MM_SA_STATE; cpp_quote("") typedef [v1_enum] enum IKEEXT_QM_SA_STATE_ { IKEEXT_QM_SA_STATE_NONE, IKEEXT_QM_SA_STATE_INITIAL, IKEEXT_QM_SA_STATE_FINAL, IKEEXT_QM_SA_STATE_COMPLETE, IKEEXT_QM_SA_STATE_MAX } IKEEXT_QM_SA_STATE; cpp_quote("") typedef [v1_enum] enum IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE_ { IKEEXT_IMPERSONATION_NONE, IKEEXT_IMPERSONATION_SOCKET_PRINCIPAL, IKEEXT_IMPERSONATION_MAX } IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_CERT_CONFIG_TYPE_ { IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST, IKEEXT_CERT_CONFIG_ENTERPRISE_STORE, IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE, IKEEXT_CERT_CONFIG_UNSPECIFIED, IKEEXT_CERT_CONFIG_TYPE_MAX } IKEEXT_CERT_CONFIG_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_CIPHER_TYPE_ { IKEEXT_CIPHER_DES, IKEEXT_CIPHER_3DES, IKEEXT_CIPHER_AES_128, IKEEXT_CIPHER_AES_192, IKEEXT_CIPHER_AES_256, IKEEXT_CIPHER_TYPE_MAX } IKEEXT_CIPHER_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_INTEGRITY_TYPE_ { IKEEXT_INTEGRITY_MD5, IKEEXT_INTEGRITY_SHA1, IKEEXT_INTEGRITY_SHA_256, IKEEXT_INTEGRITY_SHA_384, IKEEXT_INTEGRITY_TYPE_MAX } IKEEXT_INTEGRITY_TYPE; cpp_quote("") typedef [v1_enum] enum IKEEXT_DH_GROUP_ { IKEEXT_DH_GROUP_NONE, IKEEXT_DH_GROUP_1, IKEEXT_DH_GROUP_2, IKEEXT_DH_GROUP_14, IKEEXT_DH_GROUP_2048 = IKEEXT_DH_GROUP_14, IKEEXT_DH_ECP_256, IKEEXT_DH_ECP_384, IKEEXT_DH_GROUP_24, IKEEXT_DH_GROUP_MAX } IKEEXT_DH_GROUP; cpp_quote("") typedef struct IKEEXT_CERT_ROOT_CONFIG0_ { FWP_BYTE_BLOB certData; UINT32 flags; } IKEEXT_CERT_ROOT_CONFIG0; cpp_quote("") typedef struct IKEEXT_KERBEROS_AUTHENTICATION0__ { UINT32 flags; } IKEEXT_KERBEROS_AUTHENTICATION0; cpp_quote("") typedef struct IKEEXT_NTLM_V2_AUTHENTICATION0__ { UINT32 flags; } IKEEXT_NTLM_V2_AUTHENTICATION0; cpp_quote("") typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION0__ { FWP_BYTE_BLOB presharedKey; } IKEEXT_PRESHARED_KEY_AUTHENTICATION0; cpp_quote("") typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION1__ { FWP_BYTE_BLOB presharedKey; UINT32 flags; } IKEEXT_PRESHARED_KEY_AUTHENTICATION1; cpp_quote("") typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION0_ { IKEEXT_CERT_CONFIG_TYPE inboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(inboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 inboundRootArraySize; [size_is(inboundRootArraySize), unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig; }; IKEEXT_CERT_CONFIG_TYPE outboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(outboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 outboundRootArraySize; [size_is(outboundRootArraySize), unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig; }; UINT32 flags; } IKEEXT_CERTIFICATE_AUTHENTICATION0; cpp_quote("") cpp_quote("#if NTDDI_VERSION >= NTDDI_WIN7") typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION1_ { IKEEXT_CERT_CONFIG_TYPE inboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(inboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 inboundRootArraySize; [size_is(inboundRootArraySize), unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig; [case(IKEEXT_CERT_CONFIG_UNSPECIFIED)]; }; IKEEXT_CERT_CONFIG_TYPE outboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(outboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 outboundRootArraySize; [size_is(outboundRootArraySize), unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] [unique] IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig; [case(IKEEXT_CERT_CONFIG_UNSPECIFIED)]; }; UINT32 flags; FWP_BYTE_BLOB localCertLocationUrl; } IKEEXT_CERTIFICATE_AUTHENTICATION1; cpp_quote("#endif") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef enum IKEEXT_CERT_CRITERIA_NAME_TYPE_ { IKEEXT_CERT_CRITERIA_DNS, IKEEXT_CERT_CRITERIA_UPN, IKEEXT_CERT_CRITERIA_RFC822, IKEEXT_CERT_CRITERIA_CN, IKEEXT_CERT_CRITERIA_OU, IKEEXT_CERT_CRITERIA_O, IKEEXT_CERT_CRITERIA_DC, IKEEXT_CERT_CRITERIA_NAME_TYPE_MAX } IKEEXT_CERT_CRITERIA_NAME_TYPE; cpp_quote("") typedef struct IKEEXT_CERT_EKUS0_ { ULONG numEku; [string, size_is(numEku), ref] LPSTR *eku; } IKEEXT_CERT_EKUS0; cpp_quote("") typedef struct IKEEXT_CERT_NAME0_ { IKEEXT_CERT_CRITERIA_NAME_TYPE nameType; [string, ref] LPWSTR certName; } IKEEXT_CERT_NAME0; cpp_quote("") typedef struct IKEEXT_CERTIFICATE_CRITERIA0_ { FWP_BYTE_BLOB certData; FWP_BYTE_BLOB certHash; [unique] IKEEXT_CERT_EKUS0 *eku; [unique] IKEEXT_CERT_NAME0 *name; UINT32 flags; } IKEEXT_CERTIFICATE_CRITERIA0; cpp_quote("") typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION2_ { IKEEXT_CERT_CONFIG_TYPE inboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(inboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 inboundRootArraySize; [size_is(inboundRootArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *inboundRootCriteria; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] struct { UINT32 inboundEnterpriseStoreArraySize; [size_is(inboundEnterpriseStoreArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *inboundEnterpriseStoreCriteria; }; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] struct { UINT32 inboundRootStoreArraySize; [size_is(inboundRootStoreArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *inboundTrustedRootStoreCriteria; }; [case(IKEEXT_CERT_CONFIG_UNSPECIFIED)]; }; IKEEXT_CERT_CONFIG_TYPE outboundConfigType; [switch_type(IKEEXT_CERT_CONFIG_TYPE), switch_is(outboundConfigType)] union { [case(IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST)] struct { UINT32 outboundRootArraySize; [size_is(outboundRootArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *outboundRootCriteria; }; [case(IKEEXT_CERT_CONFIG_ENTERPRISE_STORE)] struct { UINT32 outboundEnterpriseStoreArraySize; [size_is(outboundEnterpriseStoreArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *outboundEnterpriseStoreCriteria; }; [case(IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE)] struct { UINT32 outboundRootStoreArraySize; [size_is(outboundRootStoreArraySize), unique] IKEEXT_CERTIFICATE_CRITERIA0 *outboundTrustedRootStoreCriteria; }; [case(IKEEXT_CERT_CONFIG_UNSPECIFIED)]; }; UINT32 flags; FWP_BYTE_BLOB localCertLocationUrl; } IKEEXT_CERTIFICATE_AUTHENTICATION2; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_IPV6_CGA_AUTHENTICATION0_ { [string, ref] wchar_t *keyContainerName; [string, unique] wchar_t *cspName; UINT32 cspType; FWP_BYTE_ARRAY16 cgaModifier; BYTE cgaCollisionCount; } IKEEXT_IPV6_CGA_AUTHENTICATION0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef struct IKEEXT_KERBEROS_AUTHENTICATION1__ { UINT32 flags; [string, unique] wchar_t *proxyServer; } IKEEXT_KERBEROS_AUTHENTICATION1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_RESERVED_AUTHENTICATION0__ { UINT32 flags; } IKEEXT_RESERVED_AUTHENTICATION0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_EAP_AUTHENTICATION0__ { UINT32 flags; } IKEEXT_EAP_AUTHENTICATION0; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_AUTHENTICATION_METHOD0_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] IKEEXT_PRESHARED_KEY_AUTHENTICATION0 presharedKeyAuthentication; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION0 certificateAuthentication; [case(IKEEXT_KERBEROS)] IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication; [case(IKEEXT_NTLM_V2)] IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication; [case(IKEEXT_ANONYMOUS)]; [case(IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION0 sslAuthentication; [case(IKEEXT_IPV6_CGA)] IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication; }; } IKEEXT_AUTHENTICATION_METHOD0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_AUTHENTICATION_METHOD1_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION1 certificateAuthentication; [case(IKEEXT_KERBEROS)] IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication; [case(IKEEXT_NTLM_V2)] IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication; [case(IKEEXT_ANONYMOUS)]; [case(IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION1 sslAuthentication; [case(IKEEXT_IPV6_CGA)] IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication; [case(IKEEXT_EAP)] IKEEXT_EAP_AUTHENTICATION0 eapAuthentication; }; } IKEEXT_AUTHENTICATION_METHOD1; cpp_quote("#endif") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef struct IKEEXT_AUTHENTICATION_METHOD2_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION2 certificateAuthentication; [case(IKEEXT_KERBEROS)] IKEEXT_KERBEROS_AUTHENTICATION1 kerberosAuthentication; [case(IKEEXT_RESERVED)] IKEEXT_RESERVED_AUTHENTICATION0 reservedAuthentication; [case(IKEEXT_NTLM_V2)] IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication; [case(IKEEXT_ANONYMOUS)]; [case(IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384)] IKEEXT_CERTIFICATE_AUTHENTICATION2 sslAuthentication; [case(IKEEXT_IPV6_CGA)] IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication; [case(IKEEXT_EAP)] IKEEXT_EAP_AUTHENTICATION0 eapAuthentication; }; } IKEEXT_AUTHENTICATION_METHOD2; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_CIPHER_ALGORITHM0_ { IKEEXT_CIPHER_TYPE algoIdentifier; UINT32 keyLen; UINT32 rounds; } IKEEXT_CIPHER_ALGORITHM0; cpp_quote("") typedef struct IKEEXT_INTEGRITY_ALGORITHM0_ { IKEEXT_INTEGRITY_TYPE algoIdentifier; } IKEEXT_INTEGRITY_ALGORITHM0; cpp_quote("") typedef struct IKEEXT_PROPOSAL0_ { IKEEXT_CIPHER_ALGORITHM0 cipherAlgorithm; IKEEXT_INTEGRITY_ALGORITHM0 integrityAlgorithm; UINT32 maxLifetimeSeconds; IKEEXT_DH_GROUP dhGroup; UINT32 quickModeLimit; } IKEEXT_PROPOSAL0; cpp_quote("") typedef struct IKEEXT_POLICY0_ { UINT32 softExpirationTime; UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; UINT32 numIkeProposals; [size_is(numIkeProposals), ref] IKEEXT_PROPOSAL0 *ikeProposals; UINT32 flags; UINT32 maxDynamicFilters; } IKEEXT_POLICY0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_POLICY1_ { UINT32 softExpirationTime; UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; UINT32 numIkeProposals; [size_is(numIkeProposals), ref] IKEEXT_PROPOSAL0 *ikeProposals; UINT32 flags; UINT32 maxDynamicFilters; UINT32 retransmitDurationSecs; } IKEEXT_POLICY1; cpp_quote("#endif") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef struct IKEEXT_POLICY2_ { UINT32 softExpirationTime; UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; UINT32 numIkeProposals; [size_is(numIkeProposals), ref] IKEEXT_PROPOSAL0 *ikeProposals; UINT32 flags; UINT32 maxDynamicFilters; UINT32 retransmitDurationSecs; } IKEEXT_POLICY2; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_EM_POLICY0_ { UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; } IKEEXT_EM_POLICY0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_EM_POLICY1_ { UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; } IKEEXT_EM_POLICY1; cpp_quote("#endif") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef struct IKEEXT_EM_POLICY2_ { UINT32 numAuthenticationMethods; [size_is(numAuthenticationMethods), ref] IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType; } IKEEXT_EM_POLICY2; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0_ { UINT32 currentActiveMainModes; UINT32 totalMainModesStarted; UINT32 totalSuccessfulMainModes; UINT32 totalFailedMainModes; UINT32 totalResponderMainModes; UINT32 currentNewResponderMainModes; UINT32 currentActiveQuickModes; UINT32 totalQuickModesStarted; UINT32 totalSuccessfulQuickModes; UINT32 totalFailedQuickModes; UINT32 totalAcquires; UINT32 totalReinitAcquires; UINT32 currentActiveExtendedModes; UINT32 totalExtendedModesStarted; UINT32 totalSuccessfulExtendedModes; UINT32 totalFailedExtendedModes; UINT32 totalImpersonationExtendedModes; UINT32 totalImpersonationMainModes; } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1_ { UINT32 currentActiveMainModes; UINT32 totalMainModesStarted; UINT32 totalSuccessfulMainModes; UINT32 totalFailedMainModes; UINT32 totalResponderMainModes; UINT32 currentNewResponderMainModes; UINT32 currentActiveQuickModes; UINT32 totalQuickModesStarted; UINT32 totalSuccessfulQuickModes; UINT32 totalFailedQuickModes; UINT32 totalAcquires; UINT32 totalReinitAcquires; UINT32 currentActiveExtendedModes; UINT32 totalExtendedModesStarted; UINT32 totalSuccessfulExtendedModes; UINT32 totalFailedExtendedModes; UINT32 totalImpersonationExtendedModes; UINT32 totalImpersonationMainModes; } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_KEYMODULE_STATISTICS0_ { IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v4Statistics; IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v6Statistics; UINT32 errorFrequencyTable[IKEEXT_ERROR_CODE_COUNT]; UINT32 mainModeNegotiationTime; UINT32 quickModeNegotiationTime; UINT32 extendedModeNegotiationTime; } IKEEXT_KEYMODULE_STATISTICS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_KEYMODULE_STATISTICS1_ { IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics; IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics; UINT32 errorFrequencyTable[IKEEXT_ERROR_CODE_COUNT]; UINT32 mainModeNegotiationTime; UINT32 quickModeNegotiationTime; UINT32 extendedModeNegotiationTime; } IKEEXT_KEYMODULE_STATISTICS1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0_ { UINT32 totalSocketReceiveFailures; UINT32 totalSocketSendFailures; } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1_ { UINT32 totalSocketReceiveFailures; UINT32 totalSocketSendFailures; } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_COMMON_STATISTICS0_ { IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics; IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics; UINT32 totalPacketsReceived; UINT32 totalInvalidPacketsReceived; UINT32 currentQueuedWorkitems; } IKEEXT_COMMON_STATISTICS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_COMMON_STATISTICS1_ { IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics; IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics; UINT32 totalPacketsReceived; UINT32 totalInvalidPacketsReceived; UINT32 currentQueuedWorkitems; } IKEEXT_COMMON_STATISTICS1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_STATISTICS0_ { IKEEXT_KEYMODULE_STATISTICS0 ikeStatistics; IKEEXT_KEYMODULE_STATISTICS0 authipStatistics; IKEEXT_COMMON_STATISTICS0 commonStatistics; } IKEEXT_STATISTICS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_STATISTICS1_ { IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics; IKEEXT_KEYMODULE_STATISTICS1 authipStatistics; IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics; IKEEXT_COMMON_STATISTICS1 commonStatistics; } IKEEXT_STATISTICS1; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_TRAFFIC0_ { FWP_IP_VERSION ipVersion; [switch_type(FWP_IP_VERSION), switch_is(ipVersion)] union { [case(FWP_IP_VERSION_V4)] UINT32 localV4Address; [case(FWP_IP_VERSION_V6)] UINT8 localV6Address[16]; }; [switch_type(FWP_IP_VERSION), switch_is(ipVersion)] union { [case(FWP_IP_VERSION_V4)] UINT32 remoteV4Address; [case(FWP_IP_VERSION_V6)] UINT8 remoteV6Address[16]; }; UINT64 authIpFilterId; } IKEEXT_TRAFFIC0; cpp_quote("") typedef struct IKEEXT_COOKIE_PAIR0_ { IKEEXT_COOKIE initiator; IKEEXT_COOKIE responder; } IKEEXT_COOKIE_PAIR0; cpp_quote("") typedef struct IKEEXT_CERTIFICATE_CREDENTIAL0_ { FWP_BYTE_BLOB subjectName; FWP_BYTE_BLOB certHash; UINT32 flags; } IKEEXT_CERTIFICATE_CREDENTIAL0; cpp_quote("") typedef struct IKEEXT_NAME_CREDENTIAL0_ { [string, ref] wchar_t *principalName; } IKEEXT_NAME_CREDENTIAL0; typedef struct IKEEXT_CREDENTIAL0_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] [unique] IKEEXT_PRESHARED_KEY_AUTHENTICATION0 *presharedKey; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384, IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384, IKEEXT_IPV6_CGA )] [unique] IKEEXT_CERTIFICATE_CREDENTIAL0 *certificate; [case(IKEEXT_KERBEROS, IKEEXT_EAP, IKEEXT_NTLM_V2)] [unique] IKEEXT_NAME_CREDENTIAL0 *name; [case(IKEEXT_ANONYMOUS)]; }; } IKEEXT_CREDENTIAL0; cpp_quote("") typedef struct IKEEXT_CREDENTIAL_PAIR0_ { IKEEXT_CREDENTIAL0 localCredentials; IKEEXT_CREDENTIAL0 peerCredentials; } IKEEXT_CREDENTIAL_PAIR0; cpp_quote("") typedef struct IKEEXT_CREDENTIALS0_ { UINT32 numCredentials; [size_is(numCredentials), ref] IKEEXT_CREDENTIAL_PAIR0 *credentials; } IKEEXT_CREDENTIALS0; cpp_quote("") typedef struct IKEEXT_SA_DETAILS0_ { UINT64 saId; IKEEXT_KEY_MODULE_TYPE keyModuleType; FWP_IP_VERSION ipVersion; [switch_type(FWP_IP_VERSION), switch_is(ipVersion)] union { [case(FWP_IP_VERSION_V4)] [unique] IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation; [case(FWP_IP_VERSION_V6)]; }; IKEEXT_TRAFFIC0 ikeTraffic; IKEEXT_PROPOSAL0 ikeProposal; IKEEXT_COOKIE_PAIR0 cookiePair; IKEEXT_CREDENTIALS0 ikeCredentials; GUID ikePolicyKey; UINT64 virtualIfTunnelId; } IKEEXT_SA_DETAILS0; cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") typedef struct IKEEXT_CERTIFICATE_CREDENTIAL1_ { FWP_BYTE_BLOB subjectName; FWP_BYTE_BLOB certHash; UINT32 flags; FWP_BYTE_BLOB certificate; } IKEEXT_CERTIFICATE_CREDENTIAL1; cpp_quote("") typedef struct IKEEXT_CREDENTIAL1_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] [unique] IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384, IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384, IKEEXT_IPV6_CGA )] [unique] IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate; [case(IKEEXT_KERBEROS, IKEEXT_EAP, IKEEXT_NTLM_V2)] [unique] IKEEXT_NAME_CREDENTIAL0 *name; [case(IKEEXT_ANONYMOUS)]; }; } IKEEXT_CREDENTIAL1; cpp_quote("") typedef struct IKEEXT_CREDENTIAL_PAIR1_ { IKEEXT_CREDENTIAL1 localCredentials; IKEEXT_CREDENTIAL1 peerCredentials; } IKEEXT_CREDENTIAL_PAIR1; cpp_quote("") typedef struct IKEEXT_CREDENTIALS1_ { UINT32 numCredentials; [size_is(numCredentials), ref] IKEEXT_CREDENTIAL_PAIR1 *credentials; } IKEEXT_CREDENTIALS1; cpp_quote("") typedef struct IKEEXT_SA_DETAILS1_ { UINT64 saId; IKEEXT_KEY_MODULE_TYPE keyModuleType; FWP_IP_VERSION ipVersion; [switch_type(FWP_IP_VERSION), switch_is(ipVersion)] union { [case(FWP_IP_VERSION_V4)] [unique] IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation; [case(FWP_IP_VERSION_V6)]; }; IKEEXT_TRAFFIC0 ikeTraffic; IKEEXT_PROPOSAL0 ikeProposal; IKEEXT_COOKIE_PAIR0 cookiePair; IKEEXT_CREDENTIALS1 ikeCredentials; GUID ikePolicyKey; UINT64 virtualIfTunnelId; FWP_BYTE_BLOB correlationKey; } IKEEXT_SA_DETAILS1; cpp_quote("#endif") cpp_quote("") cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") typedef struct IKEEXT_CREDENTIAL2_ { IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType; IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType; [switch_type(IKEEXT_AUTHENTICATION_METHOD_TYPE), switch_is(authenticationMethodType)] union { [case(IKEEXT_PRESHARED_KEY)] [unique] IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey; [case(IKEEXT_CERTIFICATE, IKEEXT_CERTIFICATE_ECDSA_P256, IKEEXT_CERTIFICATE_ECDSA_P384, IKEEXT_SSL, IKEEXT_SSL_ECDSA_P256, IKEEXT_SSL_ECDSA_P384, IKEEXT_IPV6_CGA )] [unique] IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate; [case(IKEEXT_KERBEROS, IKEEXT_EAP, IKEEXT_NTLM_V2, IKEEXT_RESERVED)] [unique] IKEEXT_NAME_CREDENTIAL0 *name; [case(IKEEXT_ANONYMOUS)]; }; } IKEEXT_CREDENTIAL2; cpp_quote("") typedef struct IKEEXT_CREDENTIAL_PAIR2_ { IKEEXT_CREDENTIAL2 localCredentials; IKEEXT_CREDENTIAL2 peerCredentials; } IKEEXT_CREDENTIAL_PAIR2; cpp_quote("") typedef struct IKEEXT_CREDENTIALS2_ { UINT32 numCredentials; [size_is(numCredentials), ref] IKEEXT_CREDENTIAL_PAIR2 *credentials; } IKEEXT_CREDENTIALS2; cpp_quote("") typedef struct IKEEXT_SA_DETAILS2_ { UINT64 saId; IKEEXT_KEY_MODULE_TYPE keyModuleType; FWP_IP_VERSION ipVersion; [switch_type(FWP_IP_VERSION), switch_is(ipVersion)] union { [case(FWP_IP_VERSION_V4)] [unique] IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation; [case(FWP_IP_VERSION_V6)]; }; IKEEXT_TRAFFIC0 ikeTraffic; IKEEXT_PROPOSAL0 ikeProposal; IKEEXT_COOKIE_PAIR0 cookiePair; IKEEXT_CREDENTIALS2 ikeCredentials; GUID ikePolicyKey; UINT64 virtualIfTunnelId; FWP_BYTE_BLOB correlationKey; } IKEEXT_SA_DETAILS2; cpp_quote("#endif") cpp_quote("") typedef struct IKEEXT_SA_ENUM_TEMPLATE0_ { FWP_CONDITION_VALUE0 localSubNet; FWP_CONDITION_VALUE0 remoteSubNet; FWP_BYTE_BLOB localMainModeCertHash; } IKEEXT_SA_ENUM_TEMPLATE0; cpp_quote("") cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP. */")