nl80211: Add CAN_REPLACE_PTK0 API
authorAlexander Wetzel <alexander@wetzel-home.de>
Fri, 31 Aug 2018 13:00:37 +0000 (15:00 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 5 Sep 2018 08:03:17 +0000 (10:03 +0200)
Drivers able to correctly replace a in-use key should set
@NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 to allow the user space (e.g.
hostapd or wpa_supplicant) to rekey PTK keys.

The user space must detect a PTK rekey attempt and only go ahead with it
when the driver has set this flag. If the driver is not supporting the
feature the user space either must not replace the PTK key or perform a
full re-association instead.

Ignoring this flag and continuing to rekey the connection can still work
but has to be considered insecure and broken. Depending on the driver it
can leak clear text packets or freeze the connection and is only
supported to allow the user space to be updated.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
Reviewed-by: Denis Kenzior <denkenz@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/uapi/linux/nl80211.h

index 1766a12b231c7e1641ede3a84a0416e6ab7be420..cfc94178d608ba11e02bbaacea82af5c1b886d5a 100644 (file)
@@ -5226,6 +5226,11 @@ enum nl80211_feature_flags {
  *     except for supported rates from the probe request content if requested
  *     by the %NL80211_SCAN_FLAG_MIN_PREQ_CONTENT flag.
  *
+ * @NL80211_EXT_FEATURE_CAN_REPLACE_PTK0: Driver/device confirm that they are
+ *      able to rekey an in-use key correctly. Userspace must not rekey PTK keys
+ *      if this flag is not set. Ignoring this can leak clear text packets and/or
+ *      freeze the connection.
+ *
  * @NUM_NL80211_EXT_FEATURES: number of extended features.
  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
  */
@@ -5263,6 +5268,7 @@ enum nl80211_ext_feature_index {
        NL80211_EXT_FEATURE_TXQS,
        NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
        NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
+       NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
 
        /* add new features before the definition below */
        NUM_NL80211_EXT_FEATURES,