iwinfo: Add support for WPA3
This patch adds support for WPA3, meaning SAE and OWE are now properly identified. This fixes iwinfo and LuCi showing WPA2 NONE for WPA3 SAE and OWE. Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
a9f9557034
commit
f8ef450652
4 changed files with 38 additions and 1 deletions
|
@ -43,7 +43,9 @@
|
|||
#define IWINFO_KMGMT_NONE (1 << 0)
|
||||
#define IWINFO_KMGMT_8021x (1 << 1)
|
||||
#define IWINFO_KMGMT_PSK (1 << 2)
|
||||
#define IWINFO_KMGMT_COUNT 3
|
||||
#define IWINFO_KMGMT_SAE (1 << 3)
|
||||
#define IWINFO_KMGMT_OWE (1 << 4)
|
||||
#define IWINFO_KMGMT_COUNT 5
|
||||
|
||||
#define IWINFO_AUTH_OPEN (1 << 0)
|
||||
#define IWINFO_AUTH_SHARED (1 << 1)
|
||||
|
|
12
iwinfo_cli.c
12
iwinfo_cli.c
|
@ -186,6 +186,12 @@ static char * format_enc_suites(int suites)
|
|||
if (suites & IWINFO_KMGMT_8021x)
|
||||
pos += sprintf(pos, "802.1X/");
|
||||
|
||||
if (suites & IWINFO_KMGMT_SAE)
|
||||
pos += sprintf(pos, "SAE/");
|
||||
|
||||
if (suites & IWINFO_KMGMT_OWE)
|
||||
pos += sprintf(pos, "OWE/");
|
||||
|
||||
if (!suites || (suites & IWINFO_KMGMT_NONE))
|
||||
pos += sprintf(pos, "NONE/");
|
||||
|
||||
|
@ -229,6 +235,12 @@ static char * format_encryption(struct iwinfo_crypto_entry *c)
|
|||
else if (c->wpa_version)
|
||||
{
|
||||
switch (c->wpa_version) {
|
||||
case 4:
|
||||
snprintf(buf, sizeof(buf), "WPA3 %s (%s)",
|
||||
format_enc_suites(c->auth_suites),
|
||||
format_enc_ciphers(c->pair_ciphers | c->group_ciphers));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
snprintf(buf, sizeof(buf), "mixed WPA/WPA2 %s (%s)",
|
||||
format_enc_suites(c->auth_suites),
|
||||
|
|
13
iwinfo_lua.c
13
iwinfo_lua.c
|
@ -89,6 +89,12 @@ static char * iwinfo_crypto_print_suites(int suites)
|
|||
if (suites & IWINFO_KMGMT_8021x)
|
||||
pos += sprintf(pos, "802.1X/");
|
||||
|
||||
if (suites & IWINFO_KMGMT_SAE)
|
||||
pos += sprintf(pos, "SAE/");
|
||||
|
||||
if (suites & IWINFO_KMGMT_OWE)
|
||||
pos += sprintf(pos, "OWE/");
|
||||
|
||||
if (!suites || (suites & IWINFO_KMGMT_NONE))
|
||||
pos += sprintf(pos, "NONE/");
|
||||
|
||||
|
@ -130,6 +136,13 @@ static char * iwinfo_crypto_desc(struct iwinfo_crypto_entry *c)
|
|||
else if (c->wpa_version)
|
||||
{
|
||||
switch (c->wpa_version) {
|
||||
case 4:
|
||||
sprintf(desc, "WPA3 %s (%s)",
|
||||
iwinfo_crypto_print_suites(c->auth_suites),
|
||||
iwinfo_crypto_print_ciphers(
|
||||
c->pair_ciphers | c->group_ciphers));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
sprintf(desc, "mixed WPA/WPA2 %s (%s)",
|
||||
iwinfo_crypto_print_suites(c->auth_suites),
|
||||
|
|
|
@ -1588,6 +1588,16 @@ static int nl80211_get_encryption(const char *ifname, char *buf)
|
|||
if (strstr(wpa_key_mgmt, "EAP"))
|
||||
c->auth_suites |= IWINFO_KMGMT_8021x;
|
||||
|
||||
if (strstr(wpa_key_mgmt, "SAE")){
|
||||
c->auth_suites |= IWINFO_KMGMT_SAE;
|
||||
c->wpa_version = 4;
|
||||
}
|
||||
|
||||
if (strstr(wpa_key_mgmt, "OWE")){
|
||||
c->auth_suites |= IWINFO_KMGMT_OWE;
|
||||
c->wpa_version = 4;
|
||||
}
|
||||
|
||||
if (strstr(wpa_key_mgmt, "NONE"))
|
||||
c->auth_suites |= IWINFO_KMGMT_NONE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue