From: Jouni Malinen Date: Sat, 27 Apr 2013 14:55:20 +0000 (+0300) Subject: P2P NFC: Add NDEF helpers for P2P connection handover messages X-Git-Tag: hostap_2_1~74 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=01afd8dbd7b45d7c4fdbfa3d8e964f93819281c9;p=thirdparty%2Fhostap.git P2P NFC: Add NDEF helpers for P2P connection handover messages Signed-hostap: Jouni Malinen --- diff --git a/src/wps/ndef.c b/src/wps/ndef.c index ceeb48239..2b3506476 100644 --- a/src/wps/ndef.c +++ b/src/wps/ndef.c @@ -30,6 +30,7 @@ struct ndef_record { }; 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, struct ndef_record *record) @@ -168,3 +169,28 @@ struct wpabuf * ndef_build_wifi(const struct wpabuf *buf) FLAG_TNF_RFC2046, wifi_handover_type, 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); +} diff --git a/src/wps/wps.h b/src/wps/wps.h index 5ad7725e4..f185d0587 100644 --- a/src/wps/wps.h +++ b/src/wps/wps.h @@ -872,6 +872,8 @@ struct wpabuf * wps_build_nfc_handover_sel(struct wps_context *ctx, /* ndef.c */ struct wpabuf * ndef_parse_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 int wps_validate_beacon(const struct wpabuf *wps_ie);