From 46e6c38034b4933ec73c5cb5d53220cb2de909b2 Mon Sep 17 00:00:00 2001 From: hupster Date: Tue, 30 Jan 2024 17:59:37 +0100 Subject: [PATCH] wpa3 support --- src/dbus_nm.rs | 12 ++++++++++++ src/wifi.rs | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/src/dbus_nm.rs b/src/dbus_nm.rs index 5d694e5..21cabe1 100644 --- a/src/dbus_nm.rs +++ b/src/dbus_nm.rs @@ -253,6 +253,18 @@ impl DBusNetworkManager { settings.insert("802-11-wireless-security".to_string(), security_settings); settings.insert("802-1x".to_string(), eap); } + AccessPointCredentials::Sae { ref passphrase } => { + let mut security_settings: VariantMap = HashMap::new(); + + add_str(&mut security_settings, "key-mgmt", "sae"); + add_str( + &mut security_settings, + "psk", + verify_ascii_password(passphrase)?, + ); + + settings.insert("802-11-wireless-security".to_string(), security_settings); + } AccessPointCredentials::None => {} }; diff --git a/src/wifi.rs b/src/wifi.rs index 89653c1..cea8ab0 100644 --- a/src/wifi.rs +++ b/src/wifi.rs @@ -94,6 +94,7 @@ bitflags! { const WPA = 0b0000_0010; const WPA2 = 0b0000_0100; const ENTERPRISE = 0b0000_1000; + const WPA3 = 0b0001_0000; } } @@ -110,6 +111,9 @@ pub enum AccessPointCredentials { identity: String, passphrase: String, }, + Sae { + passphrase: String, + }, } bitflags! { @@ -214,6 +218,9 @@ fn get_access_point_security(manager: &DBusNetworkManager, path: &str) -> Result if rsn_flags != NM80211ApSecurityFlags::AP_SEC_NONE { security |= Security::WPA2; } + if rsn_flags.contains(NM80211ApSecurityFlags::AP_SEC_KEY_MGMT_SAE) { + security |= Security::WPA3; + } if wpa_flags.contains(NM80211ApSecurityFlags::AP_SEC_KEY_MGMT_802_1X) || rsn_flags.contains(NM80211ApSecurityFlags::AP_SEC_KEY_MGMT_802_1X)