From 11550b2756d02b302523d4d94c630d79370f57e6 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 31 Aug 2016 11:15:35 -0500 Subject: [PATCH] wscutil: Add wsc_m6_build_encrypted_settings --- src/wscutil.c | 20 ++++++++++++++++++++ src/wscutil.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/src/wscutil.c b/src/wscutil.c index bc426bea..33af46eb 100644 --- a/src/wscutil.c +++ b/src/wscutil.c @@ -1629,6 +1629,13 @@ static void build_r_snonce1(struct wsc_attr_builder *builder, wsc_attr_builder_put_bytes(builder, nonce, 16); } +static void build_r_snonce2(struct wsc_attr_builder *builder, + const uint8_t *nonce) +{ + wsc_attr_builder_start_attr(builder, WSC_ATTR_R_SNONCE2); + wsc_attr_builder_put_bytes(builder, nonce, 16); +} + static void build_serial_number(struct wsc_attr_builder *builder, const char *serial_number) { @@ -1923,6 +1930,19 @@ done: return ret; } +uint8_t *wsc_build_m6_encrypted_settings( + const struct wsc_m6_encrypted_settings *in, + size_t *out_len) +{ + struct wsc_attr_builder *builder; + + builder = wsc_attr_builder_new(256); + build_r_snonce2(builder, in->r_snonce2); + build_key_wrap_authenticator(builder, in->authenticator); + + return wsc_attr_builder_free(builder, false, out_len); +} + 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 6a87a287..b6bc068e 100644 --- a/src/wscutil.h +++ b/src/wscutil.h @@ -530,6 +530,9 @@ uint8_t *wsc_build_m5_encrypted_settings( size_t *out_len); uint8_t *wsc_build_m6(const struct wsc_m6 *m6, const uint8_t *encrypted, size_t encrypted_len, size_t *out_len); +uint8_t *wsc_build_m6_encrypted_settings( + const struct wsc_m6_encrypted_settings *in, + size_t *out_len); uint8_t *wsc_build_nack(const struct wsc_nack *nack, size_t *out_len);