7 Appendix B: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

The terms "earlier" and "later", when used with a product version, refer to either all preceding versions or all subsequent versions, respectively. The term "through" refers to the inclusive range of versions. Applicable Microsoft products are listed chronologically in this section.

The following tables show the relationships between Microsoft product versions or supplemental software and the roles they perform.

Windows Client Releases

Server Role

Client Role

Windows Vista operating system

Yes

Yes

Windows 7 operating system

Yes

Yes

Windows 8 operating system

Yes

Yes

Windows 8.1 operating system

Yes

Yes

Windows 10 operating system

Yes

Yes

Windows 11 operating system

Yes

Yes

Windows Server Releases

Server Role

Client Role

Windows Server 2008 operating system

Yes

Yes

Windows Server 2008 R2 operating system

Yes

Yes

Windows Server 2012 operating system

Yes

Yes

Windows Server 2012 R2 operating system

Yes

Yes

Windows Server 2016 operating system

Yes

Yes

Windows Server operating system

Yes 

Yes

Windows Server 2019 operating system

Yes

Yes

Windows Server 2022 operating system

Yes

Yes

Windows Server 2025 operating system

Yes

Yes

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2.2.6: For Windows Vista operating system with Service Pack 1 (SP1), Windows Server 2008, Windows 7, and Windows Server 2008 R2 operating system, unspecified addresses are allowed. Unspecified addresses are also allowed on Windows Vista if the Security Update for Windows Vista specified in [MSKB-935807] is applied.

<2> Section 2.2.14:  The following port keywords are supported in Windows 10 v1809 operating system and Windows Server v1809 operating system and later, in Windows Server 2019 and later, and in Windows 10 v1903 operating system and Windows Server v1903 operating system and later.

Enum Flag Name

Enum Value

FW_PORT_KEYWORD_MDNS

0x80

FW_PORT_KEYWORD_CORTANA_OUT

0x100

FW_PORT_KEYWORD_PROXIMAL_TCP_CDP

0x200

FW_PORT_KEYWORD_MAX_V2_20

0x80

FW_PORT_KEYWORD_MAX_V2_24

0x100

FW_PORT_KEYWORD_MAX_V2_25

0x200

<3> Section 2.2.14:  The enum value 0x400 for enum flag FW_PORT_KEYWORD_MAX is supported in Windows 10 v1809 and Windows Server v1809 and later, and in Windows Server 2019 and later.

<4> Section 2.2.23:  The Dynamic Keyword Addresses feature is supported in Windows 11, version 22H2 operating system and later and in Windows Server 2022 and later.

<5> Section 2.2.32: During server initialization, Windows uses default values to initialize the Phase 1 and Phase 2 primary AuthenticationSet objects if these objects are not already present in LocalStore and GroupPolicyRSoPStore. The same defaults are used for both LocalStore and GroupPolicyRSoPStore. These defaults are as follows:

  
 #define FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR           
                          L"Default Phase1 Primary AuthSet"
 #define FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR           
                          L"Default Phase2 Primary AuthSet"
 #define RTL_NUMBER_OF(A)   (sizeof(A)/sizeof((A)[0]))
 FW_AUTH_SUITE g_DefaultPrimaryAuthSuitePhase1[] = 
 {
     { FW_AUTH_METHOD_MACHINE_KERB, {0} }
 };
 FW_AUTH_SET g_DefaultPrimaryAuthSetPhase1 = 
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_1,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE3}",
     FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR,
     FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR,
     NULL,
     RTL_NUMBER_OF(g_DefaultPrimaryAuthSuitePhase1),
     g_DefaultPrimaryAuthSuitePhase1,
     FW_RULE_ORIGIN_HARDCODED,
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
 FW_AUTH_SET g_DefaultPrimaryAuthSetPhase2 = 
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_2,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE4}",
     FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR,
     FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR,
     NULL,
     0,
     NULL,
     FW_RULE_ORIGIN_HARDCODED,
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
  

