]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Work around AP misbehavior on EAPOL-Key descriptor version
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 14 Nov 2014 18:57:05 +0000 (20:57 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 14 Nov 2014 19:01:13 +0000 (21:01 +0200)
It looks like some APs are incorrectly selecting descriptor version 3
(AES-128-CMAC) for EAPOL-Key frames when version 2 (HMAC-SHA1) was
expected to be used. This is likely triggered by an attempt to negotiate
PMF with SHA1-based AKM.

Since AES-128-CMAC is considered stronger than HMAC-SHA1, allow the
incorrect, but stronger, option to be used in these cases to avoid
interoperability issues with deployed APs.

This issue shows up with "WPA: CCMP is used, but EAPOL-Key descriptor
version (3) is not 2" in debug log. With the new workaround, this issue
is ignored and "WPA: Interoperability workaround: allow incorrect
(should have been HMAC-SHA1), but stronger (is AES-128-CMAC), descriptor
version to be used" is written to the log.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/rsn_supp/wpa.c

index d95c1bd54e2684814746addf7374edb09f6a9adb..f8825d254174285f543eb33317e05bced0cd5cf8 100644 (file)
@@ -1756,6 +1756,9 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr,
                        wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
                                "WPA: Backwards compatibility: allow invalid "
                                "version for non-CCMP group keys");
+               } else if (ver == WPA_KEY_INFO_TYPE_AES_128_CMAC) {
+                       wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
+                               "WPA: Interoperability workaround: allow incorrect (should have been HMAC-SHA1), but stronger (is AES-128-CMAC), descriptor version to be used");
                } else
                        goto out;
        } else if (sm->pairwise_cipher == WPA_CIPHER_GCMP &&