From addba697da43b5c2cd3afdf57a8aec01f2b70676 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 31 Aug 2016 14:14:11 -0500 Subject: [PATCH] wscutil: Add wsc_build_m8 --- src/wscutil.c | 26 ++++++++++++++++++++++++++ src/wscutil.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/src/wscutil.c b/src/wscutil.c index 5a8cdedf..a3d151ce 100644 --- a/src/wscutil.c +++ b/src/wscutil.c @@ -2055,6 +2055,32 @@ uint8_t *wsc_build_m7_encrypted_settings( return wsc_attr_builder_free(builder, false, out_len); } +uint8_t *wsc_build_m8(const struct wsc_m8 *m8, const uint8_t *encrypted, + size_t encrypted_len, 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_M8); + build_enrollee_nonce(builder, m8->enrollee_nonce); + + wsc_attr_builder_start_attr(builder, WSC_ATTR_ENCRYPTED_SETTINGS); + wsc_attr_builder_put_bytes(builder, encrypted, encrypted_len); + + if (!m8->version2) + goto done; + + START_WFA_VENDOR_EXTENSION(); + +done: + build_authenticator(builder, m8->authenticator); + + 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; diff --git a/src/wscutil.h b/src/wscutil.h index 4889cb5f..a74d1ef6 100644 --- a/src/wscutil.h +++ b/src/wscutil.h @@ -561,6 +561,8 @@ uint8_t *wsc_build_m7(const struct wsc_m7 *m7, const uint8_t *encrypted, uint8_t *wsc_build_m7_encrypted_settings( const struct wsc_m7_encrypted_settings *in, size_t *out_len); +uint8_t *wsc_build_m8(const struct wsc_m8 *m8, 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);