During server initialization, Windows uses default values to initialize the Phase 1 and Phase 2 primary CryptoSet objects if these objects are not already present in LocalStore or GroupPolicyRSoPStore. The same defaults are used for both LocalStore and GroupPolicyRSoPStore. These defaults are as follows:

 #define FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR           
                        L"Default Phase1 Primary CryptoSet"
 #define FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR           
                        L"Default Phase2 Primary CryptoSet"
  
 FW_PHASE1_CRYPTO_SUITE g_DefaultPrimaryCryptoSuitesPhase1[] = 
 {
     {FW_CRYPTO_KEY_EXCHANGE_DH2, 
      FW_CRYPTO_ENCRYPTION_AES128, 
      FW_CRYPTO_HASH_SHA1},
     {FW_CRYPTO_KEY_EXCHANGE_DH2, 
      FW_CRYPTO_ENCRYPTION_3DES, 
      FW_CRYPTO_HASH_SHA1}
 };
  
 FW_CRYPTO_SET g_DefaultPrimaryCryptoSetPhase1 =
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_1,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE1}",
     FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR,
     FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR,
     NULL,
     {
         0, // flags
         0, // RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase1),
         0, // g_DefaultPrimaryCryptoSuitesPhase1,
         0, //480,
         0
     },
     FW_RULE_ORIGIN_HARDCODED, 
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
  
 FW_PHASE2_CRYPTO_SUITE g_DefaultPrimaryCryptoSuitesPhase2[] = 
 {
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_NONE, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_AES128, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_3DES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_AH, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_ENCRYPTION_NONE, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES}
 };
  
 FW_CRYPTO_SET g_DefaultPrimaryCryptoSetPhase2 =
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_2,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE2}",
     FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR,
     FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR,
     NULL,
     {
         {
             0, // FW_PHASE2_CRYPTO_PFS_DISABLE,
             0, // RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase2),
             0, // g_DefaultPrimaryCryptoSuitesPhase2
         }
     },
     FW_RULE_ORIGIN_HARDCODED, 
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
 void FwDefaultPrimaryCryptoSetsInit()
 {
     // Init Phase 1 Crypto.
     g_DefaultPrimaryCryptoSetPhase1.dwNumPhase1Suites = 
                         RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase1);
     g_DefaultPrimaryCryptoSetPhase1.pPhase1Suites = 
                         g_DefaultPrimaryCryptoSuitesPhase1;
     g_DefaultPrimaryCryptoSetPhase1.dwTimeOutMinutes = 480;
  
     //Init Phase 2 Crypto
     g_DefaultPrimaryCryptoSetPhase2.Pfs = 
                         FW_PHASE2_CRYPTO_PFS_DISABLE;
     g_DefaultPrimaryCryptoSetPhase2.dwNumPhase2Suites = 
                         RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase2);
     g_DefaultPrimaryCryptoSetPhase2.pPhase2Suites = 
                         g_DefaultPrimaryCryptoSuitesPhase2;
 }
  

<6> Section 2.2.37: Windows uses the three fields of the FW_OS_PLATFORM data type to identify Windows platform types. The fields in this data type correspond to the fields of the Windows OSVERSIONINFOEX data type (for more information, see [MSDN-OSVERSIONINFOEX]). The bPlatform field in this specification corresponds to the dwPlatformId field in MSDN. The bMajorVersion field in this specification corresponds to the dwMajorVersion field in MSDN. The bMinorVersion field in this specification corresponds to the dwMinorVersion field in MSDN. The Windows firewall and advanced security components extract the OSVERSIONINFOEX values and use them to enforce PlatformValidityList conditions in FW_RULE (section 2.2.37) and FW_CS_RULE (section 2.2.55) rules.

<7> Section 2.2.37: Rules with wSchemaVersion less than 0x000200 but greater than or equal to 0x000100 are not allowed to be written to the local store.

