Use set_key addr to distinguish default and multicast keys
Previously, both NULL and ff:ff:ff:ff:ff:ff addr were used in various places to indicate default/broadcast keys. Make this more consistent and useful by defining NULL to mean default key (i.e., used both for unicast and broadcast) and ff:ff:ff:ff:ff:ff to indicate broadcast key (i.e., used only with broadcast).
This commit is contained in:
parent
8546ea1930
commit
0382097ef3
17 changed files with 51 additions and 66 deletions
|
@ -632,16 +632,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
|
|||
_gtk = gtk_buf;
|
||||
}
|
||||
if (sm->pairwise_cipher == WPA_CIPHER_NONE) {
|
||||
if (wpa_sm_set_key(sm, gd->alg,
|
||||
(u8 *) "\xff\xff\xff\xff\xff\xff",
|
||||
if (wpa_sm_set_key(sm, gd->alg, NULL,
|
||||
gd->keyidx, 1, key_rsc, gd->key_rsc_len,
|
||||
_gtk, gd->gtk_len) < 0) {
|
||||
wpa_printf(MSG_WARNING, "WPA: Failed to set "
|
||||
"GTK to the driver (Group only).");
|
||||
return -1;
|
||||
}
|
||||
} else if (wpa_sm_set_key(sm, gd->alg,
|
||||
(u8 *) "\xff\xff\xff\xff\xff\xff",
|
||||
} else if (wpa_sm_set_key(sm, gd->alg, broadcast_ether_addr,
|
||||
gd->keyidx, gd->tx, key_rsc, gd->key_rsc_len,
|
||||
_gtk, gd->gtk_len) < 0) {
|
||||
wpa_printf(MSG_WARNING, "WPA: Failed to set GTK to "
|
||||
|
@ -744,8 +742,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
|
|||
keyidx);
|
||||
return -1;
|
||||
}
|
||||
if (wpa_sm_set_key(sm, WPA_ALG_IGTK,
|
||||
(u8 *) "\xff\xff\xff\xff\xff\xff",
|
||||
if (wpa_sm_set_key(sm, WPA_ALG_IGTK, broadcast_ether_addr,
|
||||
keyidx, 0, igtk->pn, sizeof(igtk->pn),
|
||||
igtk->igtk, WPA_IGTK_LEN) < 0) {
|
||||
wpa_printf(MSG_WARNING, "WPA: Failed to configure IGTK"
|
||||
|
|
|
@ -796,9 +796,8 @@ static int wpa_ft_process_gtk_subelem(struct wpa_sm *sm, const u8 *gtk_elem,
|
|||
}
|
||||
|
||||
wpa_hexdump_key(MSG_DEBUG, "FT: GTK from Reassoc Resp", gtk, keylen);
|
||||
if (wpa_sm_set_key(sm, alg, (u8 *) "\xff\xff\xff\xff\xff\xff",
|
||||
keyidx, 0, gtk_elem + 3, rsc_len, gtk, keylen) <
|
||||
0) {
|
||||
if (wpa_sm_set_key(sm, alg, broadcast_ether_addr, keyidx, 0,
|
||||
gtk_elem + 3, rsc_len, gtk, keylen) < 0) {
|
||||
wpa_printf(MSG_WARNING, "WPA: Failed to set GTK to the "
|
||||
"driver.");
|
||||
return -1;
|
||||
|
@ -849,9 +848,8 @@ static int wpa_ft_process_igtk_subelem(struct wpa_sm *sm, const u8 *igtk_elem,
|
|||
|
||||
wpa_hexdump_key(MSG_DEBUG, "FT: IGTK from Reassoc Resp", igtk,
|
||||
WPA_IGTK_LEN);
|
||||
if (wpa_sm_set_key(sm, WPA_ALG_IGTK, (u8 *) "\xff\xff\xff\xff\xff\xff",
|
||||
keyidx, 0, igtk_elem + 2, 6, igtk, WPA_IGTK_LEN) <
|
||||
0) {
|
||||
if (wpa_sm_set_key(sm, WPA_ALG_IGTK, broadcast_ether_addr, keyidx, 0,
|
||||
igtk_elem + 2, 6, igtk, WPA_IGTK_LEN) < 0) {
|
||||
wpa_printf(MSG_WARNING, "WPA: Failed to set IGTK to the "
|
||||
"driver.");
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue