From 00dac648aa7dff66566ba7b4546a12d19e2dd171 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 26 Aug 2016 11:51:07 -0500 Subject: [PATCH] wscutil: Add wsc_build_nack --- src/wscutil.c | 21 +++++++++++++++++++++ src/wscutil.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/src/wscutil.c b/src/wscutil.c index 3a2b3e8b..58eaf5f4 100644 --- a/src/wscutil.c +++ b/src/wscutil.c @@ -1716,7 +1716,28 @@ done: ret = wsc_attr_builder_free(builder, false, out_len); return ret; +} +uint8_t *wsc_build_nack(const struct wsc_nack *nack, size_t *out_len) +{ + struct wsc_attr_builder *builder; + uint8_t *ret; + + builder = wsc_attr_builder_new(256); + build_version(builder, 0x10); + build_message_type(builder, WSC_MESSAGE_TYPE_WSC_NACK); + build_enrollee_nonce(builder, nack->enrollee_nonce); + build_registrar_nonce(builder, nack->registrar_nonce); + build_configuration_error(builder, nack->configuration_error); + + if (!nack->version2) + goto done; + + START_WFA_VENDOR_EXTENSION(); + +done: + ret = wsc_attr_builder_free(builder, false, out_len); + return ret; } bool wsc_uuid_from_addr(const uint8_t addr[], uint8_t *out_uuid) diff --git a/src/wscutil.h b/src/wscutil.h index 2cae6694..3bb33226 100644 --- a/src/wscutil.h +++ b/src/wscutil.h @@ -479,6 +479,8 @@ uint8_t *wsc_build_m3(const struct wsc_m3 *m3, size_t *out_len); uint8_t *wsc_build_m4(const struct wsc_m4 *m4, const uint8_t *encrypted, size_t encrypted_len, size_t *out_len); +uint8_t *wsc_build_nack(const struct wsc_nack *nack, size_t *out_len); + bool wsc_uuid_from_addr(const uint8_t addr[], uint8_t *out_uuid); struct wsc_session_key {