<8> Section 2.2.37: On Windows 7 and Windows Server 2008 R2 the wszRuleId size cannot be greater than or equal to 512 characters. On Windows Vista and Windows Server 2008 it cannot be greater than or equal to 1000 characters.

<9> Section 2.2.38: When Windows is operating in stealth mode, it blocks the following outbound packets:

  • ICMP Destination Unreachable

  • ICMP Parameter Problem for IPv6 only

  • TCP Reset (RST) packets sent because no application is listening on the destination port

<10> Section 2.2.38: In Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2, the FW_PROFILE_CONFIG_LOG_IGNORED_RULES option is ignored.

<11> Section 2.2.38: When an application is blocked from listening on a port and inbound notifications are not disabled, Windows displays a notification to the user only when there is not an FW_RULE object in the Group Policy RSoP, local, or dynamic policy stores with a wszLocalApplication field that matches the application.

<12> Section 2.2.42:  Supported policy versions are mapped to Windows product releases in the table that follows:

Table 1. Windows product releases vs Firewall policy versions

Windows Client Release

Windows Server Release

Policy Version

Windows Vista

0x0200

Windows Vista SP1

Windows Server 2008

0x0201

Windows 7

Windows Server 2008 R2

0x020A

Windows 8

Windows Server 2012

0x0214

Windows 8.1

Windows Server 2012 R2

0x0216

Windows 10

0x0218, 0x0219

Windows 10 v1607 operating system

Windows Server 2016

0x021A

Windows 10 v1703 operating system

0x021B

Windows 10 v1709 operating system

Windows Server operating system

Ox021B

Windows 10 v1803 operating system

Windows Server v1803 operating system

0x021C

Windows 10 v1809

Windows Server v1809

Windows Server 2019

0x021D

Windows 10 v1903

Windows Server v1903

0x021E

Windows Server 2022

0x021F

Windows 11 v22H2

0x0220

Windows Server 2025

0x0221?

<13> Section 2.2.43: Windows selects a default value for the profile configuration options and the global configurations options. These configurations default values are secure, and it is recommended to use these values as default values. Profile configuration options default values:

  
 FW_PROFILE_CONFIG_ENABLE_FW .- TRUE.
 FW_PROFILE_CONFIG_DISABLE_STEALTH_MODE .- FALSE.
 FW_PROFILE_CONFIG_SHIELDED .- FALSE.
 FW_PROFILE_CONFIG_DISABLE_UNICAST_RESPONSES_TO_MULTICAST_BROADCAST 
                                                            .- FALSE.
 FW_PROFILE_CONFIG_LOG_DROPPED_PACKETS .- FALSE.
 FW_PROFILE_CONFIG_LOG_SUCCESS_CONNECTIONS .- FALSE.
 FW_PROFILE_CONFIG_LOG_IGNORED_RULES .- TRUE.
 FW_PROFILE_CONFIG_LOG_MAX_FILE_SIZE .- 1024.
 FW_PROFILE_CONFIG_LOG_FILE_PATH .- L"".
 FW_PROFILE_CONFIG_DISABLE_INBOUND_NOTIFICATIONS .- FALSE.
 FW_PROFILE_CONFIG_AUTH_APPS_ALLOW_USER_PREF_MERGE .- TRUE.
 FW_PROFILE_CONFIG_GLOBAL_PORTS_ALLOW_USER_PREF_MERGE .- TRUE.
 FW_PROFILE_CONFIG_ALLOW_LOCAL_POLICY_MERGE .- TRUE.
 FW_PROFILE_CONFIG_ALLOW_LOCAL_IPSEC_POLICY_MERGE .- TRUE.
 FW_PROFILE_CONFIG_DISABLED_INTERFACES .- {0}.
 FW_PROFILE_CONFIG_DEFAULT_OUTBOUND_ACTION .- 0 (0 is allow).
 FW_PROFILE_CONFIG_DEFAULT_INBOUND_ACTION.- 1 (1 is block).
  

