3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-10-04 02:18:49 +02:00

wscutil: Add wsc_parse_m6_encrypted_settings

This commit is contained in:
Denis Kenzior 2016-08-31 11:15:12 -05:00
parent 11cb6e5d35
commit 3719e78094
2 changed files with 19 additions and 0 deletions

View File

@ -549,6 +549,7 @@ static attr_handler handler_for_type(enum wsc_attr type)
case WSC_ATTR_R_HASH2: case WSC_ATTR_R_HASH2:
return extract_hash; return extract_hash;
case WSC_ATTR_R_SNONCE1: case WSC_ATTR_R_SNONCE1:
case WSC_ATTR_R_SNONCE2:
return extract_nonce; return extract_nonce;
case WSC_ATTR_SELECTED_REGISTRAR: case WSC_ATTR_SELECTED_REGISTRAR:
return extract_bool; return extract_bool;
@ -1228,6 +1229,17 @@ int wsc_parse_m6(const uint8_t *pdu, uint32_t len, struct wsc_m6 *out,
return 0; return 0;
} }
int wsc_parse_m6_encrypted_settings(const uint8_t *pdu, uint32_t len,
struct wsc_m6_encrypted_settings *out)
{
memset(out, 0, sizeof(*out));
return wsc_parse_attrs(pdu, len, NULL, NULL,
WSC_ATTR_KEY_WRAP_AUTHENTICATOR, out->authenticator,
REQUIRED(R_SNONCE2, out->r_snonce2),
WSC_ATTR_INVALID);
}
int wsc_parse_nack(const uint8_t *pdu, uint32_t len, struct wsc_nack *out) int wsc_parse_nack(const uint8_t *pdu, uint32_t len, struct wsc_nack *out)
{ {
int r; int r;

View File

@ -476,6 +476,11 @@ struct wsc_m6 {
uint8_t authenticator[8]; uint8_t authenticator[8];
}; };
struct wsc_m6_encrypted_settings {
uint8_t r_snonce2[16];
uint8_t authenticator[8];
};
struct wsc_nack { struct wsc_nack {
bool version2; bool version2;
uint8_t enrollee_nonce[16]; uint8_t enrollee_nonce[16];
@ -503,6 +508,8 @@ int wsc_parse_m5_encrypted_settings(const uint8_t *pdu, uint32_t len,
struct wsc_m5_encrypted_settings *out); struct wsc_m5_encrypted_settings *out);
int wsc_parse_m6(const uint8_t *pdu, uint32_t len, struct wsc_m6 *out, int wsc_parse_m6(const uint8_t *pdu, uint32_t len, struct wsc_m6 *out,
struct iovec *out_encrypted); struct iovec *out_encrypted);
int wsc_parse_m6_encrypted_settings(const uint8_t *pdu, uint32_t len,
struct wsc_m6_encrypted_settings *out);
int wsc_parse_nack(const uint8_t *pdu, uint32_t len, struct wsc_nack *out); int wsc_parse_nack(const uint8_t *pdu, uint32_t len, struct wsc_nack *out);