hostapd: fallback to psk when generating r0kh/r1kh
authorEneas U de Queiroz <cotequeiroz@gmail.com>
Fri, 7 Jan 2022 20:19:36 +0000 (17:19 -0300)
committerDavid Bauer <mail@david-bauer.net>
Sat, 19 Feb 2022 15:14:52 +0000 (16:14 +0100)
The 80211r r0kh and r1kh defaults are generated from the md5sum of
"$mobility_domain/$auth_secret".  auth_secret is only set when using EAP
authentication, but the default key is used for SAE/PSK as well.  In
this case,  auth_secret is empty, and the default value of the key can
be computed from the SSID alone.

Fallback to using $key when auth_secret is empty.  While at it, rename
the variable holding the generated key from 'key' to 'ft_key', to avoid
clobbering the PSK.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
[make ft_key local]
Signed-off-by: David Bauer <mail@david-bauer.net>
package/network/services/hostapd/files/hostapd.sh

index d9d5f348775debade847f267b1ca1dc86444e41d..157a7ad3e0b860cf6381346d95974addd3c84b74 100644 (file)
@@ -526,7 +526,7 @@ hostapd_set_bss_options() {
 
        wireless_vif_parse_encryption
 
-       local bss_conf bss_md5sum
+       local bss_conf bss_md5sum ft_key
        local wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wpa_key_mgmt
 
        json_get_vars \
@@ -876,10 +876,10 @@ hostapd_set_bss_options() {
                                set_default pmk_r1_push 0
 
                                [ -n "$r0kh" -a -n "$r1kh" ] || {
-                                       key=`echo -n "$mobility_domain/$auth_secret" | md5sum | awk '{print $1}'`
+                                       ft_key=`echo -n "$mobility_domain/${auth_secret:-${key}}" | md5sum | awk '{print $1}'`
 
-                                       set_default r0kh "ff:ff:ff:ff:ff:ff,*,$key"
-                                       set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$key"
+                                       set_default r0kh "ff:ff:ff:ff:ff:ff,*,$ft_key"
+                                       set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$ft_key"
                                }
 
                                [ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N"