Global configuration options default values:

  
 FW_GLOBAL_CONFIG_POLICY_VERSION_SUPPORTED .- 0x0200 
 on Windows Vista.
 FW_GLOBAL_CONFIG_POLICY_VERSION_SUPPORTED .- 0x0201 
 on Windows Vista SP1 and Windows Server 2008.
 FW_GLOBAL_CONFIG_CURRENT_PROFILE .- FW_PROFILE_TYPE_PUBLIC.
 FW_GLOBAL_CONFIG_DISABLE_STATEFUL_FTP .- FALSE.
 FW_GLOBAL_CONFIG_DISABLE_STATEFUL_PPTP .- FALSE.
 FW_GLOBAL_CONFIG_SA_IDLE_TIME .- 300.
 FW_GLOBAL_CONFIG_PRESHARED_KEY_ENCODING 
                    .- FW_GLOBAL_CONFIG_PRESHARED_KEY_ENCODING_UTF_8.
 FW_GLOBAL_CONFIG_IPSEC_EXEMPT 
                    .- FW_GLOBAL_CONFIG_IPSEC_EXEMPT_NEIGHBOR_DISC.
 FW_GLOBAL_CONFIG_CRL_CHECK .- 0.
 FW_GLOBAL_CONFIG_IPSEC_THROUGH_NAT 
             .- FW_GLOBAL_CONFIG_IPSEC_THROUGH_NAT_SERVER_BEHIND_NAT.
 FW_GLOBAL_CONFIG_POLICY_VERSION .- 0x0200.
 FW_GLOBAL_CONFIG_BINARY_VERSION_SUPPORTED .- 0x201. This value is 
 present only in Windows Vista SP1 and Windows Server 2008.
  

<14> Section 2.2.55: Windows uses the three fields of the FW_OS_PLATFORM data type to identify Windows platform types. The fields in this data type correspond to the fields of the Windows OSVERSIONINFOEX data type (for more information, see [MSDN-OSVERSIONINFOEX]). The bPlatform field in this specification corresponds to the dwPlatformId field in MSDN. The bMajorVersion field in this specification corresponds to the dwMajorVersion field in MSDN. The bMinorVersion field in this specification corresponds to the dwMinorVersion field in MSDN. The Windows firewall and advanced security components extract the OSVERSIONINFOEX values and use them to enforce PlatformValidityList conditions in FW_RULE (section 2.2.37) and FW_CS_RULE (section 2.2.55) rules.

<15> Section 2.2.55: On Windows 7 and Windows Server 2008 R2 the wszRuleId size is less than 512 characters. On Windows Vista and Windows Server 2008 it is less than 1000 characters.

<16> Section 2.2.55: On Windows 7 and Windows Server 2008 R2 the wszPhase1AuthSet, wszPhase2AuthSet, and wszPhase2CryptoSet sizes are less than 255 characters. On Windows Vista and Windows Server 2008 they are less than 1000 characters.

<17> Section 2.2.64: On Windows Vista and Windows Server 2008, the only duplicate check performed is for the anonymous method.

<18> Section 2.2.64: On Windows Vista and Windows Server 2008, the only duplicate check performed is for the anonymous method.

<19> Section 2.2.65: On Windows Vista and Windows Server 2008, the only duplicate check performed is for the anonymous method.

<20> Section 2.2.65: On Windows Vista and Windows Server 2008, the only duplicate check performed is for the anonymous method.

<21> Section 2.2.83: Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 set TransportFilterId to the filter key of the Windows Filtering Platform filter used to enforce the security association (for more information, see [MSWFPSDK]).

