[edk2-devel] [PATCH] NetworkPkg: Add Wi-Fi Wpa3 support in WifiConnectManager

Maciej Rabeda maciej.rabeda at linux.intel.com
Fri Jul 1 14:45:57 UTC 2022


Reviewed-by: Maciej Rabeda <maciej.rabeda at linux.intel.com>

On 24 cze 2022 09:59, Heng Luo wrote:
> https://bugzilla.tianocore.org/show_bug.cgi?id=3961
>
> Add below Wpa3 support:
>      WPA3-Personal:
>        Ieee80211AkmSuiteSAE                = 8
>      WPA3-Enterprise:
>        Ieee80211AkmSuite8021XSuiteB        = 11
>        Ieee80211AkmSuite8021XSuiteB192     = 12
>      Wi-Fi CERTIFIED Enhanced Open:
>        Ieee80211AkmSuiteOWE                = 18
>
> Cc: Maciej Rabeda <maciej.rabeda at linux.intel.com>
> Cc: Fu Siyuan <siyuan.fu at intel.com>
> Cc: Wu Jiaxin <jiaxin.wu at intel.com>
> Signed-off-by: Heng Luo <heng.luo at intel.com>
> ---
>   .../WifiConnectionManagerDxe.vfr              |  8 +-
>   .../WifiConnectionMgrConfigNVDataStruct.h     |  8 +-
>   .../WifiConnectionMgrDxe.h                    | 18 ++++-
>   .../WifiConnectionMgrHiiConfigAccess.c        | 37 ++++++---
>   .../WifiConnectionMgrImpl.c                   |  4 +-
>   .../WifiConnectionMgrMisc.c                   | 77 ++++++++++++++++---
>   6 files changed, 119 insertions(+), 33 deletions(-)
>
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionManagerDxe.vfr b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionManagerDxe.vfr
> index b0ef187535..704f2b6a54 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionManagerDxe.vfr
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionManagerDxe.vfr
> @@ -1,7 +1,7 @@
>   /** @file
>     Vfr files used in WiFi Connection Manager.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -121,7 +121,8 @@ formset
>           text   = STRING_TOKEN(STR_SECURITY_TYPE);          // TextTwo
>   
>   
> -    suppressif NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA2_PERSONAL;
> +    suppressif NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA2_PERSONAL
> +      AND NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA3_PERSONAL;
>         password  varid    = WIFI_MANAGER_IFR_NVDATA.Password,
>                   prompt   = STRING_TOKEN(STR_PASSWORD),
>                   help     = STRING_TOKEN(STR_PASSWORD_HELP),
> @@ -132,7 +133,8 @@ formset
>         endpassword;
>       endif;
>   
> -    suppressif NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE;
> +    suppressif NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE
> +      AND NOT ideqval WIFI_MANAGER_IFR_NVDATA.SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE;
>   
>         oneof varid       = WIFI_MANAGER_IFR_NVDATA.EapAuthMethod,
>               questionid  = KEY_EAP_AUTH_METHOD_CONNECT_NETWORK,
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h
> index 69878bc457..b5518a74d8 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h
> @@ -1,7 +1,7 @@
>   /** @file
>     Define IFR NVData structures used by the WiFi Connection Manager.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -119,8 +119,10 @@
>   #define SECURITY_TYPE_WPA_PERSONAL     3
>   #define SECURITY_TYPE_WPA2_PERSONAL    4
>   #define SECURITY_TYPE_WEP              5
> -#define SECURITY_TYPE_UNKNOWN          6
> -#define SECURITY_TYPE_MAX              7
> +#define SECURITY_TYPE_WPA3_PERSONAL    6
> +#define SECURITY_TYPE_WPA3_ENTERPRISE  7
> +#define SECURITY_TYPE_UNKNOWN          8
> +#define SECURITY_TYPE_MAX              9
>   
>   #define EAP_AUTH_METHOD_TTLS  0
>   #define EAP_AUTH_METHOD_PEAP  1
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h
> index c3c70b2752..7b2e41e155 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h
> @@ -1,7 +1,7 @@
>   /** @file
>     The miscellaneous structure definitions for WiFi connection driver.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -82,6 +82,8 @@ typedef enum {
>     Ieee80211PairwiseCipherSuiteCCMP                = 4,
>     Ieee80211PairwiseCipherSuiteWEP104              = 5,
>     Ieee80211PairwiseCipherSuiteBIP                 = 6,
> +  Ieee80211PairwiseCipherSuiteGCMP                = 8,
> +  Ieee80211PairwiseCipherSuiteGCMP256             = 9,
>     // ...
>   } IEEE_80211_PAIRWISE_CIPHER_SUITE;
>   
> @@ -91,19 +93,29 @@ typedef enum {
>   #define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP       (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24))
>   #define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104     (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24))
>   #define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP        (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24))
> +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP       (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteGCMP << 24))
> +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP256    (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteGCMP256 << 24))
>   
>   typedef enum {
>     Ieee80211AkmSuite8021XOrPMKSA       = 1,
>     Ieee80211AkmSuitePSK                = 2,
>     Ieee80211AkmSuite8021XOrPMKSASHA256 = 5,
> -  Ieee80211AkmSuitePSKSHA256          = 6
> -                                        // ...
> +  Ieee80211AkmSuitePSKSHA256          = 6,
> +  Ieee80211AkmSuiteSAE                = 8,
> +  Ieee80211AkmSuite8021XSuiteB        = 11,
> +  Ieee80211AkmSuite8021XSuiteB192     = 12,
> +  Ieee80211AkmSuiteOWE                = 18,
> +  // ...
>   } IEEE_80211_AKM_SUITE;
>   
>   #define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA         (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSA << 24))
>   #define IEEE_80211_AKM_SUITE_PSK                    (OUI_IEEE_80211I | (Ieee80211AkmSuitePSK << 24))
>   #define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256  (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSASHA256 << 24))
>   #define IEEE_80211_AKM_SUITE_PSK_SHA256             (OUI_IEEE_80211I | (Ieee80211AkmSuitePSKSHA256 << 24))
> +#define IEEE_80211_AKM_SUITE_SAE                    (OUI_IEEE_80211I | (Ieee80211AkmSuiteSAE << 24))
> +#define IEEE_80211_AKM_SUITE_8021X_SUITE_B          (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XSuiteB << 24))
> +#define IEEE_80211_AKM_SUITE_8021X_SUITE_B192       (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XSuiteB192 << 24))
> +#define IEEE_80211_AKM_SUITE_OWE                    (OUI_IEEE_80211I | (Ieee80211AkmSuiteOWE << 24))
>   
>   //
>   // Protocol instances
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c
> index 7cb2bfc281..431fcbb33a 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c
> @@ -1,7 +1,7 @@
>   /** @file
>     The Hii functions for WiFi Connection Manager.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -50,6 +50,8 @@ CHAR16  *mSecurityType[] = {
>     L"WPA-Personal   ",
>     L"WPA2-Personal  ",
>     L"WEP            ",
> +  L"WPA3-Personal  ",
> +  L"WPA3-Enterprise",
>     L"UnKnown        "
>   };
>   
> @@ -269,6 +271,7 @@ WifiMgrGetStrAKMList (
>     UINT8   Index;
>     UINT16  AKMSuiteCount;
>     CHAR16  *AKMListDisplay;
> +  UINTN   Length;
>   
>     AKMListDisplay = NULL;
>     if ((Profile == NULL) || (Profile->Network.AKMSuite == NULL)) {
> @@ -278,23 +281,24 @@ WifiMgrGetStrAKMList (
>     AKMSuiteCount = Profile->Network.AKMSuite->AKMSuiteCount;
>     if (AKMSuiteCount != 0) {
>       //
> -    // Current AKM Suite is between 1-9
> +    // Current AKM Suite is between 1-18
>       //
> -    AKMListDisplay = (CHAR16 *)AllocateZeroPool (sizeof (CHAR16) * (AKMSuiteCount * 2 + 1));
> +    AKMListDisplay = (CHAR16 *)AllocateZeroPool (sizeof (CHAR16) * (AKMSuiteCount * 3 + 1));
> +    Length         = 0;
>       if (AKMListDisplay != NULL) {
>         for (Index = 0; Index < AKMSuiteCount; Index++) {
>           //
> -        // The size of buffer should be 3 CHAR16 for Null-terminated Unicode string.
> -        // The first char is the AKM Suite number, the second char is ' ', the third char is '\0'.
> +        // The size of buffer should be 4 CHAR16 for Null-terminated Unicode string.
>           //
>           UnicodeSPrint (
> -          AKMListDisplay + (Index * 2),
> -          sizeof (CHAR16) * 3,
> +          AKMListDisplay + Length,
> +          sizeof (CHAR16) * 4,
>             L"%d ",
>             Profile->Network.AKMSuite->AKMSuiteList[Index].SuiteType
>             );
> +        Length = StrLen (AKMListDisplay + Length) + Length;
>           if (Index == AKMSuiteCount - 1) {
> -          *(AKMListDisplay + (Index * 2 + 1)) = L'\0';
> +          *(AKMListDisplay + (Length - 1)) = L'\0';
>           }
>         }
>       }
> @@ -1461,7 +1465,9 @@ WifiMgrDxeHiiConfigAccessCallback (
>             return EFI_OUT_OF_RESOURCES;
>           }
>   
> -        if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) {
> +        if ((IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) ||
> +            (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
> +        {
>             IfrNvData->EapAuthMethod       = Profile->EapAuthMethod;
>             IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod;
>             StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity);
> @@ -1529,7 +1535,9 @@ WifiMgrDxeHiiConfigAccessCallback (
>           //
>           // Restore User Config Data for Page recovery
>           //
> -        if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) {
> +        if ((IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) ||
> +            (IfrNvData->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
> +        {
>             Profile->EapAuthMethod       = IfrNvData->EapAuthMethod;
>             Profile->EapSecondAuthMethod = IfrNvData->EapSecondAuthMethod;
>             StrCpyS (Profile->EapIdentity, EAP_IDENTITY_SIZE, IfrNvData->EapIdentity);
> @@ -1598,12 +1606,17 @@ WifiMgrDxeHiiConfigAccessCallback (
>             // When this network is not currently connected, pend it to connect.
>             //
>             if (Profile->AKMSuiteSupported && Profile->CipherSuiteSupported) {
> -            if ((Profile->SecurityType == SECURITY_TYPE_NONE) || (Profile->SecurityType == SECURITY_TYPE_WPA2_PERSONAL)) {
> +            if ((Profile->SecurityType == SECURITY_TYPE_NONE) ||
> +                (Profile->SecurityType == SECURITY_TYPE_WPA2_PERSONAL) ||
> +                (Profile->SecurityType == SECURITY_TYPE_WPA3_PERSONAL))
> +            {
>                 //
>                 // For Open network, connect directly.
>                 //
>                 ProfileToConnect = Profile;
> -            } else if (Profile->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) {
> +            } else if ((Profile->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) ||
> +                       (Profile->SecurityType == SECURITY_TYPE_WPA3_ENTERPRISE))
> +            {
>                 //
>                 // For WPA/WPA2-Enterprise network, conduct eap configuration first.
>                 // Only EAP-TLS, TTLS and PEAP is supported now!
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c
> index 7630c0695c..59bac48c42 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c
> @@ -1,7 +1,7 @@
>   /** @file
>     The Mac Connection2 Protocol adapter functions for WiFi Connection Manager.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -848,6 +848,7 @@ WifiMgrPrepareConnection (
>     if (AKMSuiteSupported && CipherSuiteSupported) {
>       switch (SecurityType) {
>         case SECURITY_TYPE_WPA2_PERSONAL:
> +      case SECURITY_TYPE_WPA3_PERSONAL:
>   
>           Status = WifiMgrConfigPassword (Nic, Profile);
>           if (EFI_ERROR (Status)) {
> @@ -863,6 +864,7 @@ WifiMgrPrepareConnection (
>           break;
>   
>         case SECURITY_TYPE_WPA2_ENTERPRISE:
> +      case SECURITY_TYPE_WPA3_ENTERPRISE:
>   
>           Status = WifiMgrConfigEap (Nic, Profile);
>           if (EFI_ERROR (Status)) {
> diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c
> index 4e7c241718..4ad5643c24 100644
> --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c
> +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c
> @@ -1,7 +1,7 @@
>   /** @file
>     The Miscellaneous Routines for WiFi Connection Manager.
>   
> -  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
>   
>     SPDX-License-Identifier: BSD-2-Clause-Patent
>   
> @@ -9,6 +9,24 @@
>   
>   #include "WifiConnectionMgrDxe.h"
>   
> +//
> +//  STA AKM preference order
> +//  REF: https://www.wi-fi.org/file/wpa3-specification
> +//
> +STATIC UINT32  mAKMSuitePreference[] = {
> +  IEEE_80211_AKM_SUITE_8021X_SUITE_B192,            // AKM Suite 12
> +  IEEE_80211_AKM_SUITE_8021X_SUITE_B,               // AKM Suite 11
> +  IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256,       // AKM Suite 5
> +  IEEE_80211_AKM_SUITE_8021X_OR_PMKSA,              // AKM Suite 1
> +
> +  IEEE_80211_AKM_SUITE_SAE,                         // AKM Suite 8
> +  IEEE_80211_AKM_SUITE_PSK_SHA256,                  // AKM Suite 6
> +  IEEE_80211_AKM_SUITE_PSK,                         // AKM Suite 2
> +
> +  IEEE_80211_AKM_SUITE_OWE                          // AKM Suite 18
> +};
> +#define AKM_SUITE_PREFERENCE_COUNT  (sizeof (mAKMSuitePreference)  / sizeof (UINT32))
> +
>   /**
>     Empty function for event process function.
>   
> @@ -340,7 +358,7 @@ WifiMgrCheckRSN (
>     EFI_80211_AKM_SUITE_SELECTOR     *SupportedAKMSuites;
>     EFI_80211_CIPHER_SUITE_SELECTOR  *SupportedSwCipherSuites;
>     EFI_80211_CIPHER_SUITE_SELECTOR  *SupportedHwCipherSuites;
> -  EFI_80211_SUITE_SELECTOR         *AKMSuite;
> +  UINT32                           *AKMSuite;
>     EFI_80211_SUITE_SELECTOR         *CipherSuite;
>     UINT16                           AKMIndex;
>     UINT16                           CipherIndex;
> @@ -371,18 +389,29 @@ WifiMgrCheckRSN (
>       return EFI_SUCCESS;
>     }
>   
> -  for (AKMIndex = 0; AKMIndex < AKMList->AKMSuiteCount; AKMIndex++) {
> -    AKMSuite = AKMList->AKMSuiteList + AKMIndex;
> -    if (WifiMgrSupportAKMSuite (
> -          SupportedAKMSuites->AKMSuiteCount,
> -          (UINT32 *)SupportedAKMSuites->AKMSuiteList,
> -          (UINT32 *)AKMSuite
> -          ))
> +  for (AKMIndex = 0; AKMIndex < AKM_SUITE_PREFERENCE_COUNT; AKMIndex++) {
> +    AKMSuite = mAKMSuitePreference + AKMIndex;
> +    if (WifiMgrSupportAKMSuite (AKMList->AKMSuiteCount, (UINT32 *)AKMList->AKMSuiteList, AKMSuite) &&
> +        WifiMgrSupportAKMSuite (SupportedAKMSuites->AKMSuiteCount, (UINT32 *)SupportedAKMSuites->AKMSuiteList, AKMSuite))
>       {
>         if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) {
>           *AKMSuiteSupported = TRUE;
>         }
>   
> +      //
> +      // OWE transition mode allow CipherSuiteCount is 0
> +      //
> +      if (CipherList->CipherSuiteCount == 0) {
> +        *SecurityType = WifiMgrGetSecurityType ((UINT32 *)AKMSuite, NULL);
> +        if (*SecurityType != SECURITY_TYPE_UNKNOWN) {
> +          if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) {
> +            *CipherSuiteSupported = TRUE;
> +          }
> +
> +          return EFI_SUCCESS;
> +        }
> +      }
> +
>         for (CipherIndex = 0; CipherIndex < CipherList->CipherSuiteCount; CipherIndex++) {
>           CipherSuite = CipherList->CipherSuiteList + CipherIndex;
>   
> @@ -450,6 +479,10 @@ WifiMgrGetSecurityType (
>     IN  UINT32  *CipherSuite
>     )
>   {
> +  if ((AKMSuite != NULL) && (*AKMSuite == IEEE_80211_AKM_SUITE_OWE)) {
> +    return SECURITY_TYPE_NONE;
> +  }
> +
>     if (CipherSuite == NULL) {
>       if (AKMSuite == NULL) {
>         return SECURITY_TYPE_NONE;
> @@ -471,8 +504,10 @@ WifiMgrGetSecurityType (
>         return SECURITY_TYPE_UNKNOWN;
>       }
>   
> -    if ((*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA) ||
> -        (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256))
> +    if (*AKMSuite == IEEE_80211_AKM_SUITE_SAE) {
> +      return SECURITY_TYPE_WPA3_PERSONAL;
> +    } else if ((*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA) ||
> +               (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256))
>       {
>         return SECURITY_TYPE_WPA2_ENTERPRISE;
>       } else if ((*AKMSuite == IEEE_80211_AKM_SUITE_PSK) ||
> @@ -498,6 +533,26 @@ WifiMgrGetSecurityType (
>       } else {
>         return SECURITY_TYPE_UNKNOWN;
>       }
> +  } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP) {
> +    if (AKMSuite == NULL) {
> +      return SECURITY_TYPE_UNKNOWN;
> +    }
> +
> +    if (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_SUITE_B) {
> +      return SECURITY_TYPE_WPA3_ENTERPRISE;
> +    } else {
> +      return SECURITY_TYPE_UNKNOWN;
> +    }
> +  } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP256) {
> +    if (AKMSuite == NULL) {
> +      return SECURITY_TYPE_UNKNOWN;
> +    }
> +
> +    if (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_SUITE_B192) {
> +      return SECURITY_TYPE_WPA3_ENTERPRISE;
> +    } else {
> +      return SECURITY_TYPE_UNKNOWN;
> +    }
>     } else {
>       return SECURITY_TYPE_UNKNOWN;
>     }


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90987): https://edk2.groups.io/g/devel/message/90987
Mute This Topic: https://groups.io/mt/91960521/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list