merge: branch 'lr/sae'

This adds support for SAE authentication as used for 802.11s Meshing, but
also WPA3-Personal.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/9
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/65
This commit is contained in:
Lubomir Rintel 2019-02-05 10:04:42 +01:00
commit d081aa1d84
25 changed files with 2794 additions and 2607 deletions

View file

@ -4834,6 +4834,17 @@ add_new_connection (gboolean persistent,
GAsyncReadyCallback callback,
gpointer user_data)
{
GError *error = NULL;
if ( !nm_connection_verify (connection, &error)
|| !nm_connection_verify_secrets (connection, &error)) {
g_simple_async_report_take_gerror_in_idle (G_OBJECT (client),
callback,
user_data,
error);
return;
}
nm_client_add_connection_async (client, connection, persistent,
NULL, callback, user_data);
}
@ -4844,6 +4855,18 @@ update_connection (gboolean persistent,
GAsyncReadyCallback callback,
gpointer user_data)
{
GError *error = NULL;
if ( !nm_connection_verify (NM_CONNECTION (connection), &error)
|| !nm_connection_verify_secrets (NM_CONNECTION (connection), &error)) {
g_simple_async_report_take_gerror_in_idle (G_OBJECT (connection),
callback,
user_data,
error);
return;
}
nm_remote_connection_commit_changes_async (connection, persistent,
NULL, callback, user_data);
}

View file