<22> Section 2.2.85: Windows uses the three fields of the FW_OS_PLATFORM data type to identify Windows platform types. The fields in this data type correspond to the fields of the Windows OSVERSIONINFOEX data type (for more information, see [MSDN-OSVERSIONINFOEX]). The bPlatform field in this specification corresponds to the dwPlatformId field in MSDN. The bMajorVersion field in this specification corresponds to the dwMajorVersion field in MSDN. The bMinorVersion field in this specification corresponds to the dwMinorVersion field in MSDN. The Windows firewall and advanced security components extract the OSVERSIONINFOEX values and use them to enforce PlatformValidityList conditions in FW_RULE (section 2.2.37) and FW_CS_RULE (section 2.2.55) rules.

<23> Section 2.2.96: By default, Windows uses the IKEv1 and AuthIP keying modules.

<24> Section 2.2.97:  The following table shows the tuple keyword flags added to the ‘enum _tag_FW_TRUST_TUPLE_KEYWORD_NONE’ type definition in Windows 10 v1803 and  Windows Server v1803 and later:

Enum Tuple Keyword Flag Name

Enum Value

FW_TRUST_TUPLE_KEYWORD_WFD_CDP

0x0080

FW_TRUST_TUPLE_KEYWORD_MAX_V2_27

0x0080

<25> Section 2.2.97: In schema version 0x0214, the value for the FW_TRUST_TUPLE_KEYWORD_MAX flag is 0x0004.

<26> Section 2.2.97:  In Windows 10 v1803 and Windows Server v1803 and later, the enum value for the FW_TRUST_TUPLE_KEYWORD_MAX tuple keyword flag is updated from '0x0080' to '0x0100'.

<27> Section 2.2.103: In Windows, audit events that are generated by rules that specify the FW_RULE_FLAGS2_CALLOUT_AND_AUDIT flag are sent to the audit event log.

<28> Section 3.1.1:  The new boolean fields 'IsMDNS', 'IsCortanaOut', and 'IsProximalTCPCDP' are added to the PortInUse ADM element in Windows 10 v1809 and Windows Server v1809 and later, and in Windows Server 2019 and later.

<29> Section 3.1.3: During server initialization, Windows uses default values to initialize the Phase 1 and Phase 2 primary AuthenticationSet objects if these objects are not already present in LocalStore or GroupPolicyRSoPStore. The same defaults are used for both LocalStore and GroupPolicyRSoPStore. These defaults are as follows:

 #define FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR
                                  L"Default Phase1 Primary AuthSet"
 #define FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR
                                  L"Default Phase2 Primary AuthSet"
 #define RTL_NUMBER_OF(A)   (sizeof(A)/sizeof((A)[0]))
 FW_AUTH_SUITE g_DefaultPrimaryAuthSuitePhase1[] = 
 {
     { FW_AUTH_METHOD_MACHINE_KERB, {0} }
 };
 FW_AUTH_SET g_DefaultPrimaryAuthSetPhase1 = 
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_1,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE3}",
     FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR,
     FW_DEFAULT_P1_PRIMARY_AUTH_SET_NAME_STR,
     NULL,
     RTL_NUMBER_OF(g_DefaultPrimaryAuthSuitePhase1),
     g_DefaultPrimaryAuthSuitePhase1,
     FW_RULE_ORIGIN_HARDCODED,
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
 FW_AUTH_SET g_DefaultPrimaryAuthSetPhase2 = 
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_2,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE4}",
     FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR,
     FW_DEFAULT_P2_PRIMARY_AUTH_SET_NAME_STR,
     NULL,
     0,
     NULL,
     FW_RULE_ORIGIN_HARDCODED,
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  

