1
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/* ... */
#ifndef WPS_ATTR_PARSE_H
#define WPS_ATTR_PARSE_H
#include "wps.h"
struct wps_parse_attr {
const u8 *version;
const u8 *version2;
const u8 *msg_type;
const u8 *enrollee_nonce;
const u8 *registrar_nonce;
const u8 *uuid_r;
const u8 *uuid_e;
const u8 *auth_type_flags;
const u8 *encr_type_flags;
const u8 *conn_type_flags;
const u8 *config_methods;
const u8 *sel_reg_config_methods;
const u8 *primary_dev_type;
const u8 *rf_bands;
const u8 *assoc_state;
const u8 *config_error;
const u8 *dev_password_id;
const u8 *os_version;
const u8 *wps_state;
const u8 *authenticator;
const u8 *r_hash1;
const u8 *r_hash2;
const u8 *e_hash1;
const u8 *e_hash2;
const u8 *r_snonce1;
const u8 *r_snonce2;
const u8 *e_snonce1;
const u8 *e_snonce2;
const u8 *key_wrap_auth;
const u8 *auth_type;
const u8 *encr_type;
const u8 *network_idx;
const u8 *network_key_idx;
const u8 *mac_addr;
const u8 *selected_registrar;
const u8 *request_type;
const u8 *response_type;
const u8 *ap_setup_locked;
const u8 *settings_delay_time;
const u8 *network_key_shareable;
const u8 *request_to_enroll;
const u8 *ap_channel;
const u8 *registrar_configuration_methods;
const u8 *manufacturer;
const u8 *model_name;
const u8 *model_number;
const u8 *serial_number;
const u8 *dev_name;
const u8 *public_key;
const u8 *encr_settings;
const u8 *ssid;
const u8 *network_key;
const u8 *authorized_macs;
const u8 *sec_dev_type_list;
const u8 *oob_dev_password;
u16 manufacturer_len;
u16 model_name_len;
u16 model_number_len;
u16 serial_number_len;
u16 dev_name_len;
u16 public_key_len;
u16 encr_settings_len;
u16 ssid_len;
u16 network_key_len;
u16 authorized_macs_len;
u16 sec_dev_type_list_len;
u16 oob_dev_password_len;
#ifdef ESP_SUPPLICANT
#define MAX_CRED_COUNT MAX_WPS_AP_CRED
#else
#define MAX_CRED_COUNT 10
#endif
#define MAX_REQ_DEV_TYPE_COUNT 10
unsigned int num_cred;
unsigned int num_req_dev_type;
unsigned int num_vendor_ext;
u16 cred_len[MAX_CRED_COUNT];
u16 vendor_ext_len[MAX_WPS_PARSE_VENDOR_EXT];
const u8 *cred[MAX_CRED_COUNT];
const u8 *req_dev_type[MAX_REQ_DEV_TYPE_COUNT];
const u8 *vendor_ext[MAX_WPS_PARSE_VENDOR_EXT];
u8 multi_ap_ext;
}{ ... };
int wps_parse_msg(const struct wpabuf *msg, struct wps_parse_attr *attr);
/* ... */
#endif