mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 13:02:44 +01:00
wscutil: Add wsc_build_m8_encrypted_settings
This commit is contained in:
parent
c67219a292
commit
c6c45e0569
@ -1928,6 +1928,13 @@ static void build_network_key(struct wsc_attr_builder *builder,
|
||||
wsc_attr_builder_put_bytes(builder, key, key_len);
|
||||
}
|
||||
|
||||
static void build_new_password(struct wsc_attr_builder *builder,
|
||||
const uint8_t *password, size_t password_len)
|
||||
{
|
||||
wsc_attr_builder_start_attr(builder, WSC_ATTR_NEW_PASSWORD);
|
||||
wsc_attr_builder_put_bytes(builder, password, password_len);
|
||||
}
|
||||
|
||||
static void build_os_version(struct wsc_attr_builder *builder,
|
||||
uint32_t os_version)
|
||||
{
|
||||
@ -2072,6 +2079,17 @@ uint8_t *wsc_build_credential(const struct wsc_credential *in, size_t *out_len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void build_credential(struct wsc_attr_builder *builder,
|
||||
const struct wsc_credential *cred)
|
||||
{
|
||||
size_t data_len;
|
||||
uint8_t *data = wsc_build_credential(cred, &data_len);
|
||||
|
||||
wsc_attr_builder_start_attr(builder, WSC_ATTR_CREDENTIAL);
|
||||
wsc_attr_builder_put_bytes(builder, data, data_len);
|
||||
l_free(data);
|
||||
}
|
||||
|
||||
uint8_t *wsc_build_probe_request(const struct wsc_probe_request *probe_request,
|
||||
size_t *out_len)
|
||||
{
|
||||
@ -2447,6 +2465,30 @@ done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint8_t *wsc_build_m8_encrypted_settings(
|
||||
const struct wsc_m8_encrypted_settings *in,
|
||||
const struct wsc_credential *creds,
|
||||
unsigned int creds_cnt, size_t *out_len)
|
||||
{
|
||||
struct wsc_attr_builder *builder;
|
||||
unsigned int i;
|
||||
|
||||
builder = wsc_attr_builder_new(256);
|
||||
|
||||
for (i = 0; i < creds_cnt; i++)
|
||||
build_credential(builder, &creds[i]);
|
||||
|
||||
if (in->new_password_len) {
|
||||
build_new_password(builder, in->new_password,
|
||||
in->new_password_len);
|
||||
build_device_password_id(builder, in->device_password_id);
|
||||
}
|
||||
|
||||
build_key_wrap_authenticator(builder, in->authenticator);
|
||||
|
||||
return wsc_attr_builder_free(builder, false, out_len);
|
||||
}
|
||||
|
||||
uint8_t *wsc_build_wsc_ack(const struct wsc_ack *ack, size_t *out_len)
|
||||
{
|
||||
struct wsc_attr_builder *builder;
|
||||
|
@ -638,6 +638,10 @@ uint8_t *wsc_build_m7_encrypted_settings(
|
||||
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_m8_encrypted_settings(
|
||||
const struct wsc_m8_encrypted_settings *in,
|
||||
const struct wsc_credential *creds,
|
||||
unsigned int creds_cnt, size_t *out_len);
|
||||
|
||||
uint8_t *wsc_build_wsc_ack(const struct wsc_ack *ack, size_t *out_len);
|
||||
uint8_t *wsc_build_wsc_nack(const struct wsc_nack *nack, size_t *out_len);
|
||||
|
Loading…
Reference in New Issue
Block a user