<30> Section 3.1.3: During server initialization, Windows uses default values to initialize the Phase 1 and Phase 2 primary CryptoSet objects if these objects are not already present in LocalStore or GroupPolicyRSoPStore. The same defaults are used for both LocalStore and GroupPolicyRSoPStore. These defaults are as follows:

 #define FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR           
                        L"Default Phase1 Primary CryptoSet"
 #define FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR           
                        L"Default Phase2 Primary CryptoSet"
  
 FW_PHASE1_CRYPTO_SUITE g_DefaultPrimaryCryptoSuitesPhase1[] = 
 {
     {FW_CRYPTO_KEY_EXCHANGE_DH2, 
      FW_CRYPTO_ENCRYPTION_AES128, 
      FW_CRYPTO_HASH_SHA1},
     {FW_CRYPTO_KEY_EXCHANGE_DH2, 
      FW_CRYPTO_ENCRYPTION_3DES, 
      FW_CRYPTO_HASH_SHA1}
 };
  
 FW_CRYPTO_SET g_DefaultPrimaryCryptoSetPhase1 =
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_1,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE1}",
     FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR,
     FW_DEFAULT_P1_PRIMARY_CRYPTO_SET_NAME_STR,
     NULL,
     {
         0, //flags
         0, //RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase1),
         0, //g_DefaultPrimaryCryptoSuitesPhase1,
         0, // 480,
         0
     },
     FW_RULE_ORIGIN_HARDCODED, 
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
  
 FW_PHASE2_CRYPTO_SUITE g_DefaultPrimaryCryptoSuitesPhase2[] = 
 {
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_NONE, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_AES128, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_ESP, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_ENCRYPTION_3DES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES},
     {FW_CRYPTO_PROTOCOL_AH, 
      FW_CRYPTO_HASH_SHA1, 
      FW_CRYPTO_HASH_NONE, 
      FW_CRYPTO_ENCRYPTION_NONE, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_MINUTES, 
      FW_DEFAULT_CRYPTO_PHASE2_TIMEOUT_KBYTES}
 };
  
 FW_CRYPTO_SET g_DefaultPrimaryCryptoSetPhase2 =
 {
     NULL,
     0x0200,
     FW_IPSEC_PHASE_2,
     L"{E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE2}",
     FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR,
     FW_DEFAULT_P2_PRIMARY_CRYPTO_SET_NAME_STR,
     NULL,
     {
         {
             0, // FW_PHASE2_CRYPTO_PFS_DISABLE,
             0, // RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase2),
             0, // g_DefaultPrimaryCryptoSuitesPhase2
         }
     },
     FW_RULE_ORIGIN_HARDCODED, 
     NULL,
     FW_RULE_STATUS_OK,
     0
 };
  
 void FwDefaultPrimaryCryptoSetsInit()
 {
     // Init Phase 1 Crypto.
     g_DefaultPrimaryCryptoSetPhase1.dwNumPhase1Suites = 
                         RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase1);
     g_DefaultPrimaryCryptoSetPhase1.pPhase1Suites = 
                         g_DefaultPrimaryCryptoSuitesPhase1;
     g_DefaultPrimaryCryptoSetPhase1.dwTimeOutMinutes = 480;
  
     //Init Phase 2 Crypto
     g_DefaultPrimaryCryptoSetPhase2.Pfs = 
                         FW_PHASE2_CRYPTO_PFS_DISABLE;
     g_DefaultPrimaryCryptoSetPhase2.dwNumPhase2Suites = 
                         RTL_NUMBER_OF(g_DefaultPrimaryCryptoSuitesPhase2);
     g_DefaultPrimaryCryptoSetPhase2.pPhase2Suites = 
                         g_DefaultPrimaryCryptoSuitesPhase2;
 }
  

