On Wed, Dec 16, 2020 at 01:00:22PM +0200, Ilan Peer wrote: > Add helper functions to construct a PASN authentication frame and > validate its content, which are common to both wpa_supplicant and > hostapd. > diff --git a/src/common/wpa_common.c b/src/common/wpa_common.c > +void wpa_pasn_add_parameter_ie(struct wpabuf *buf, u16 pasn_group, > + u8 wrapped_data_format, > + struct wpabuf *pubkey, > + struct wpabuf *comeback, u16 after) > + if (comeback) { > + wpa_printf(MSG_DEBUG, "PASN: Adding comeback data"); > + > + /* > + * 2 octets for the 'after' field + 1 octet for the length + > + * actual cookie data > + */ > + params->len += 3 + wpabuf_len(comeback); > + params->control |= WPA_PASN_CTRL_COMEBACK_INFO_PRESENT; > + > + wpabuf_put_le16(buf, after); The Comeback After subfield is not included in frames sent by the non-AP STA, so I'll extend this to accept after == -1 as a special case to cover that. > + if (pubkey) { > + wpa_printf(MSG_DEBUG, "PASN: Adding public key"); > + > + /* > + * 2 octets for the finite cyclic group + 2 octets public key > + * length + the actual key > + */ > + params->len += 2 + 2 + wpabuf_len(pubkey); > + params->control |= WPA_PASN_CTRL_GROUP_AND_KEY_PRESENT; > + > + wpabuf_put_le16(buf, pasn_group); > + wpabuf_put_le16(buf, wpabuf_len(pubkey)); > + wpabuf_put_buf(buf, pubkey); The Ephemeral Public Key Length field has size of one octet in P802.11az/D2.6, so I'll update this to match. > +int wpa_pasn_parse_parameter_ie(const u8 *data, u8 len, > + struct wpa_pasn_params_data *pasn_params) > + if (params->control & WPA_PASN_CTRL_COMEBACK_INFO_PRESENT) { > + if (len < 3 || len < *(pos + 2) + 3) { > + wpa_printf(MSG_DEBUG, > + "PASN: Invalid parameters IE: comeback len"); > + return -1; > + } > + > + pasn_params->after = WPA_GET_LE16(pos); Similar change here in parsing.. > + if (params->control & WPA_PASN_CTRL_GROUP_AND_KEY_PRESENT) { > + if (len < 4 || len < WPA_GET_LE16(pos + 2) + 4) { > + pasn_params->group = WPA_GET_LE16(pos); > + pasn_params->pubkey_len = WPA_GET_LE16(pos + 2); And here.. -- Jouni Malinen PGP id EFC895FA _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap