Prevent reinstallation of an already in-use group key

Track the current GTK and IGTK that is in use and when receiving a
(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
not install the given key if it is already in use. This prevents an
attacker from trying to trick the client into resetting or lowering the
sequence counter associated to the group key.

Change-Id: I6c63c06b6b2fb289549289051e7024859bd8a5c0
Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
Signed-off-by: Glen Kuhne <kuh@google.com>
Merged-In: I54f22e16b4fca5c541fd7f7e6cf6c9503e875f4e
Bug: 65245581
Test: WiFi integration tests
diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
index 0ef5a9d..52ac2c3 100644
--- a/src/common/wpa_common.h
+++ b/src/common/wpa_common.h
@@ -208,6 +208,17 @@
 	} u;
 } STRUCT_PACKED;
 
+struct wpa_gtk {
+	u8 gtk[WPA_GTK_MAX_LEN];
+	size_t gtk_len;
+};
+
+#ifdef CONFIG_IEEE80211W
+struct wpa_igtk {
+	u8 igtk[WPA_IGTK_MAX_LEN];
+	size_t igtk_len;
+};
+#endif /* CONFIG_IEEE80211W */
 
 /* WPA IE version 1
  * 00-50-f2:1 (OUI:OUI type)