HS 2.0R2 AP: Add definition and helper function for WFA RADIUS VSA
These changes make it easier to add WFA vendor specific attributes to RADIUS messages. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
3fb17a9530
commit
0dd100fb40
2 changed files with 39 additions and 0 deletions
|
@ -1220,6 +1220,33 @@ int radius_msg_add_mppe_keys(struct radius_msg *msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int radius_msg_add_wfa(struct radius_msg *msg, u8 subtype, const u8 *data,
|
||||||
|
size_t len)
|
||||||
|
{
|
||||||
|
struct radius_attr_hdr *attr;
|
||||||
|
u8 *buf, *pos;
|
||||||
|
size_t alen;
|
||||||
|
|
||||||
|
alen = 4 + 2 + len;
|
||||||
|
buf = os_malloc(alen);
|
||||||
|
if (buf == NULL)
|
||||||
|
return 0;
|
||||||
|
pos = buf;
|
||||||
|
WPA_PUT_BE32(pos, RADIUS_VENDOR_ID_WFA);
|
||||||
|
pos += 4;
|
||||||
|
*pos++ = subtype;
|
||||||
|
*pos++ = 2 + len;
|
||||||
|
os_memcpy(pos, data, len);
|
||||||
|
attr = radius_msg_add_attr(msg, RADIUS_ATTR_VENDOR_SPECIFIC,
|
||||||
|
buf, alen);
|
||||||
|
os_free(buf);
|
||||||
|
if (attr == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Add User-Password attribute to a RADIUS message and encrypt it as specified
|
/* Add User-Password attribute to a RADIUS message and encrypt it as specified
|
||||||
* in RFC 2865, Chap. 5.2 */
|
* in RFC 2865, Chap. 5.2 */
|
||||||
struct radius_attr_hdr *
|
struct radius_attr_hdr *
|
||||||
|
|
|
@ -163,6 +163,16 @@ enum { RADIUS_VENDOR_ATTR_MS_MPPE_SEND_KEY = 16,
|
||||||
RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY = 17
|
RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY = 17
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Hotspot 2.0 - WFA Vendor-specific RADIUS Attributes */
|
||||||
|
#define RADIUS_VENDOR_ID_WFA 40808
|
||||||
|
|
||||||
|
enum {
|
||||||
|
RADIUS_VENDOR_ATTR_WFA_HS20_SUBSCR_REMEDIATION = 1,
|
||||||
|
RADIUS_VENDOR_ATTR_WFA_HS20_AP_VERSION = 2,
|
||||||
|
RADIUS_VENDOR_ATTR_WFA_HS20_STA_VERSION = 3,
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
#endif /* _MSC_VER */
|
#endif /* _MSC_VER */
|
||||||
|
@ -237,6 +247,8 @@ int radius_msg_add_mppe_keys(struct radius_msg *msg,
|
||||||
const u8 *secret, size_t secret_len,
|
const u8 *secret, size_t secret_len,
|
||||||
const u8 *send_key, size_t send_key_len,
|
const u8 *send_key, size_t send_key_len,
|
||||||
const u8 *recv_key, size_t recv_key_len);
|
const u8 *recv_key, size_t recv_key_len);
|
||||||
|
int radius_msg_add_wfa(struct radius_msg *msg, u8 subtype, const u8 *data,
|
||||||
|
size_t len);
|
||||||
struct radius_attr_hdr *
|
struct radius_attr_hdr *
|
||||||
radius_msg_add_attr_user_password(struct radius_msg *msg,
|
radius_msg_add_attr_user_password(struct radius_msg *msg,
|
||||||
const u8 *data, size_t data_len,
|
const u8 *data, size_t data_len,
|
||||||
|
|
Loading…
Reference in a new issue