<31> Section 3.1.3: Windows selects a default value for the ProfileConfiguration option and the GlobalConfiguration option. These configuration default values are secure, and it is recommended to use these values as default values. ProfileConfiguration option default values:

  
 FW_PROFILE_CONFIG_ENABLE_FW .- TRUE.
 FW_PROFILE_CONFIG_DISABLE_STEALTH_MODE .- FALSE.
 FW_PROFILE_CONFIG_SHIELDED .- FALSE.
 FW_PROFILE_CONFIG_DISABLE_UNICAST_RESPONSES_TO_MULTICAST_BROADCAST 
                                                            .- FALSE.
 FW_PROFILE_CONFIG_LOG_DROPPED_PACKETS .- FALSE.
 FW_PROFILE_CONFIG_LOG_SUCCESS_CONNECTIONS .- FALSE.
 FW_PROFILE_CONFIG_LOG_IGNORED_RULES .- TRUE.
 FW_PROFILE_CONFIG_LOG_MAX_FILE_SIZE .- 1024.
 FW_PROFILE_CONFIG_LOG_FILE_PATH .- L"".
 FW_PROFILE_CONFIG_DISABLE_INBOUND_NOTIFICATIONS .- FALSE.
 FW_PROFILE_CONFIG_AUTH_APPS_ALLOW_USER_PREF_MERGE .- TRUE.
 FW_PROFILE_CONFIG_GLOBAL_PORTS_ALLOW_USER_PREF_MERGE .- TRUE.
 FW_PROFILE_CONFIG_ALLOW_LOCAL_POLICY_MERGE .- TRUE.
 FW_PROFILE_CONFIG_ALLOW_LOCAL_IPSEC_POLICY_MERGE .- TRUE.
 FW_PROFILE_CONFIG_DISABLED_INTERFACES .- {0}.
 FW_PROFILE_CONFIG_DEFAULT_OUTBOUND_ACTION .- 0 (0 is allow).
 FW_PROFILE_CONFIG_DEFAULT_INBOUND_ACTION.- 1 (1 is block).
  

GlobalConfiguration options default values:

  
 FW_GLOBAL_CONFIG_POLICY_VERSION_SUPPORTED .- 0x0200 
 on Windows Vista.
 FW_GLOBAL_CONFIG_POLICY_VERSION_SUPPORTED .- 0x0201 
 on Windows Vista SP1 and Windows Server 2008.
 FW_GLOBAL_CONFIG_CURRENT_PROFILE .- FW_PROFILE_TYPE_PUBLIC.
 FW_GLOBAL_CONFIG_DISABLE_STATEFUL_FTP .- FALSE.
 FW_GLOBAL_CONFIG_DISABLE_STATEFUL_PPTP .- FALSE.
 FW_GLOBAL_CONFIG_SA_IDLE_TIME .- 300.
 FW_GLOBAL_CONFIG_PRESHARED_KEY_ENCODING 
                    .- FW_GLOBAL_CONFIG_PRESHARED_KEY_ENCODING_UTF_8.
 FW_GLOBAL_CONFIG_IPSEC_EXEMPT 
                    .- FW_GLOBAL_CONFIG_IPSEC_EXEMPT_NEIGHBOR_DISC.
 FW_GLOBAL_CONFIG_CRL_CHECK .- 0.
 FW_GLOBAL_CONFIG_IPSEC_THROUGH_NAT 
             .- FW_GLOBAL_CONFIG_IPSEC_THROUGH_NAT_SERVER_BEHIND_NAT.
 FW_GLOBAL_CONFIG_POLICY_VERSION .- 0x0200.
 FW_GLOBAL_CONFIG_BINARY_VERSION_SUPPORTED .- 0x201. This value is 
 present only in Windows Vista SP1 and Windows Server 2008.
  

<32> Section 3.1.4: In Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2, security principals are identified by SIDs (see [MS-DTYP] section 2.4.2). The authorized clients are represented by the S-1-5-32-544 and the S-1-5-32-556 SIDs. If the client's identity token (see [MS-DTYP] section 2.5.2) does not contain at least one of these SIDs, the server fails the call.

<33> Section 3.1.4.6: Path validations were not performed in Windows Vista and Windows Server 2008 at edit time.

<34> Section 3.1.4.47: Path validations were not performed in Windows Vista and Windows Server 2008 at edit time.

<35> Section 3.1.6.5: Windows determines whether it is operating in common criteria mode by calling the BCryptGetFipsAlgorithmMode API. For more information, see [MSDN-BCryptGetFipsAlgorithmMode].

<36> Section 3.1.6.6: Windows enforces the effective firewall policy by converting the settings to Windows Filtering Platform filters. For more information, see [MSWFPSDK].