P2P NFC: Add NDEF helpers for P2P connection handover messages

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2013-04-27 17:55:20 +03:00 committed by Jouni Malinen
parent 9e323a24cd
commit 01afd8dbd7
2 changed files with 28 additions and 0 deletions

View file

@ -30,6 +30,7 @@ struct ndef_record {
}; };
static char wifi_handover_type[] = "application/vnd.wfa.wsc"; static char wifi_handover_type[] = "application/vnd.wfa.wsc";
static char p2p_handover_type[] = "application/vnd.wfa.p2p";
static int ndef_parse_record(const u8 *data, u32 size, static int ndef_parse_record(const u8 *data, u32 size,
struct ndef_record *record) struct ndef_record *record)
@ -168,3 +169,28 @@ struct wpabuf * ndef_build_wifi(const struct wpabuf *buf)
FLAG_TNF_RFC2046, wifi_handover_type, FLAG_TNF_RFC2046, wifi_handover_type,
os_strlen(wifi_handover_type), NULL, 0, buf); os_strlen(wifi_handover_type), NULL, 0, buf);
} }
static int p2p_filter(struct ndef_record *record)
{
if (record->type_length != os_strlen(p2p_handover_type))
return 0;
if (os_memcmp(record->type, p2p_handover_type,
os_strlen(p2p_handover_type)) != 0)
return 0;
return 1;
}
struct wpabuf * ndef_parse_p2p(const struct wpabuf *buf)
{
return ndef_parse_records(buf, p2p_filter);
}
struct wpabuf * ndef_build_p2p(const struct wpabuf *buf)
{
return ndef_build_record(FLAG_MESSAGE_BEGIN | FLAG_MESSAGE_END |
FLAG_TNF_RFC2046, p2p_handover_type,
os_strlen(p2p_handover_type), NULL, 0, buf);
}

View file

@ -872,6 +872,8 @@ struct wpabuf * wps_build_nfc_handover_sel(struct wps_context *ctx,
/* ndef.c */ /* ndef.c */
struct wpabuf * ndef_parse_wifi(const struct wpabuf *buf); struct wpabuf * ndef_parse_wifi(const struct wpabuf *buf);
struct wpabuf * ndef_build_wifi(const struct wpabuf *buf); struct wpabuf * ndef_build_wifi(const struct wpabuf *buf);
struct wpabuf * ndef_parse_p2p(const struct wpabuf *buf);
struct wpabuf * ndef_build_p2p(const struct wpabuf *buf);
#ifdef CONFIG_WPS_STRICT #ifdef CONFIG_WPS_STRICT
int wps_validate_beacon(const struct wpabuf *wps_ie); int wps_validate_beacon(const struct wpabuf *wps_ie);