diff options
| author | Jouni Malinen <j@w1.fi> | 2017-02-05 13:52:43 +0200 |
|---|---|---|
| committer | Dan Pasanen <dan.pasanen@gmail.com> | 2017-10-16 10:49:57 -0500 |
| commit | b07517203e3d775e5cbae339459427f12df0a390 (patch) | |
| tree | 583297a85437eb976b930b6f23e7c29c4bf3232b | |
| parent | 932d1d2be7a69a3f8ab416393a1630d6ded8d731 (diff) | |
| download | android_external_wpa_supplicant_8-b07517203e3d775e5cbae339459427f12df0a390.tar.gz android_external_wpa_supplicant_8-b07517203e3d775e5cbae339459427f12df0a390.tar.bz2 android_external_wpa_supplicant_8-b07517203e3d775e5cbae339459427f12df0a390.zip | |
Set EAPOL-Key Key Length field to 0 for group message 1/2 in RSN
P802.11i/D3.0 described the Key Length as having value 16 for the group
key handshake. However, this was changed to 0 in the published IEEE Std
802.11i-2004 amendment (and still remains 0 in the current standard IEEE
Std 802.11-2016). We need to maintain the non-zero value for WPA (v1)
cases, but the RSN case can be changed to 0 to be closer to the current
standard.
Change-Id: Iaeea9354da2c530dbf836c0a4d4af22af304c369
Signed-off-by: Jouni Malinen <j@w1.fi>
| -rw-r--r-- | src/ap/wpa_auth.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c index 35870864..d8a61192 100644 --- a/src/ap/wpa_auth.c +++ b/src/ap/wpa_auth.c @@ -1484,9 +1484,11 @@ void __wpa_send_eapol(struct wpa_authenticator *wpa_auth, WPA_PUT_BE16(key->key_info, key_info); alg = pairwise ? sm->pairwise : wpa_auth->conf.wpa_group; - WPA_PUT_BE16(key->key_length, wpa_cipher_key_len(alg)); - if (key_info & WPA_KEY_INFO_SMK_MESSAGE) + if ((key_info & WPA_KEY_INFO_SMK_MESSAGE) || + (sm->wpa == WPA_VERSION_WPA2 && !pairwise)) WPA_PUT_BE16(key->key_length, 0); + else + WPA_PUT_BE16(key->key_length, wpa_cipher_key_len(alg)); /* FIX: STSL: what to use as key_replay_counter? */ for (i = RSNA_MAX_EAPOL_RETRIES - 1; i > 0; i--) { |
