]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Validity checking function for key_flag API
authorAlexander Wetzel <alexander@wetzel-home.de>
Wed, 4 Mar 2020 17:16:51 +0000 (18:16 +0100)
committerJouni Malinen <j@w1.fi>
Wed, 4 Mar 2020 22:25:47 +0000 (00:25 +0200)
Add masks for each key type to define which flags can be combined and
add a helper function to validate key_flag values.

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

index 66c9b1f840b853f7aef044b2dbb496becb95464f..bd16feb8acc4882f854b50b47ce1f3fafc473e57 100644 (file)
@@ -447,8 +447,23 @@ 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,
+       /* Max allowed flags for each key type */
+       KEY_FLAG_PAIRWISE_MASK          = KEY_FLAG_PAIRWISE_RX_TX,
+       KEY_FLAG_GROUP_MASK             = KEY_FLAG_GROUP_RX_TX_DEFAULT,
+       KEY_FLAG_PMK_MASK               = KEY_FLAG_PMK,
 };
 
+static inline int check_key_flag(enum key_flag key_flag)
+{
+       return !!(!key_flag ||
+                 ((key_flag & KEY_FLAG_PAIRWISE) &&
+                  (key_flag & ~KEY_FLAG_PAIRWISE_MASK)) ||
+                 ((key_flag & KEY_FLAG_GROUP) &&
+                  (key_flag & ~KEY_FLAG_GROUP_MASK)) ||
+                 ((key_flag & KEY_FLAG_PMK) &&
+                  (key_flag & ~KEY_FLAG_PMK_MASK)));
+}
+
 enum ptk0_rekey_handling {
        PTK0_REKEY_ALLOW_ALWAYS,
        PTK0_REKEY_ALLOW_LOCAL_OK,