]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Add KEY_FLAG_MODIFY for Extended Key ID support
authorAlexander Wetzel <alexander@wetzel-home.de>
Sun, 15 Mar 2020 19:04:19 +0000 (20:04 +0100)
committerJouni Malinen <j@w1.fi>
Sun, 15 Mar 2020 21:00:10 +0000 (23:00 +0200)
KEY_FLAG_MODIFY was initial added for the planned Extended Key ID
support with commit a919a260352a ("Introduce and add key_flag") and then
removed with commit 82eaa3e6882f ("Remove the not yet needed
KEY_FLAG_MODIFY") to simplify commit e9e69221c1d1 ("Validity checking
function for key_flag API").

Add it again and update check_key_flag() accordingly.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
src/common/defs.h
src/drivers/driver.h

index 077d6399a0ae5ba8b80c023b823a427f10baa4d2..f62c3ceeede9994be6eef900f815d500a01e08fe 100644 (file)
@@ -430,6 +430,7 @@ enum chan_width {
 };
 
 enum key_flag {
+       KEY_FLAG_MODIFY                 = BIT(0),
        KEY_FLAG_DEFAULT                = BIT(1),
        KEY_FLAG_RX                     = BIT(2),
        KEY_FLAG_TX                     = BIT(3),
@@ -446,8 +447,10 @@ enum key_flag {
                                          KEY_FLAG_DEFAULT,
        KEY_FLAG_PAIRWISE_RX_TX         = KEY_FLAG_PAIRWISE | KEY_FLAG_RX_TX,
        KEY_FLAG_PAIRWISE_RX            = KEY_FLAG_PAIRWISE | KEY_FLAG_RX,
+       KEY_FLAG_PAIRWISE_RX_TX_MODIFY  = KEY_FLAG_PAIRWISE_RX_TX |
+                                         KEY_FLAG_MODIFY,
        /* Max allowed flags for each key type */
-       KEY_FLAG_PAIRWISE_MASK          = KEY_FLAG_PAIRWISE_RX_TX,
+       KEY_FLAG_PAIRWISE_MASK          = KEY_FLAG_PAIRWISE_RX_TX_MODIFY,
        KEY_FLAG_GROUP_MASK             = KEY_FLAG_GROUP_RX_TX_DEFAULT,
        KEY_FLAG_PMK_MASK               = KEY_FLAG_PMK,
 };
@@ -455,7 +458,7 @@ enum key_flag {
 static inline int check_key_flag(enum key_flag key_flag)
 {
        return !!(!key_flag ||
-                 ((key_flag & KEY_FLAG_PAIRWISE) &&
+                 ((key_flag & (KEY_FLAG_PAIRWISE | KEY_FLAG_MODIFY)) &&
                   (key_flag & ~KEY_FLAG_PAIRWISE_MASK)) ||
                  ((key_flag & KEY_FLAG_GROUP) &&
                   (key_flag & ~KEY_FLAG_GROUP_MASK)) ||
index 642230ec3801d9991ce319c7fdf51dbf533fb385..b0373954a5b40b2fd3c392a998aebbeb5a8ba3c0 100644 (file)
@@ -1608,6 +1608,10 @@ struct wpa_driver_set_key_params {
        /**
         * key_flag - Additional key flags
         *
+        * %KEY_FLAG_MODIFY
+        *  Set when an already installed key must be updated.
+        *  So far the only use-case is changing RX/TX status for
+        *  pairwise keys. Must not be set when deleting a key.
         * %KEY_FLAG_DEFAULT
         *  Set when the key is also a default key. Must not be set when
         *  deleting a key.
@@ -1636,6 +1640,9 @@ struct wpa_driver_set_key_params {
         * %KEY_FLAG_PAIRWISE_RX
         *  Pairwise key not yet valid for TX. (Only usable when Extended
         *  Key ID is supported by the driver.)
+        * %KEY_FLAG_PAIRWISE_RX_TX_MODIFY
+        *  Enable TX for a pairwise key installed with
+        *  KEY_FLAG_PAIRWISE_RX.
         *
         * Not a valid standalone key type but pre-defined to be combined
         * with other key_flags: