aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2014-11-14 20:57:05 +0200
committerThe Android Automerger <android-build@google.com>2014-11-18 10:44:03 -0800
commit1d139113fce0bdc1b247a83d8b9e5bd5a4548a1d (patch)
treefdea5bcfc84d7d6632a333dee90c0e357e7fef73
parent6c8155209ca734311fa544d9c0b5dbc3eed2f921 (diff)
downloadandroid_external_wpa_supplicant_8-1d139113fce0bdc1b247a83d8b9e5bd5a4548a1d.tar.gz
android_external_wpa_supplicant_8-1d139113fce0bdc1b247a83d8b9e5bd5a4548a1d.tar.bz2
android_external_wpa_supplicant_8-1d139113fce0bdc1b247a83d8b9e5bd5a4548a1d.zip
Work around AP misbehavior on EAPOL-Key descriptor version
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. Bug: 18411110 Change-Id: I9ae12e8882adc9e785f6e4cef9f30b89bf72dcd2 Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
-rw-r--r--src/rsn_supp/wpa.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
index 94710717..d6fb6a15 100644
--- a/src/rsn_supp/wpa.c
+++ b/src/rsn_supp/wpa.c
@@ -1736,6 +1736,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 &&