]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/initscripts/system/wlanclient
wireless client: Add support for WPA3
[ipfire-2.x.git] / src / initscripts / system / wlanclient
index ee24c43a19a68e52cedf4ad652f46d1ffe8e9255..27a144f723c6dcb9edf63c8e90586fdaab76d7e0 100644 (file)
@@ -62,7 +62,11 @@ function wpa_supplicant_make_config() {
                        --wpa-mode="${line[4]}" \
                        --ssid="${line[5]}" \
                        --psk="${line[6]}" \
-                       --priority="${line[7]}"
+                       --priority="${line[7]}" \
+                       --auth-mode="${line[8]}" \
+                       --anonymous-identity="${line[9]}" \
+                       --identity="${line[10]}" \
+                       --password="${line[11]}"
 
                items=$(( ${items} + 1 ))
 
@@ -82,12 +86,17 @@ function wpa_supplicant_config_line() {
        local config=${2}
        shift 2
 
+       local ieee80211w
+       local anonymous_identity
        local auth_alg
+       local auth_mode
+       local identity
        local proto
        local key_mgmt
        local pairwise
        local group
        local mode
+       local password
        local priority
        local psk
        local ssid
@@ -98,9 +107,21 @@ function wpa_supplicant_config_line() {
 
        while [ $# -gt 0 ]; do
                case "${1}" in
+                       --anonymous-identity=*)
+                               anonymous_identity=${1#--anonymous-identity=}
+                               ;;
+                       --auth-mode=*)
+                               auth_mode=${1#--auth-mode=}
+                               ;;
+                       --identity=*)
+                               identity=${1#--identity=}
+                               ;;
                        --mode=*)
                                mode=${1#--mode=}
                                ;;
+                       --password=*)
+                               password=${1#--password=}
+                               ;;
                        --priority=*)
                                priority=${1#--priority=}
                                ;;
@@ -121,6 +142,14 @@ function wpa_supplicant_config_line() {
        done
 
        case "${mode}" in
+               EAP)
+                       key_mgmt="WPA-EAP"
+                       ;;
+               WPA3)
+                       key_mgmt="SAE"
+
+                       ieee80211w="2"
+                       ;;
                WPA2)
                        auth_alg="OPEN"
                        proto="RSN"
@@ -149,7 +178,7 @@ function wpa_supplicant_config_line() {
                        ;;
        esac
 
-       if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
+       if [ "${mode}" = "EAP" -o "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
                case "${wpa_mode}" in
                        CCMP-CCMP)
                                pairwise="CCMP"
@@ -186,7 +215,11 @@ function wpa_supplicant_config_line() {
                        echo "  key_mgmt=${key_mgmt}"
                fi
                if [ -n "${psk}" ]; then
-                       echo "  psk=\"${psk}\""
+                       if [ "${key_mgmt}" = "SAE" ]; then
+                               echo "  sae_password=\"${psk}\""
+                       else
+                               echo "  psk=\"${psk}\""
+                       fi
                fi
                if [ -n "${wep_tx_keyidx}" ]; then
                        echo "  wep_tx_keyidx=${wep_tx_keyidx}"
@@ -204,6 +237,27 @@ function wpa_supplicant_config_line() {
                if [ -n "${priority}" ]; then
                        echo "  priority=${priority}"
                fi
+               if [ -n "${ieee80211w}" ]; then
+                       echo "  ieee80211w=${ieee80211w}"
+               fi
+
+               # EAP
+               if [ "${mode}" = "EAP" ]; then
+                       if [ -n "${auth_mode}" ]; then
+                               echo "  eap=${auth_mode}"
+                       else
+                               echo "  eap=PEAP TTLS"
+                       fi
+
+                       if [ "${auth_mode}" = "TTLS" -a -n "${anonymous_identity}" ]; then
+                               echo "  anonymous_identity=\"${anonymous_identity}\""
+                       fi
+
+                       if [ -n "${identity}" -a -n "${password}" ]; then
+                               echo "  identity=\"${identity}\""
+                               echo "  password=\"${password}\""
+                       fi
+               fi
 
                echo "}"
                echo