@ -44,43 +44,39 @@
static char *
ap_wpa_rsn_flags_to_string (NM80211ApSecurityFlags flags)
{
char *flags_str[16]; /* Enough space for flags and terminating NULL */
char *ret_str;
char *flags_str[13];
int i = 0;
if (flags & NM_802_11_AP_SEC_PAIR_WEP40)
flags_str[i++] = g_strdup ("pair_wpe40");
flags_str[i++] = "pair_wpe40";
if (flags & NM_802_11_AP_SEC_PAIR_WEP104)
flags_str[i++] = g_strdup ("pair_wpe104");
flags_str[i++] = "pair_wpe104";
if (flags & NM_802_11_AP_SEC_PAIR_TKIP)
flags_str[i++] = g_strdup ("pair_tkip");
flags_str[i++] = "pair_tkip";
if (flags & NM_802_11_AP_SEC_PAIR_CCMP)
flags_str[i++] = g_strdup ("pair_ccmp");
flags_str[i++] = "pair_ccmp";
if (flags & NM_802_11_AP_SEC_GROUP_WEP40)
flags_str[i++] = g_strdup ("group_wpe40");
flags_str[i++] = "group_wpe40";
if (flags & NM_802_11_AP_SEC_GROUP_WEP104)
flags_str[i++] = g_strdup ("group_wpe104");
flags_str[i++] = "group_wpe104";
if (flags & NM_802_11_AP_SEC_GROUP_TKIP)
flags_str[i++] = g_strdup ("group_tkip");
flags_str[i++] = "group_tkip";
if (flags & NM_802_11_AP_SEC_GROUP_CCMP)
flags_str[i++] = g_strdup ("group_ccmp");
flags_str[i++] = "group_ccmp";
if (flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
flags_str[i++] = g_strdup ("psk");
flags_str[i++] = "psk";
if (flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
flags_str[i++] = g_strdup ("802.1X");
flags_str[i++] = "802.1X";
if (flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)
flags_str[i++] = "sae";
/* Make sure you grow flags_str when adding items here. */
if (i == 0)
flags_str[i++] = g_strdup (_("(none)"));
flags_str[i++] = _("(none)");
flags_str[i] = NULL;
ret_str = g_strjoinv (" ", flags_str);
i = 0;
while (flags_str[i])
g_free (flags_str[i++]);
return ret_str;
return g_strjoinv (" ", flags_str);
}
static NMMetaColor
@ -1164,21 +1160,21 @@ fill_output_access_point (gpointer data, gpointer user_data)
if ( (flags & NM_802_11_AP_FLAGS_PRIVACY)
&& (wpa_flags == NM_802_11_AP_SEC_NONE)
&& (rsn_flags == NM_802_11_AP_SEC_NONE)) {
g_string_append (security_str, _("WEP"));
g_string_append_c (security_str, ' ');
g_string_append (security_str, "WEP ");
}
if (wpa_flags != NM_802_11_AP_SEC_NONE) {
g_string_append (security_str, _("WPA1"));
g_string_append_c (security_str, ' ');
g_string_append (security_str, "WPA1 ");
}
if (rsn_flags != NM_802_11_AP_SEC_NONE) {
g_string_append (security_str, _("WPA2"));
g_string_append_c (security_str, ' ');
if ( (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
g_string_append (security_str, "WPA2 ");
}
if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE) {
g_string_append (security_str, "WPA3 ");
}
if ( (wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
|| (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
g_string_append (security_str, _("802.1X"));
g_string_append_c (security_str, ' ');
g_string_append (security_str, "802.1X ");
}
if (security_str->len > 0)
@ -3468,7 +3464,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
/* WEP */
con_password = nm_setting_wireless_security_get_wep_key (s_wsec, 0);
} else if ( (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
/* WPA PSK */
con_password = nm_setting_wireless_security_get_psk (s_wsec);
}
@ -3498,7 +3495,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
wep_passphrase ? NM_WEP_KEY_TYPE_PASSPHRASE: NM_WEP_KEY_TYPE_KEY,
NULL);
} else if ( (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
/* WPA PSK */
g_object_set (s_wsec, NM_SETTING_WIRELESS_SECURITY_PSK, password, NULL);
}

View file

@ -4848,16 +4848,6 @@ _gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type (const NMMetaPro
}
}
static const char *
_validate_fcn_wireless_security_psk (const char *value, char **out_to_free, GError **error)
{
if (!nm_utils_wpa_psk_valid (value)) {
g_set_error (error, 1, 0, _("'%s' is not a valid PSK"), value);
return NULL;
}
return value;
}
/*****************************************************************************/
static gconstpointer
@ -7657,7 +7647,7 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
.property_type = &_pt_gobject_string,
.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
.values_static = NM_MAKE_STRV ("none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap"),
.values_static = NM_MAKE_STRV ("none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", "sae"),
),
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX,
@ -7757,9 +7747,6 @@ static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK,
.is_secret = TRUE,
.property_type = &_pt_gobject_string,
.property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
.validate_fcn = _validate_fcn_wireless_security_psk,
),
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS,
.property_type = &_pt_gobject_secret_flags,

View file

@ -281,8 +281,7 @@ add_wireless_secrets (RequestData *request,
if (!key_mgmt)
return FALSE;
if (NM_IN_STRSET (key_mgmt, "wpa-none",
"wpa-psk")) {
if (NM_IN_STRSET (key_mgmt, "wpa-none", "wpa-psk", "sae")) {
secret = _secret_real_new (NM_SECRET_AGENT_SECRET_TYPE_SECRET,
_("Password"),
NM_SETTING (s_wsec),

View file

@ -24,14 +24,14 @@
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_AUTH_ALG N_("When WEP is used (ie, key-mgmt = \"none\" or \"ieee8021x\") indicate the 802.11 authentication algorithm required by the AP here. One of \"open\" for Open System, \"shared\" for Shared Key, or \"leap\" for Cisco LEAP. When using Cisco LEAP (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\") the \"leap-username\" and \"leap-password\" properties must be specified.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_FILS N_("Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) (disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and no global default is set, FILS will be optionally enabled.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_GROUP N_("A list of group/broadcast encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of \"wep40\", \"wep104\", \"tkip\", or \"ccmp\".")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_KEY_MGMT N_("Key management used for the connection. One of \"none\" (WEP), \"ieee8021x\" (Dynamic WEP), \"wpa-none\" (Ad-Hoc WPA-PSK), \"wpa-psk\" (infrastructure WPA-PSK), or \"wpa-eap\" (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_KEY_MGMT N_("Key management used for the connection. One of \"none\" (WEP), \"ieee8021x\" (Dynamic WEP), \"wpa-none\" (Ad-Hoc WPA-PSK), \"wpa-psk\" (infrastructure WPA-PSK), \"sae\" (SAE) or \"wpa-eap\" (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD N_("The login password for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\").")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS N_("Flags indicating how to handle the \"leap-password\" property.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME N_("The login username for legacy LEAP connections (ie, key-mgmt = \"ieee8021x\" and auth-alg = \"leap\").")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PAIRWISE N_("A list of pairwise encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of \"tkip\" or \"ccmp\".")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PMF N_("Indicates whether Protected Management Frames (802.11w) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no global default is set, PMF will be optionally enabled.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PROTO N_("List of strings specifying the allowed WPA protocol versions to use. Each element may be one \"wpa\" (allow WPA) or \"rsn\" (allow WPA2/RSN). If not specified, both WPA and RSN connections are allowed.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK N_("Pre-Shared-Key for WPA networks. If the key is 64-characters long, it must contain only hexadecimal characters and is interpreted as a hexadecimal WPA key. Otherwise, the key must be between 8 and 63 ASCII characters (as specified in the 802.11i standard) and is interpreted as a WPA passphrase, and is hashed to derive the actual WPA-PSK used when connecting to the Wi-Fi network.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK N_("Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII passphrase of 8 to 63 characters that is (as specified in the 802.11i standard) hashed to derive the actual key, or the key in form of 64 hexadecimal character. The WPA3-Personal networks use a passphrase of any length for SAE authentication.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS N_("Flags indicating how to handle the \"psk\" property.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS N_("Flags indicating how to handle the \"wep-key0\", \"wep-key1\", \"wep-key2\", and \"wep-key3\" properties.")
#define DESCRIBE_DOC_NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE N_("Controls the interpretation of WEP keys. Allowed values are NM_WEP_KEY_TYPE_KEY (1), in which case the key is either a 10- or 26-character hexadecimal string, or a 5- or 13-character ASCII password; or NM_WEP_KEY_TYPE_PASSPHRASE (2), in which case the passphrase is provided as a string and will be hashed using the de-facto MD5 method to derive the actual WEP key.")

View file

@ -1,5 +1,5 @@
size: 395
location: clients/tests/test-client.py:829:test_001()/1
location: clients/tests/test-client.py:841:test_001()/1
cmd: $NMCLI
lang: C
returncode: 0
@ -15,7 +15,7 @@ Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.
<<<
size: 438
location: clients/tests/test-client.py:829:test_001()/2
location: clients/tests/test-client.py:841:test_001()/2
cmd: $NMCLI
lang: pl_PL.UTF-8
returncode: 0
@ -33,7 +33,7 @@ o użyciu.
<<<
size: 188
location: clients/tests/test-client.py:831:test_001()/3
location: clients/tests/test-client.py:843:test_001()/3
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
lang: C
returncode: 10
@ -43,7 +43,7 @@ Error: Device 'wlan0' not found.
<<<
size: 214
location: clients/tests/test-client.py:831:test_001()/4
location: clients/tests/test-client.py:843:test_001()/4
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
lang: pl_PL.UTF-8
returncode: 10
@ -53,7 +53,7 @@ Błąd: Nie odnaleziono urządzenia „wlan0”.
<<<
size: 120
location: clients/tests/test-client.py:833:test_001()/5
location: clients/tests/test-client.py:845:test_001()/5
cmd: $NMCLI c s
lang: C
returncode: 0
@ -63,7 +63,7 @@ stdout: 1 bytes
<<<
size: 130
location: clients/tests/test-client.py:833:test_001()/6
location: clients/tests/test-client.py:845:test_001()/6
cmd: $NMCLI c s
lang: pl_PL.UTF-8
returncode: 0
@ -73,7 +73,7 @@ stdout: 1 bytes
<<<
size: 192
location: clients/tests/test-client.py:835:test_001()/7
location: clients/tests/test-client.py:847:test_001()/7
cmd: $NMCLI bogus s
lang: C
returncode: 2
@ -83,7 +83,7 @@ Error: argument 'bogus' not understood. Try passing --help instead.
<<<
size: 221
location: clients/tests/test-client.py:835:test_001()/8
location: clients/tests/test-client.py:847:test_001()/8
cmd: $NMCLI bogus s
lang: pl_PL.UTF-8
returncode: 2
@ -93,7 +93,7 @@ Błąd: nie zrozumiano parametru „bogus”. Można użyć „--help” zamiast
<<<
size: 1413
location: clients/tests/test-client.py:838:test_001()/9
location: clients/tests/test-client.py:850:test_001()/9
cmd: $NMCLI general permissions
lang: C
returncode: 0
@ -119,7 +119,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1441
location: clients/tests/test-client.py:838:test_001()/10
location: clients/tests/test-client.py:850:test_001()/10
cmd: $NMCLI general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -145,7 +145,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1543
location: clients/tests/test-client.py:838:test_001()/11
location: clients/tests/test-client.py:850:test_001()/11
cmd: $NMCLI --color yes general permissions
lang: C
returncode: 0
@ -171,7 +171,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1570
location: clients/tests/test-client.py:838:test_001()/12
location: clients/tests/test-client.py:850:test_001()/12
cmd: $NMCLI --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -197,7 +197,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1620
location: clients/tests/test-client.py:838:test_001()/13
location: clients/tests/test-client.py:850:test_001()/13
cmd: $NMCLI --pretty general permissions
lang: C
returncode: 0
@ -227,7 +227,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1677
location: clients/tests/test-client.py:838:test_001()/14
location: clients/tests/test-client.py:850:test_001()/14
cmd: $NMCLI --pretty general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -257,7 +257,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1749
location: clients/tests/test-client.py:838:test_001()/15
location: clients/tests/test-client.py:850:test_001()/15
cmd: $NMCLI --pretty --color yes general permissions
lang: C
returncode: 0
@ -287,7 +287,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1806
location: clients/tests/test-client.py:838:test_001()/16
location: clients/tests/test-client.py:850:test_001()/16
cmd: $NMCLI --pretty --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -317,7 +317,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1045
location: clients/tests/test-client.py:838:test_001()/17
location: clients/tests/test-client.py:850:test_001()/17
cmd: $NMCLI --terse general permissions
lang: C
returncode: 0
@ -342,7 +342,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1055
location: clients/tests/test-client.py:838:test_001()/18
location: clients/tests/test-client.py:850:test_001()/18
cmd: $NMCLI --terse general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -367,7 +367,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1175
location: clients/tests/test-client.py:838:test_001()/19
location: clients/tests/test-client.py:850:test_001()/19
cmd: $NMCLI --terse --color yes general permissions
lang: C
returncode: 0
@ -392,7 +392,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1185
location: clients/tests/test-client.py:838:test_001()/20
location: clients/tests/test-client.py:850:test_001()/20
cmd: $NMCLI --terse --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -417,7 +417,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1429
location: clients/tests/test-client.py:838:test_001()/21
location: clients/tests/test-client.py:850:test_001()/21
cmd: $NMCLI --mode tabular general permissions
lang: C
returncode: 0
@ -443,7 +443,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1456
location: clients/tests/test-client.py:838:test_001()/22
location: clients/tests/test-client.py:850:test_001()/22
cmd: $NMCLI --mode tabular general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -469,7 +469,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1558
location: clients/tests/test-client.py:838:test_001()/23
location: clients/tests/test-client.py:850:test_001()/23
cmd: $NMCLI --mode tabular --color yes general permissions
lang: C
returncode: 0
@ -495,7 +495,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1585
location: clients/tests/test-client.py:838:test_001()/24
location: clients/tests/test-client.py:850:test_001()/24
cmd: $NMCLI --mode tabular --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -521,7 +521,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1635
location: clients/tests/test-client.py:838:test_001()/25
location: clients/tests/test-client.py:850:test_001()/25
cmd: $NMCLI --mode tabular --pretty general permissions
lang: C
returncode: 0
@ -551,7 +551,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1692
location: clients/tests/test-client.py:838:test_001()/26
location: clients/tests/test-client.py:850:test_001()/26
cmd: $NMCLI --mode tabular --pretty general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -581,7 +581,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1764
location: clients/tests/test-client.py:838:test_001()/27
location: clients/tests/test-client.py:850:test_001()/27
cmd: $NMCLI --mode tabular --pretty --color yes general permissions
lang: C
returncode: 0
@ -611,7 +611,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check unknown
<<<
size: 1821
location: clients/tests/test-client.py:838:test_001()/28
location: clients/tests/test-client.py:850:test_001()/28
cmd: $NMCLI --mode tabular --pretty --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -641,7 +641,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check nieznane
<<<
size: 1060
location: clients/tests/test-client.py:838:test_001()/29
location: clients/tests/test-client.py:850:test_001()/29
cmd: $NMCLI --mode tabular --terse general permissions
lang: C
returncode: 0
@ -666,7 +666,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1070
location: clients/tests/test-client.py:838:test_001()/30
location: clients/tests/test-client.py:850:test_001()/30
cmd: $NMCLI --mode tabular --terse general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -691,7 +691,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1190
location: clients/tests/test-client.py:838:test_001()/31
location: clients/tests/test-client.py:850:test_001()/31
cmd: $NMCLI --mode tabular --terse --color yes general permissions
lang: C
returncode: 0
@ -716,7 +716,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 1200
location: clients/tests/test-client.py:838:test_001()/32
location: clients/tests/test-client.py:850:test_001()/32
cmd: $NMCLI --mode tabular --terse --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -741,7 +741,7 @@ org.freedesktop.NetworkManager.enable-disable-connectivity-check:unknown
<<<
size: 2335
location: clients/tests/test-client.py:838:test_001()/33
location: clients/tests/test-client.py:850:test_001()/33
cmd: $NMCLI --mode multiline general permissions
lang: C
returncode: 0
@ -782,7 +782,7 @@ VALUE: unknown
<<<
size: 2351
location: clients/tests/test-client.py:838:test_001()/34
location: clients/tests/test-client.py:850:test_001()/34
cmd: $NMCLI --mode multiline general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -823,7 +823,7 @@ VALUE: nieznane
<<<
size: 2464
location: clients/tests/test-client.py:838:test_001()/35
location: clients/tests/test-client.py:850:test_001()/35
cmd: $NMCLI --mode multiline --color yes general permissions
lang: C
returncode: 0
@ -864,7 +864,7 @@ VALUE: unknown
<<<
size: 2480
location: clients/tests/test-client.py:838:test_001()/36
location: clients/tests/test-client.py:850:test_001()/36
cmd: $NMCLI --mode multiline --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -905,7 +905,7 @@ VALUE: nieznane
<<<
size: 3837
location: clients/tests/test-client.py:838:test_001()/37
location: clients/tests/test-client.py:850:test_001()/37
cmd: $NMCLI --mode multiline --pretty general permissions
lang: C
returncode: 0
@ -965,7 +965,7 @@ VALUE: unknown
<<<
size: 3858
location: clients/tests/test-client.py:838:test_001()/38
location: clients/tests/test-client.py:850:test_001()/38
cmd: $NMCLI --mode multiline --pretty general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -1025,7 +1025,7 @@ VALUE: nieznane
<<<
size: 3966
location: clients/tests/test-client.py:838:test_001()/39
location: clients/tests/test-client.py:850:test_001()/39
cmd: $NMCLI --mode multiline --pretty --color yes general permissions
lang: C
returncode: 0
@ -1085,7 +1085,7 @@ VALUE: unknown
<<<
size: 3987
location: clients/tests/test-client.py:838:test_001()/40
location: clients/tests/test-client.py:850:test_001()/40
cmd: $NMCLI --mode multiline --pretty --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -1145,7 +1145,7 @@ VALUE: nieznane
<<<
size: 1335
location: clients/tests/test-client.py:838:test_001()/41
location: clients/tests/test-client.py:850:test_001()/41
cmd: $NMCLI --mode multiline --terse general permissions
lang: C
returncode: 0
@ -1186,7 +1186,7 @@ VALUE:unknown
<<<
size: 1345
location: clients/tests/test-client.py:838:test_001()/42
location: clients/tests/test-client.py:850:test_001()/42
cmd: $NMCLI --mode multiline --terse general permissions
lang: pl_PL.UTF-8
returncode: 0
@ -1227,7 +1227,7 @@ VALUE:unknown
<<<
size: 1464
location: clients/tests/test-client.py:838:test_001()/43
location: clients/tests/test-client.py:850:test_001()/43
cmd: $NMCLI --mode multiline --terse --color yes general permissions
lang: C
returncode: 0
@ -1268,7 +1268,7 @@ VALUE:unknown
<<<
size: 1474
location: clients/tests/test-client.py:838:test_001()/44
location: clients/tests/test-client.py:850:test_001()/44
cmd: $NMCLI --mode multiline --terse --color yes general permissions
lang: pl_PL.UTF-8
returncode: 0

View file

@ -1,5 +1,5 @@
size: 377
location: clients/tests/test-client.py:844:test_002()/1
location: clients/tests/test-client.py:856:test_002()/1
cmd: $NMCLI d
lang: C
returncode: 0
@ -14,7 +14,7 @@ wlan1 wifi unavailable --
<<<
size: 392
location: clients/tests/test-client.py:844:test_002()/2
location: clients/tests/test-client.py:856:test_002()/2
cmd: $NMCLI d
lang: pl_PL.UTF-8
returncode: 0
@ -29,7 +29,7 @@ wlan1 wifi niedostępne --
<<<
size: 978
location: clients/tests/test-client.py:846:test_002()/3
location: clients/tests/test-client.py:858:test_002()/3
cmd: $NMCLI -f all d
lang: C
returncode: 0
@ -44,7 +44,7 @@ wlan1 wifi unavailable unknown unknown /org/freedesk
<<<
size: 993
location: clients/tests/test-client.py:846:test_002()/4
location: clients/tests/test-client.py:858:test_002()/4
cmd: $NMCLI -f all d
lang: pl_PL.UTF-8
returncode: 0
@ -59,7 +59,7 @@ wlan1 wifi niedostępne nieznane nieznane /org/freedes
<<<
size: 739
location: clients/tests/test-client.py:848:test_002()/5
location: clients/tests/test-client.py:860:test_002()/5
cmd: $NMCLI
lang: C
returncode: 0
@ -95,7 +95,7 @@ Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.
<<<
size: 812
location: clients/tests/test-client.py:848:test_002()/6
location: clients/tests/test-client.py:860:test_002()/6
cmd: $NMCLI
lang: pl_PL.UTF-8
returncode: 0
@ -132,12 +132,12 @@ Strony podręcznika nmcli(1) i nmcli-examples(5) zawierają pełne informacje
o użyciu.
<<<
size: 1260
location: clients/tests/test-client.py:850:test_002()/7
size: 1250
location: clients/tests/test-client.py:862:test_002()/7
cmd: $NMCLI -f AP -mode multiline d show wlan0
lang: C
returncode: 0
stdout: 1107 bytes
stdout: 1097 bytes
>>>
AP[1].IN-USE:
AP[1].SSID: wlan0-ap-3
@ -146,7 +146,7 @@ AP[1].CHAN: 1
AP[1].RATE: 54 Mbit/s
AP[1].SIGNAL: 55
AP[1].BARS: **
AP[1].SECURITY: WPA1 WPA2
AP[1].SECURITY: WPA3
AP[2].IN-USE:
AP[2].SSID: wlan0-ap-1
AP[2].MODE: Infra
@ -154,7 +154,7 @@ AP[2].CHAN: 1
AP[2].RATE: 54 Mbit/s
AP[2].SIGNAL: 44
AP[2].BARS: **
AP[2].SECURITY: WPA1 WPA2
AP[2].SECURITY: WPA1
AP[3].IN-USE:
AP[3].SSID: wlan0-ap-2
AP[3].MODE: Infra
@ -165,12 +165,12 @@ AP[3].BARS: **
AP[3].SECURITY: WPA1 WPA2
<<<
size: 1297
location: clients/tests/test-client.py:850:test_002()/8
size: 1287
location: clients/tests/test-client.py:862:test_002()/8
cmd: $NMCLI -f AP -mode multiline d show wlan0
lang: pl_PL.UTF-8
returncode: 0
stdout: 1134 bytes
stdout: 1124 bytes
>>>
AP[1].IN-USE:
AP[1].SSID: wlan0-ap-3
@ -179,7 +179,7 @@ AP[1].CHAN: 1
AP[1].RATE: 54Mb/s
AP[1].SIGNAL: 55
AP[1].BARS: **
AP[1].SECURITY: WPA1 WPA2
AP[1].SECURITY: WPA3
AP[2].IN-USE:
AP[2].SSID: wlan0-ap-1
AP[2].MODE: Infrastruktura
@ -187,7 +187,7 @@ AP[2].CHAN: 1
AP[2].RATE: 54Mb/s
AP[2].SIGNAL: 44
AP[2].BARS: **
AP[2].SECURITY: WPA1 WPA2
AP[2].SECURITY: WPA1
AP[3].IN-USE:
AP[3].SSID: wlan0-ap-2
AP[3].MODE: Infrastruktura
@ -198,12 +198,12 @@ AP[3].BARS: **
AP[3].SECURITY: WPA1 WPA2
<<<
size: 1714
location: clients/tests/test-client.py:851:test_002()/9
size: 1704
location: clients/tests/test-client.py:863:test_002()/9
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
lang: C
returncode: 0
stdout: 1558 bytes
stdout: 1548 bytes
>>>
===============================================================================
Device details (wlan0)
@ -215,7 +215,7 @@ AP[1].CHAN: 1
AP[1].RATE: 54 Mbit/s
AP[1].SIGNAL: 55
AP[1].BARS: **
AP[1].SECURITY: WPA1 WPA2
AP[1].SECURITY: WPA3
-------------------------------------------------------------------------------
AP[2].IN-USE:
AP[2].SSID: wlan0-ap-1
@ -224,7 +224,7 @@ AP[2].CHAN: 1
AP[2].RATE: 54 Mbit/s
AP[2].SIGNAL: 44
AP[2].BARS: **
AP[2].SECURITY: WPA1 WPA2
AP[2].SECURITY: WPA1
-------------------------------------------------------------------------------
AP[3].IN-USE:
AP[3].SSID: wlan0-ap-2
@ -237,12 +237,12 @@ AP[3].SECURITY: WPA1 WPA2
-------------------------------------------------------------------------------
<<<
size: 1759
location: clients/tests/test-client.py:851:test_002()/10
size: 1749
location: clients/tests/test-client.py:863:test_002()/10
cmd: $NMCLI -f AP -mode multiline -p d show wlan0
lang: pl_PL.UTF-8
returncode: 0
stdout: 1592 bytes
stdout: 1582 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@ -254,7 +254,7 @@ AP[1].CHAN: 1
AP[1].RATE: 54Mb/s
AP[1].SIGNAL: 55
AP[1].BARS: **
AP[1].SECURITY: WPA1 WPA2
AP[1].SECURITY: WPA3
-------------------------------------------------------------------------------
AP[2].IN-USE:
AP[2].SSID: wlan0-ap-1
@ -263,7 +263,7 @@ AP[2].CHAN: 1
AP[2].RATE: 54Mb/s
AP[2].SIGNAL: 44
AP[2].BARS: **
AP[2].SECURITY: WPA1 WPA2
AP[2].SECURITY: WPA1
-------------------------------------------------------------------------------
AP[3].IN-USE:
AP[3].SSID: wlan0-ap-2
@ -276,12 +276,12 @@ AP[3].SECURITY: WPA1 WPA2
-------------------------------------------------------------------------------
<<<
size: 591
location: clients/tests/test-client.py:852:test_002()/11
size: 581
location: clients/tests/test-client.py:864:test_002()/11
cmd: $NMCLI -f AP -mode multiline -t d show wlan0
lang: C
returncode: 0
stdout: 435 bytes
stdout: 425 bytes
>>>
AP[1].IN-USE:
AP[1].SSID:wlan0-ap-3
@ -290,7 +290,7 @@ AP[1].CHAN:1
AP[1].RATE:54 Mbit/s
AP[1].SIGNAL:55
AP[1].BARS:**
AP[1].SECURITY:WPA1 WPA2
AP[1].SECURITY:WPA3
AP[2].IN-USE:
AP[2].SSID:wlan0-ap-1
AP[2].MODE:Infra
@ -298,7 +298,7 @@ AP[2].CHAN:1
AP[2].RATE:54 Mbit/s
AP[2].SIGNAL:44
AP[2].BARS:**
AP[2].SECURITY:WPA1 WPA2
AP[2].SECURITY:WPA1
AP[3].IN-USE:
AP[3].SSID:wlan0-ap-2
AP[3].MODE:Infra
@ -309,12 +309,12 @@ AP[3].BARS:**
AP[3].SECURITY:WPA1 WPA2
<<<
size: 628
location: clients/tests/test-client.py:852:test_002()/12
size: 618
location: clients/tests/test-client.py:864:test_002()/12
cmd: $NMCLI -f AP -mode multiline -t d show wlan0
lang: pl_PL.UTF-8
returncode: 0
stdout: 462 bytes
stdout: 452 bytes
>>>
AP[1].IN-USE:
AP[1].SSID:wlan0-ap-3
@ -323,7 +323,7 @@ AP[1].CHAN:1
AP[1].RATE:54Mb/s
AP[1].SIGNAL:55
AP[1].BARS:**
AP[1].SECURITY:WPA1 WPA2
AP[1].SECURITY:WPA3
AP[2].IN-USE:
AP[2].SSID:wlan0-ap-1
AP[2].MODE:Infrastruktura
@ -331,7 +331,7 @@ AP[2].CHAN:1
AP[2].RATE:54Mb/s
AP[2].SIGNAL:44
AP[2].BARS:**
AP[2].SECURITY:WPA1 WPA2
AP[2].SECURITY:WPA1
AP[3].IN-USE:
AP[3].SSID:wlan0-ap-2
AP[3].MODE:Infrastruktura
@ -343,33 +343,33 @@ AP[3].SECURITY:WPA1 WPA2
<<<
size: 455
location: clients/tests/test-client.py:853:test_002()/13
location: clients/tests/test-client.py:865:test_002()/13
cmd: $NMCLI -f AP -mode tabular d show wlan0
lang: C
returncode: 0
stdout: 304 bytes
>>>
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA1 WPA2
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1 WPA2
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA3
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1
AP[3] wlan0-ap-2 Infra 1 54 Mbit/s 34 ** WPA1 WPA2
<<<
size: 499
location: clients/tests/test-client.py:853:test_002()/14
location: clients/tests/test-client.py:865:test_002()/14
cmd: $NMCLI -f AP -mode tabular d show wlan0
lang: pl_PL.UTF-8
returncode: 0
stdout: 338 bytes
>>>
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
AP[1] wlan0-ap-3 Infrastruktura 1 54Mb/s 55 ** WPA1 WPA2
AP[2] wlan0-ap-1 Infrastruktura 1 54Mb/s 44 ** WPA1 WPA2
AP[1] wlan0-ap-3 Infrastruktura 1 54Mb/s 55 ** WPA3
AP[2] wlan0-ap-1 Infrastruktura 1 54Mb/s 44 ** WPA1
AP[3] wlan0-ap-2 Infrastruktura 1 54Mb/s 34 ** WPA1 WPA2
<<<
size: 614
location: clients/tests/test-client.py:854:test_002()/15
location: clients/tests/test-client.py:866:test_002()/15
cmd: $NMCLI -f AP -mode tabular -p d show wlan0
lang: C
returncode: 0
@ -380,13 +380,13 @@ stdout: 460 bytes
==========================
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
----------------------------------------------------------------------------
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA1 WPA2
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1 WPA2
AP[1] wlan0-ap-3 Infra 1 54 Mbit/s 55 ** WPA3
AP[2] wlan0-ap-1 Infra 1 54 Mbit/s 44 ** WPA1
AP[3] wlan0-ap-2 Infra 1 54 Mbit/s 34 ** WPA1 WPA2
<<<
size: 694
location: clients/tests/test-client.py:854:test_002()/16
location: clients/tests/test-client.py:866:test_002()/16
cmd: $NMCLI -f AP -mode tabular -p d show wlan0
lang: pl_PL.UTF-8
returncode: 0
@ -397,45 +397,45 @@ stdout: 530 bytes
===================================
NAME IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
-----------------------------------------------------------------------------------
AP[1] wlan0-ap-3 Infrastruktura 1 54Mb/s 55 ** WPA1 WPA2
AP[2] wlan0-ap-1 Infrastruktura 1 54Mb/s 44 ** WPA1 WPA2
AP[1] wlan0-ap-3 Infrastruktura 1 54Mb/s 55 ** WPA3
AP[2] wlan0-ap-1 Infrastruktura 1 54Mb/s 44 ** WPA1
AP[3] wlan0-ap-2 Infrastruktura 1 54Mb/s 34 ** WPA1 WPA2
<<<
size: 319
location: clients/tests/test-client.py:855:test_002()/17
size: 309
location: clients/tests/test-client.py:867:test_002()/17
cmd: $NMCLI -f AP -mode tabular -t d show wlan0
lang: C
returncode: 0
stdout: 165 bytes
stdout: 155 bytes
>>>
AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:** :WPA1 WPA2
AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:44:** :WPA1 WPA2
AP[1]: :wlan0-ap-3:Infra:1:54 Mbit/s:55:** :WPA3
AP[2]: :wlan0-ap-1:Infra:1:54 Mbit/s:44:** :WPA1
AP[3]: :wlan0-ap-2:Infra:1:54 Mbit/s:34:** :WPA1 WPA2
<<<
size: 356
location: clients/tests/test-client.py:855:test_002()/18
size: 346
location: clients/tests/test-client.py:867:test_002()/18
cmd: $NMCLI -f AP -mode tabular -t d show wlan0
lang: pl_PL.UTF-8
returncode: 0
stdout: 192 bytes
stdout: 182 bytes
>>>
AP[1]: :wlan0-ap-3:Infrastruktura:1:54Mb/s:55:** :WPA1 WPA2
AP[2]: :wlan0-ap-1:Infrastruktura:1:54Mb/s:44:** :WPA1 WPA2
AP[1]: :wlan0-ap-3:Infrastruktura:1:54Mb/s:55:** :WPA3
AP[2]: :wlan0-ap-1:Infrastruktura:1:54Mb/s:44:** :WPA1
AP[3]: :wlan0-ap-2:Infrastruktura:1:54Mb/s:34:** :WPA1 WPA2
<<<
size: 1973
location: clients/tests/test-client.py:857:test_002()/19
location: clients/tests/test-client.py:869:test_002()/19
cmd: $NMCLI -f ALL d wifi
lang: C
returncode: 0
stdout: 1840 bytes
>>>
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infra 1 2412 MHz 54 Mbit/s 55 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/3
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infra 1 2412 MHz 54 Mbit/s 44 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/1
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infra 1 2412 MHz 54 Mbit/s 55 ** WPA3 (none) pair_tkip pair_ccmp group_tkip group_ccmp sae wlan0 no /org/freedesktop/NetworkManager/AccessPoint/3
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infra 1 2412 MHz 54 Mbit/s 44 ** WPA1 pair_tkip pair_ccmp group_tkip group_ccmp psk (none) wlan0 no /org/freedesktop/NetworkManager/AccessPoint/1
AP[3] wlan0-ap-2 776C616E302D61702D32 61:66:D2:E7:44:A2 Infra 1 2412 MHz 54 Mbit/s 34 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 no /org/freedesktop/NetworkManager/AccessPoint/2
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
@ -445,15 +445,15 @@ NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA
<<<
size: 2041
location: clients/tests/test-client.py:857:test_002()/20
location: clients/tests/test-client.py:869:test_002()/20
cmd: $NMCLI -f ALL d wifi
lang: pl_PL.UTF-8
returncode: 0
stdout: 1898 bytes
>>>
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infrastruktura 1 2412MHz 54Mb/s 55 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/3
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infrastruktura 1 2412MHz 54Mb/s 44 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/1
AP[1] wlan0-ap-3 776C616E302D61702D33 60:B3:25:25:E2:C8 Infrastruktura 1 2412MHz 54Mb/s 55 ** WPA3 (brak) pair_tkip pair_ccmp group_tkip group_ccmp sae wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/3
AP[2] wlan0-ap-1 776C616E302D61702D31 90:B1:5F:9E:E0:E3 Infrastruktura 1 2412MHz 54Mb/s 44 ** WPA1 pair_tkip pair_ccmp group_tkip group_ccmp psk (brak) wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/1
AP[3] wlan0-ap-2 776C616E302D61702D32 61:66:D2:E7:44:A2 Infrastruktura 1 2412MHz 54Mb/s 34 ** WPA1 WPA2 pair_tkip pair_ccmp group_tkip group_ccmp psk pair_tkip pair_ccmp group_tkip group_ccmp psk wlan0 nie /org/freedesktop/NetworkManager/AccessPoint/2
NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA-FLAGS RSN-FLAGS DEVICE ACTIVE IN-USE DBUS-PATH
@ -463,7 +463,7 @@ NAME SSID SSID-HEX BSSID MODE CHAN FREQ RATE SIGNAL BARS SECURITY WPA
<<<
size: 246
location: clients/tests/test-client.py:859:test_002()/21
location: clients/tests/test-client.py:871:test_002()/21
cmd: $NMCLI c
lang: C
returncode: 0
@ -474,7 +474,7 @@ con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet --
<<<
size: 256
location: clients/tests/test-client.py:859:test_002()/22
location: clients/tests/test-client.py:871:test_002()/22
cmd: $NMCLI c
lang: pl_PL.UTF-8
returncode: 0
@ -485,7 +485,7 @@ con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet --
<<<
size: 1224
location: clients/tests/test-client.py:861:test_002()/23
location: clients/tests/test-client.py:873:test_002()/23
cmd: $NMCLI c s con-1
lang: C
returncode: 0
@ -517,7 +517,7 @@ connection.llmnr: -1 (default)
<<<
size: 1236
location: clients/tests/test-client.py:861:test_002()/24
location: clients/tests/test-client.py:873:test_002()/24
cmd: $NMCLI c s con-1
lang: pl_PL.UTF-8
returncode: 0

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -807,11 +807,23 @@ class TestNmcli(NmTestBase):
iface = 'wlan1')
self.srv.op_AddObj('WifiAp',
device = 'wlan0')
device = 'wlan0',
rsnf = 0x0)
self.srv.op_AddObj('WifiAp',
device = 'wlan0')
NM_AP_FLAGS = getattr(NM, '80211ApSecurityFlags')
rsnf = 0x0
rsnf = rsnf | NM_AP_FLAGS.PAIR_TKIP
rsnf = rsnf | NM_AP_FLAGS.PAIR_CCMP
rsnf = rsnf | NM_AP_FLAGS.GROUP_TKIP
rsnf = rsnf | NM_AP_FLAGS.GROUP_CCMP
rsnf = rsnf | NM_AP_FLAGS.KEY_MGMT_SAE
self.srv.op_AddObj('WifiAp',
device = 'wlan0')
device = 'wlan0',
wpaf = 0x0,
rsnf = rsnf)
self.srv.op_AddObj('WifiAp',
device = 'wlan1')

View file

@ -348,6 +348,8 @@ typedef enum { /*< underscore_name=nm_802_11_ap_flags, flags >*/
* supported
* @NM_802_11_AP_SEC_KEY_MGMT_802_1X: 802.1x authentication and key management
* is supported
* @NM_802_11_AP_SEC_KEY_MGMT_SAE: WPA/RSN Simultaneous Authentication of Equals is
* supported
*
* 802.11 access point security and authentication flags. These flags describe
* the current security requirements of an access point as determined from the
@ -365,6 +367,7 @@ typedef enum { /*< underscore_name=nm_802_11_ap_security_flags, flags >*/
NM_802_11_AP_SEC_GROUP_CCMP = 0x00000080,
NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x00000100,
NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x00000200,
NM_802_11_AP_SEC_KEY_MGMT_SAE = 0x00000400,
} NM80211ApSecurityFlags;
/**

View file

@ -863,6 +863,15 @@ need_secrets (NMSetting *setting)
goto no_secrets;
}
/* SAE, used in MESH and WPA3-Personal */
if (strcmp (priv->key_mgmt, "sae") == 0) {
if (!priv->psk || !*priv->psk) {
g_ptr_array_add (secrets, NM_SETTING_WIRELESS_SECURITY_PSK);
return secrets;
}
goto no_secrets;
}
/* LEAP */
if ( priv->auth_alg
&& !strcmp (priv->auth_alg, "leap")
@ -894,7 +903,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
{
NMSettingWirelessSecurity *self = NM_SETTING_WIRELESS_SECURITY (setting);
NMSettingWirelessSecurityPrivate *priv = NM_SETTING_WIRELESS_SECURITY_GET_PRIVATE (self);
const char *valid_key_mgmt[] = { "none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", NULL };
const char *valid_key_mgmt[] = { "none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", "sae", NULL };
const char *valid_auth_algs[] = { "open", "shared", "leap", NULL };
const char *valid_protos[] = { "wpa", "rsn", NULL };
const char *valid_pairwise[] = { "tkip", "ccmp", NULL };
@ -1072,14 +1081,12 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if ( NM_IN_SET (priv->pmf,
NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL,
NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED)
&& !NM_IN_STRSET (priv->key_mgmt, "wpa-eap", "wpa-psk")) {
&& !NM_IN_STRSET (priv->key_mgmt, "wpa-eap", "wpa-psk", "sae")) {
g_set_error (error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
_("'%s' can only be used with '%s=%s' or '%s=%s'"),
priv->pmf == NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL ? "optional" : "required",
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-eap",
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk");
_("'%s' can only be used with 'wpa-eap', 'wpa-psk' or 'sae' key management "),
priv->pmf == NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL ? "optional" : "required");
g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, NM_SETTING_WIRELESS_SECURITY_PMF);
return FALSE;
}
@ -1139,7 +1146,9 @@ verify_secrets (NMSetting *setting, NMConnection *connection, GError **error)
return FALSE;
/* WPA-PSK */
if (priv->psk && !nm_utils_wpa_psk_valid (priv->psk)) {
if ( priv->psk
&& strcmp (priv->key_mgmt, "sae") != 0
&& !nm_utils_wpa_psk_valid (priv->psk)) {
g_set_error_literal (error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@ -1447,8 +1456,8 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *klass)
*
* Key management used for the connection. One of "none" (WEP), "ieee8021x"
* (Dynamic WEP), "wpa-none" (Ad-Hoc WPA-PSK), "wpa-psk" (infrastructure
* WPA-PSK), or "wpa-eap" (WPA-Enterprise). This property must be set for
* any Wi-Fi connection that uses security.
* WPA-PSK), "sae" (SAE) or "wpa-eap" (WPA-Enterprise).
* This property must be set for any Wi-Fi connection that uses security.
**/
/* ---ifcfg-rh---
* property: key-mgmt
@ -1722,12 +1731,11 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *klass)
/**
* NMSettingWirelessSecurity:psk:
*
* Pre-Shared-Key for WPA networks. If the key is 64-characters long, it
* must contain only hexadecimal characters and is interpreted as a
* hexadecimal WPA key. Otherwise, the key must be between 8 and 63 ASCII
* characters (as specified in the 802.11i standard) and is interpreted as a
* WPA passphrase, and is hashed to derive the actual WPA-PSK used when
* connecting to the Wi-Fi network.
* Pre-Shared-Key for WPA networks. For WPA-PSK, it's either an ASCII
* passphrase of 8 to 63 characters that is (as specified in the 802.11i
* standard) hashed to derive the actual key, or the key in form of 64
* hexadecimal character. The WPA3-Personal networks use a passphrase
* of any length for SAE authentication.
**/
/* ---ifcfg-rh---
* property: psk

View file

@ -1116,7 +1116,7 @@ managed=1
<term><varname>options</varname></term>
<listitem>
<para>
A list of of options to be passed to the hostname resolver.
A list of options to be passed to the hostname resolver.
</para>
</listitem>
</varlistentry>

View file

@ -425,6 +425,8 @@ security_from_vardict (GVariant *security)
g_strv_contains (array, "wpa-fils-sha256") ||
g_strv_contains (array, "wpa-fils-sha384"))
flags |= NM_802_11_AP_SEC_KEY_MGMT_802_1X;
if (g_strv_contains (array, "sae"))
flags |= NM_802_11_AP_SEC_KEY_MGMT_SAE;
g_free (array);
}
@ -1390,7 +1392,8 @@ nm_wifi_ap_class_init (NMWifiAPClass *ap_class)
| NM_802_11_AP_SEC_GROUP_TKIP \
| NM_802_11_AP_SEC_GROUP_CCMP \
| NM_802_11_AP_SEC_KEY_MGMT_PSK \
| NM_802_11_AP_SEC_KEY_MGMT_802_1X )
| NM_802_11_AP_SEC_KEY_MGMT_802_1X \
| NM_802_11_AP_SEC_KEY_MGMT_SAE )
GObjectClass *object_class = G_OBJECT_CLASS (ap_class);
NMDBusObjectClass *dbus_object_class = NM_DBUS_OBJECT_CLASS (ap_class);

View file

@ -739,6 +739,12 @@ nm_wifi_utils_complete_connection (GBytes *ap_ssid,
* setting. Since there's so much configuration required for it, there's
* no way it can be automatically completed.
*/
} else if ( (key_mgmt && !strcmp (key_mgmt, "sae"))
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_SAE)) {
g_object_set (s_wsec,
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae",
NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, "open",
NULL);
} else if ( (key_mgmt && !strcmp (key_mgmt, "wpa-psk"))
|| (ap_wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
|| (ap_rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)) {

View file

@ -1753,6 +1753,9 @@ settings_connection_update (NMSettingsConnection *self,
&error);
if (!tmp)
goto error;
if (!nm_connection_verify_secrets (tmp, &error))
goto error;
}
}

View file

@ -3612,7 +3612,7 @@ make_wpa_setting (shvarFile *ifcfg,
gs_unref_object NMSettingWirelessSecurity *wsec = NULL;
gs_free char *value = NULL;
const char *v;
gboolean wpa_psk = FALSE, wpa_eap = FALSE, ieee8021x = FALSE;
gboolean wpa_psk = FALSE, wpa_sae = FALSE, wpa_eap = FALSE, ieee8021x = FALSE;
int i_val;
GError *local = NULL;
@ -3620,9 +3620,10 @@ make_wpa_setting (shvarFile *ifcfg,
v = svGetValueStr (ifcfg, "KEY_MGMT", &value);
wpa_psk = nm_streq0 (v, "WPA-PSK");
wpa_sae = nm_streq0 (v, "SAE");
wpa_eap = nm_streq0 (v, "WPA-EAP");
ieee8021x = nm_streq0 (v, "IEEE8021X");
if (!wpa_psk && !wpa_eap && !ieee8021x)
if (!wpa_psk && !wpa_sae && !wpa_eap && !ieee8021x)
return NULL; /* Not WPA or Dynamic WEP */
/* WPS */
@ -3636,7 +3637,7 @@ make_wpa_setting (shvarFile *ifcfg,
NULL);
/* Pairwise and Group ciphers (only relevant for WPA/RSN) */
if (wpa_psk || wpa_eap) {
if (wpa_psk || wpa_sae || wpa_eap) {
fill_wpa_ciphers (ifcfg, wsec, FALSE, adhoc);
fill_wpa_ciphers (ifcfg, wsec, TRUE, adhoc);
}
@ -3659,7 +3660,7 @@ make_wpa_setting (shvarFile *ifcfg,
nm_setting_wireless_security_add_proto (wsec, "rsn");
}
if (wpa_psk) {
if (wpa_psk || wpa_sae) {
NMSettingSecretFlags psk_flags;
psk_flags = _secret_read_ifcfg_flags (ifcfg, "WPA_PSK_FLAGS");
@ -3680,8 +3681,12 @@ make_wpa_setting (shvarFile *ifcfg,
if (adhoc)
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-none", NULL);
else
else if (wpa_psk)
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", NULL);
else if (wpa_sae)
g_object_set (wsec, NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae", NULL);
else
g_assert_not_reached ();
} else if (wpa_eap || ieee8021x) {
/* Adhoc mode is mutually exclusive with any 802.1x-based authentication */
if (adhoc) {

View file

@ -603,6 +603,10 @@ write_wireless_security_setting (NMConnection *connection,
svSetValueStr (ifcfg, "KEY_MGMT", "WPA-PSK");
wpa = TRUE;
*no_8021x = TRUE;
} else if (!strcmp (key_mgmt, "sae")) {
svSetValueStr (ifcfg, "KEY_MGMT", "SAE");
wpa = TRUE;
*no_8021x = TRUE;
} else if (!strcmp (key_mgmt, "ieee8021x")) {
svSetValueStr (ifcfg, "KEY_MGMT", "IEEE8021X");
dynamic_wep = TRUE;

View file

@ -0,0 +1,5 @@
TYPE=Wireless
DEVICE=wlan1
ESSID=blahblah
MODE=Managed
KEY_MGMT=SAE

View file

@ -0,0 +1 @@
WPA_PSK="The king is dead."

View file

@ -2966,6 +2966,45 @@ test_read_wifi_wpa_psk (void)
g_object_unref (connection);
}
static void
test_read_wifi_sae (void)
{
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingWireless *s_wireless;
NMSettingWirelessSecurity *s_wsec;
GBytes *ssid;
const char *expected_ssid = "blahblah";
connection = _connection_from_file (TEST_IFCFG_DIR"/ifcfg-test-wifi-sae",
NULL, TYPE_WIRELESS, NULL);
s_con = nm_connection_get_setting_connection (connection);
g_assert (s_con);
g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "System blahblah (test-wifi-sae)");
g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0);
g_assert (nm_setting_connection_get_autoconnect (s_con));
s_wireless = nm_connection_get_setting_wireless (connection);
g_assert (s_wireless);
g_assert_cmpint (nm_setting_wireless_get_mtu (s_wireless), ==, 0);
ssid = nm_setting_wireless_get_ssid (s_wireless);
g_assert (ssid);
g_assert_cmpmem (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid), expected_ssid, strlen (expected_ssid));
g_assert (!nm_setting_wireless_get_bssid (s_wireless));
g_assert_cmpstr (nm_setting_wireless_get_mode (s_wireless), ==, "infrastructure");
s_wsec = nm_connection_get_setting_wireless_security (connection);
g_assert (s_wsec);
g_assert_cmpstr (nm_setting_wireless_security_get_key_mgmt (s_wsec), ==, "sae");
g_assert_cmpstr (nm_setting_wireless_security_get_psk (s_wsec), ==, "The king is dead.");
g_assert (!nm_setting_wireless_security_get_auth_alg (s_wsec));
}
static void
test_read_wifi_wpa_psk_2 (void)
{
@ -10081,6 +10120,7 @@ int main (int argc, char **argv)
g_test_add_func (TPATH "wifi/read/wpa-psk/unquoted2", test_read_wifi_wpa_psk_unquoted2);
g_test_add_func (TPATH "wifi/read/wpa-psk/adhoc", test_read_wifi_wpa_psk_adhoc);
g_test_add_func (TPATH "wifi/read/wpa-psk/hex", test_read_wifi_wpa_psk_hex);
g_test_add_func (TPATH "wifi/read/sae", test_read_wifi_sae);
g_test_add_func (TPATH "wifi/read/dynamic-wep/leap", test_read_wifi_dynamic_wep_leap);
g_test_add_func (TPATH "wifi/read/wpa/eap/tls", test_read_wifi_wpa_eap_tls);
g_test_add_func (TPATH "wifi/read/wpa/eap/ttls/tls", test_read_wifi_wpa_eap_ttls_tls);

View file

@ -807,7 +807,22 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
if (psk) {
size_t psk_len = strlen (psk);
if (psk_len == 64) {
if (psk_len >= 8 && psk_len <= 63) {
/* Use TYPE_STRING here so that it gets pushed to the
* supplicant as a string, and therefore gets quoted,
* and therefore the supplicant will interpret it as a
* passphrase and not a hex key.
*/
if (!nm_supplicant_config_add_option_with_type (self, "psk", psk, -1, TYPE_STRING, "<hidden>", error))
return FALSE;
} else if (nm_streq (key_mgmt, "sae")) {
/* If the SAE password doesn't comply with WPA-PSK limitation,
* we need to call it "sae_password" instead of "psk".
*/
if (!nm_supplicant_config_add_option_with_type (self, "sae_password", psk, -1, TYPE_STRING, "<hidden>", error))
return FALSE;
} else if (psk_len == 64) {
guint8 buffer[32];
/* Hex PSK */
@ -827,14 +842,6 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
"<hidden>",
error))
return FALSE;
} else if (psk_len >= 8 && psk_len <= 63) {
/* Use TYPE_STRING here so that it gets pushed to the
* supplicant as a string, and therefore gets quoted,
* and therefore the supplicant will interpret it as a
* passphrase and not a hex key.
*/
if (!nm_supplicant_config_add_option_with_type (self, "psk", psk, -1, TYPE_STRING, "<hidden>", error))
return FALSE;
} else {
g_set_error (error, NM_SUPPLICANT_ERROR, NM_SUPPLICANT_ERROR_CONFIG,
"Cannot add psk to supplicant config due to invalid PSK length %u (not between 8 and 63 characters)",
@ -861,7 +868,8 @@ nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
/* Only WPA-specific things when using WPA */
if ( !strcmp (key_mgmt, "wpa-none")
|| !strcmp (key_mgmt, "wpa-psk")
|| !strcmp (key_mgmt, "wpa-eap")) {
|| !strcmp (key_mgmt, "wpa-eap")
|| !strcmp (key_mgmt, "sae")) {
if (!ADD_STRING_LIST_VAL (self, setting, wireless_security, proto, protos, "proto", ' ', TRUE, NULL, error))
return FALSE;
if (!ADD_STRING_LIST_VAL (self, setting, wireless_security, pairwise, pairwise, "pairwise", ' ', TRUE, NULL, error))

View file

@ -72,7 +72,7 @@ const char * proto_allowed[] = { "WPA", "RSN", NULL };
const char * key_mgmt_allowed[] = { "WPA-PSK", "WPA-PSK-SHA256",
"WPA-EAP", "WPA-EAP-SHA256",
"FILS-SHA256", "FILS-SHA384",
"IEEE8021X", "WPA-NONE",
"IEEE8021X", "WPA-NONE", "SAE",
"NONE", NULL };
const char * auth_alg_allowed[] = { "OPEN", "SHARED", "LEAP", NULL };
const char * eap_allowed[] = { "LEAP", "MD5", "TLS", "PEAP", "TTLS", "SIM",

View file

@ -388,6 +388,76 @@ test_wifi_wpa_psk (const char *detail,
g_assert_not_reached ();
}
static void
test_wifi_sae_psk (const char *psk)
{
gs_unref_object NMConnection *connection = NULL;
gs_unref_variant GVariant *config_dict = NULL;
NMSettingWirelessSecurity *s_wsec;
gboolean success;
GError *error = NULL;
const unsigned char ssid_data[] = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x53, 0x49, 0x44 };
gs_unref_bytes GBytes *ssid = g_bytes_new (ssid_data, sizeof (ssid_data));
const char *bssid_str = "11:22:33:44:55:66";
int short_psk = strlen (psk) < 8;
connection = new_basic_connection ("Test Wifi SAE", ssid, bssid_str);
/* Wifi Security setting */
s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
nm_connection_add_setting (connection, NM_SETTING (s_wsec));
g_object_set (s_wsec,
NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "sae",
NM_SETTING_WIRELESS_SECURITY_PSK, psk,
NULL);
nm_setting_wireless_security_add_proto (s_wsec, "rsn");
nm_setting_wireless_security_add_pairwise (s_wsec, "tkip");
nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp");
nm_setting_wireless_security_add_group (s_wsec, "tkip");
nm_setting_wireless_security_add_group (s_wsec, "ccmp");
success = nm_connection_verify (connection, &error);
g_assert_no_error (error);
g_assert (success);
NMTST_EXPECT_NM_INFO ("Config: added 'ssid' value 'Test SSID'*");
NMTST_EXPECT_NM_INFO ("Config: added 'scan_ssid' value '1'*");
NMTST_EXPECT_NM_INFO ("Config: added 'bssid' value '11:22:33:44:55:66'*");
NMTST_EXPECT_NM_INFO ("Config: added 'freq_list' value *");
NMTST_EXPECT_NM_INFO ("Config: added 'key_mgmt' value 'SAE'");
if (short_psk)
NMTST_EXPECT_NM_INFO ("Config: added 'sae_password' value *");
else
NMTST_EXPECT_NM_INFO ("Config: added 'psk' value *");
NMTST_EXPECT_NM_INFO ("Config: added 'proto' value 'RSN'");
NMTST_EXPECT_NM_INFO ("Config: added 'pairwise' value 'TKIP CCMP'");
NMTST_EXPECT_NM_INFO ("Config: added 'group' value 'TKIP CCMP'");
NMTST_EXPECT_NM_INFO ("Config: added 'ieee80211w' value '0'");
config_dict = build_supplicant_config (connection, 1500, 0, TRUE, TRUE);
g_test_assert_expected_messages ();
g_assert (config_dict);
validate_opt ("wifi-sae", config_dict, "scan_ssid", TYPE_INT, GINT_TO_POINTER (1));
validate_opt ("wifi-sae", config_dict, "ssid", TYPE_BYTES, ssid);
validate_opt ("wifi-sae", config_dict, "bssid", TYPE_KEYWORD, bssid_str);
validate_opt ("wifi-sae", config_dict, "key_mgmt", TYPE_KEYWORD, "SAE");
validate_opt ("wifi-sae", config_dict, "proto", TYPE_KEYWORD, "RSN");
validate_opt ("wifi-sae", config_dict, "pairwise", TYPE_KEYWORD, "TKIP CCMP");
validate_opt ("wifi-sae", config_dict, "group", TYPE_KEYWORD, "TKIP CCMP");
if (short_psk)
validate_opt ("wifi-sae", config_dict, "sae_password", TYPE_KEYWORD, psk);
else
validate_opt ("wifi-sae", config_dict, "psk", TYPE_KEYWORD, psk);
}
static void
test_wifi_sae (void)
{
test_wifi_sae_psk ("Moo");
test_wifi_sae_psk ("Hello World!");
}
static void
test_wifi_wpa_psk_types (void)
{
@ -580,6 +650,7 @@ int main (int argc, char **argv)
g_test_add_func ("/supplicant-config/wifi-eap/locked-bssid", test_wifi_eap_locked_bssid);
g_test_add_func ("/supplicant-config/wifi-eap/unlocked-bssid", test_wifi_eap_unlocked_bssid);
g_test_add_func ("/supplicant-config/wifi-eap/fils-disabled", test_wifi_eap_fils_disabled);
g_test_add_func ("/supplicant-config/wifi-sae", test_wifi_sae);
return g_test_run ();
}

View file

@ -861,12 +861,23 @@ class WifiAp(ExportedObj):
ExportedObj.__init__(self, ExportedObj.create_path(WifiAp), ident)
NM_AP_FLAGS = getattr(NM, '80211ApSecurityFlags')
if flags is None:
flags = 0x1
if wpaf is None:
wpaf = 0x1cc
wpaf = 0x0
wpaf = wpaf | NM_AP_FLAGS.PAIR_TKIP
wpaf = wpaf | NM_AP_FLAGS.PAIR_CCMP
wpaf = wpaf | NM_AP_FLAGS.GROUP_TKIP
wpaf = wpaf | NM_AP_FLAGS.GROUP_CCMP
wpaf = wpaf | NM_AP_FLAGS.KEY_MGMT_PSK
if rsnf is None:
rsnf = 0x1cc
rsnf = 0x0
rsnf = rsnf | NM_AP_FLAGS.PAIR_TKIP
rsnf = rsnf | NM_AP_FLAGS.PAIR_CCMP
rsnf = rsnf | NM_AP_FLAGS.GROUP_TKIP
rsnf = rsnf | NM_AP_FLAGS.GROUP_CCMP
rsnf = rsnf | NM_AP_FLAGS.KEY_MGMT_PSK
if freq is None:
freq = 2412
if bssid is None: