]>
Commit | Line | Data |
---|---|---|
ad08c363 JM |
1 | /* |
2 | * Wi-Fi Protected Setup - message definitions | |
3 | * Copyright (c) 2008, Jouni Malinen <j@w1.fi> | |
4 | * | |
0f3d578e JM |
5 | * This software may be distributed under the terms of the BSD license. |
6 | * See README for more details. | |
ad08c363 JM |
7 | */ |
8 | ||
9 | #ifndef WPS_DEFS_H | |
10 | #define WPS_DEFS_H | |
11 | ||
b4e34f2f JM |
12 | #ifdef CONFIG_WPS_TESTING |
13 | ||
14 | extern int wps_version_number; | |
15 | extern int wps_testing_dummy_cred; | |
91226e0d | 16 | extern int wps_corrupt_pkhash; |
b4e34f2f JM |
17 | #define WPS_VERSION wps_version_number |
18 | ||
19 | #else /* CONFIG_WPS_TESTING */ | |
20 | ||
f439079e | 21 | #define WPS_VERSION 0x20 |
ad08c363 | 22 | |
b4e34f2f JM |
23 | #endif /* CONFIG_WPS_TESTING */ |
24 | ||
ad08c363 JM |
25 | /* Diffie-Hellman 1536-bit MODP Group; RFC 3526, Group 5 */ |
26 | #define WPS_DH_GROUP 5 | |
27 | ||
28 | #define WPS_UUID_LEN 16 | |
29 | #define WPS_NONCE_LEN 16 | |
30 | #define WPS_AUTHENTICATOR_LEN 8 | |
31 | #define WPS_AUTHKEY_LEN 32 | |
32 | #define WPS_KEYWRAPKEY_LEN 16 | |
33 | #define WPS_EMSK_LEN 32 | |
34 | #define WPS_PSK_LEN 16 | |
35 | #define WPS_SECRET_NONCE_LEN 16 | |
36 | #define WPS_HASH_LEN 32 | |
37 | #define WPS_KWA_LEN 8 | |
eb76b7e3 JM |
38 | #define WPS_MGMTAUTHKEY_LEN 32 |
39 | #define WPS_MGMTENCKEY_LEN 16 | |
40 | #define WPS_MGMT_KEY_ID_LEN 16 | |
4e0131d3 | 41 | #define WPS_OOB_DEVICE_PASSWORD_MIN_LEN 16 |
46bdb83a MH |
42 | #define WPS_OOB_DEVICE_PASSWORD_LEN 32 |
43 | #define WPS_OOB_PUBKEY_HASH_LEN 20 | |
ad08c363 JM |
44 | |
45 | /* Attribute Types */ | |
46 | enum wps_attribute { | |
47 | ATTR_AP_CHANNEL = 0x1001, | |
48 | ATTR_ASSOC_STATE = 0x1002, | |
49 | ATTR_AUTH_TYPE = 0x1003, | |
50 | ATTR_AUTH_TYPE_FLAGS = 0x1004, | |
51 | ATTR_AUTHENTICATOR = 0x1005, | |
52 | ATTR_CONFIG_METHODS = 0x1008, | |
53 | ATTR_CONFIG_ERROR = 0x1009, | |
54 | ATTR_CONFIRM_URL4 = 0x100a, | |
55 | ATTR_CONFIRM_URL6 = 0x100b, | |
56 | ATTR_CONN_TYPE = 0x100c, | |
57 | ATTR_CONN_TYPE_FLAGS = 0x100d, | |
58 | ATTR_CRED = 0x100e, | |
59 | ATTR_ENCR_TYPE = 0x100f, | |
60 | ATTR_ENCR_TYPE_FLAGS = 0x1010, | |
61 | ATTR_DEV_NAME = 0x1011, | |
62 | ATTR_DEV_PASSWORD_ID = 0x1012, | |
63 | ATTR_E_HASH1 = 0x1014, | |
64 | ATTR_E_HASH2 = 0x1015, | |
65 | ATTR_E_SNONCE1 = 0x1016, | |
66 | ATTR_E_SNONCE2 = 0x1017, | |
67 | ATTR_ENCR_SETTINGS = 0x1018, | |
68 | ATTR_ENROLLEE_NONCE = 0x101a, | |
69 | ATTR_FEATURE_ID = 0x101b, | |
70 | ATTR_IDENTITY = 0x101c, | |
71 | ATTR_IDENTITY_PROOF = 0x101d, | |
72 | ATTR_KEY_WRAP_AUTH = 0x101e, | |
73 | ATTR_KEY_ID = 0x101f, | |
74 | ATTR_MAC_ADDR = 0x1020, | |
75 | ATTR_MANUFACTURER = 0x1021, | |
76 | ATTR_MSG_TYPE = 0x1022, | |
77 | ATTR_MODEL_NAME = 0x1023, | |
78 | ATTR_MODEL_NUMBER = 0x1024, | |
79 | ATTR_NETWORK_INDEX = 0x1026, | |
80 | ATTR_NETWORK_KEY = 0x1027, | |
81 | ATTR_NETWORK_KEY_INDEX = 0x1028, | |
82 | ATTR_NEW_DEVICE_NAME = 0x1029, | |
83 | ATTR_NEW_PASSWORD = 0x102a, | |
84 | ATTR_OOB_DEVICE_PASSWORD = 0x102c, | |
85 | ATTR_OS_VERSION = 0x102d, | |
86 | ATTR_POWER_LEVEL = 0x102f, | |
87 | ATTR_PSK_CURRENT = 0x1030, | |
88 | ATTR_PSK_MAX = 0x1031, | |
89 | ATTR_PUBLIC_KEY = 0x1032, | |
90 | ATTR_RADIO_ENABLE = 0x1033, | |
91 | ATTR_REBOOT = 0x1034, | |
92 | ATTR_REGISTRAR_CURRENT = 0x1035, | |
93 | ATTR_REGISTRAR_ESTABLISHED = 0x1036, | |
94 | ATTR_REGISTRAR_LIST = 0x1037, | |
95 | ATTR_REGISTRAR_MAX = 0x1038, | |
96 | ATTR_REGISTRAR_NONCE = 0x1039, | |
97 | ATTR_REQUEST_TYPE = 0x103a, | |
98 | ATTR_RESPONSE_TYPE = 0x103b, | |
99 | ATTR_RF_BANDS = 0x103c, | |
100 | ATTR_R_HASH1 = 0x103d, | |
101 | ATTR_R_HASH2 = 0x103e, | |
102 | ATTR_R_SNONCE1 = 0x103f, | |
103 | ATTR_R_SNONCE2 = 0x1040, | |
104 | ATTR_SELECTED_REGISTRAR = 0x1041, | |
105 | ATTR_SERIAL_NUMBER = 0x1042, | |
106 | ATTR_WPS_STATE = 0x1044, | |
107 | ATTR_SSID = 0x1045, | |
108 | ATTR_TOTAL_NETWORKS = 0x1046, | |
109 | ATTR_UUID_E = 0x1047, | |
110 | ATTR_UUID_R = 0x1048, | |
111 | ATTR_VENDOR_EXT = 0x1049, | |
112 | ATTR_VERSION = 0x104a, | |
113 | ATTR_X509_CERT_REQ = 0x104b, | |
114 | ATTR_X509_CERT = 0x104c, | |
115 | ATTR_EAP_IDENTITY = 0x104d, | |
116 | ATTR_MSG_COUNTER = 0x104e, | |
117 | ATTR_PUBKEY_HASH = 0x104f, | |
118 | ATTR_REKEY_KEY = 0x1050, | |
119 | ATTR_KEY_LIFETIME = 0x1051, | |
120 | ATTR_PERMITTED_CFG_METHODS = 0x1052, | |
121 | ATTR_SELECTED_REGISTRAR_CONFIG_METHODS = 0x1053, | |
122 | ATTR_PRIMARY_DEV_TYPE = 0x1054, | |
8c0ef181 | 123 | ATTR_SECONDARY_DEV_TYPE_LIST = 0x1055, |
ad08c363 JM |
124 | ATTR_PORTABLE_DEV = 0x1056, |
125 | ATTR_AP_SETUP_LOCKED = 0x1057, | |
126 | ATTR_APPLICATION_EXT = 0x1058, | |
127 | ATTR_EAP_TYPE = 0x1059, | |
128 | ATTR_IV = 0x1060, | |
129 | ATTR_KEY_PROVIDED_AUTO = 0x1061, | |
130 | ATTR_802_1X_ENABLED = 0x1062, | |
131 | ATTR_APPSESSIONKEY = 0x1063, | |
f439079e | 132 | ATTR_WEPTRANSMITKEY = 0x1064, |
c15a854a JM |
133 | ATTR_REQUESTED_DEV_TYPE = 0x106a, |
134 | ATTR_EXTENSIBILITY_TEST = 0x10fa /* _NOT_ defined in the spec */ | |
ad08c363 JM |
135 | }; |
136 | ||
fdc9eeb1 JM |
137 | #define WPS_VENDOR_ID_WFA 14122 |
138 | ||
139 | /* WFA Vendor Extension subelements */ | |
140 | enum { | |
141 | WFA_ELEM_VERSION2 = 0x00, | |
142 | WFA_ELEM_AUTHORIZEDMACS = 0x01, | |
143 | WFA_ELEM_NETWORK_KEY_SHAREABLE = 0x02, | |
144 | WFA_ELEM_REQUEST_TO_ENROLL = 0x03, | |
8714caa1 RJ |
145 | WFA_ELEM_SETTINGS_DELAY_TIME = 0x04, |
146 | WFA_ELEM_REGISTRAR_CONFIGURATION_METHODS = 0x05 | |
fdc9eeb1 JM |
147 | }; |
148 | ||
ad08c363 JM |
149 | /* Device Password ID */ |
150 | enum wps_dev_password_id { | |
151 | DEV_PW_DEFAULT = 0x0000, | |
152 | DEV_PW_USER_SPECIFIED = 0x0001, | |
153 | DEV_PW_MACHINE_SPECIFIED = 0x0002, | |
154 | DEV_PW_REKEY = 0x0003, | |
155 | DEV_PW_PUSHBUTTON = 0x0004, | |
97549179 JM |
156 | DEV_PW_REGISTRAR_SPECIFIED = 0x0005, |
157 | DEV_PW_NFC_CONNECTION_HANDOVER = 0x0007 | |
ad08c363 JM |
158 | }; |
159 | ||
160 | /* Message Type */ | |
161 | enum wps_msg_type { | |
162 | WPS_Beacon = 0x01, | |
163 | WPS_ProbeRequest = 0x02, | |
164 | WPS_ProbeResponse = 0x03, | |
165 | WPS_M1 = 0x04, | |
166 | WPS_M2 = 0x05, | |
167 | WPS_M2D = 0x06, | |
168 | WPS_M3 = 0x07, | |
169 | WPS_M4 = 0x08, | |
170 | WPS_M5 = 0x09, | |
171 | WPS_M6 = 0x0a, | |
172 | WPS_M7 = 0x0b, | |
173 | WPS_M8 = 0x0c, | |
174 | WPS_WSC_ACK = 0x0d, | |
175 | WPS_WSC_NACK = 0x0e, | |
176 | WPS_WSC_DONE = 0x0f | |
177 | }; | |
178 | ||
179 | /* Authentication Type Flags */ | |
180 | #define WPS_AUTH_OPEN 0x0001 | |
181 | #define WPS_AUTH_WPAPSK 0x0002 | |
182 | #define WPS_AUTH_SHARED 0x0004 | |
183 | #define WPS_AUTH_WPA 0x0008 | |
184 | #define WPS_AUTH_WPA2 0x0010 | |
185 | #define WPS_AUTH_WPA2PSK 0x0020 | |
186 | #define WPS_AUTH_TYPES (WPS_AUTH_OPEN | WPS_AUTH_WPAPSK | WPS_AUTH_SHARED | \ | |
187 | WPS_AUTH_WPA | WPS_AUTH_WPA2 | WPS_AUTH_WPA2PSK) | |
188 | ||
189 | /* Encryption Type Flags */ | |
190 | #define WPS_ENCR_NONE 0x0001 | |
191 | #define WPS_ENCR_WEP 0x0002 | |
192 | #define WPS_ENCR_TKIP 0x0004 | |
193 | #define WPS_ENCR_AES 0x0008 | |
194 | #define WPS_ENCR_TYPES (WPS_ENCR_NONE | WPS_ENCR_WEP | WPS_ENCR_TKIP | \ | |
195 | WPS_ENCR_AES) | |
196 | ||
197 | /* Configuration Error */ | |
198 | enum wps_config_error { | |
199 | WPS_CFG_NO_ERROR = 0, | |
200 | WPS_CFG_OOB_IFACE_READ_ERROR = 1, | |
201 | WPS_CFG_DECRYPTION_CRC_FAILURE = 2, | |
202 | WPS_CFG_24_CHAN_NOT_SUPPORTED = 3, | |
203 | WPS_CFG_50_CHAN_NOT_SUPPORTED = 4, | |
204 | WPS_CFG_SIGNAL_TOO_WEAK = 5, | |
205 | WPS_CFG_NETWORK_AUTH_FAILURE = 6, | |
206 | WPS_CFG_NETWORK_ASSOC_FAILURE = 7, | |
207 | WPS_CFG_NO_DHCP_RESPONSE = 8, | |
208 | WPS_CFG_FAILED_DHCP_CONFIG = 9, | |
209 | WPS_CFG_IP_ADDR_CONFLICT = 10, | |
210 | WPS_CFG_NO_CONN_TO_REGISTRAR = 11, | |
211 | WPS_CFG_MULTIPLE_PBC_DETECTED = 12, | |
212 | WPS_CFG_ROGUE_SUSPECTED = 13, | |
213 | WPS_CFG_DEVICE_BUSY = 14, | |
214 | WPS_CFG_SETUP_LOCKED = 15, | |
215 | WPS_CFG_MSG_TIMEOUT = 16, | |
216 | WPS_CFG_REG_SESS_TIMEOUT = 17, | |
ff40cd6d JM |
217 | WPS_CFG_DEV_PASSWORD_AUTH_FAILURE = 18, |
218 | WPS_CFG_60G_CHAN_NOT_SUPPORTED = 19, | |
219 | WPS_CFG_PUBLIC_KEY_HASH_MISMATCH = 20 | |
ad08c363 JM |
220 | }; |
221 | ||
c5cf0a18 CWY |
222 | /* Vendor specific Error Indication for WPS event messages */ |
223 | enum wps_error_indication { | |
224 | WPS_EI_NO_ERROR, | |
225 | WPS_EI_SECURITY_TKIP_ONLY_PROHIBITED, | |
226 | WPS_EI_SECURITY_WEP_PROHIBITED, | |
61b6520e | 227 | WPS_EI_AUTH_FAILURE, |
c5cf0a18 CWY |
228 | NUM_WPS_EI_VALUES |
229 | }; | |
230 | ||
ad08c363 JM |
231 | /* RF Bands */ |
232 | #define WPS_RF_24GHZ 0x01 | |
233 | #define WPS_RF_50GHZ 0x02 | |
234 | ||
235 | /* Config Methods */ | |
236 | #define WPS_CONFIG_USBA 0x0001 | |
237 | #define WPS_CONFIG_ETHERNET 0x0002 | |
238 | #define WPS_CONFIG_LABEL 0x0004 | |
239 | #define WPS_CONFIG_DISPLAY 0x0008 | |
240 | #define WPS_CONFIG_EXT_NFC_TOKEN 0x0010 | |
241 | #define WPS_CONFIG_INT_NFC_TOKEN 0x0020 | |
242 | #define WPS_CONFIG_NFC_INTERFACE 0x0040 | |
243 | #define WPS_CONFIG_PUSHBUTTON 0x0080 | |
244 | #define WPS_CONFIG_KEYPAD 0x0100 | |
6a857074 JM |
245 | #define WPS_CONFIG_VIRT_PUSHBUTTON 0x0280 |
246 | #define WPS_CONFIG_PHY_PUSHBUTTON 0x0480 | |
247 | #define WPS_CONFIG_VIRT_DISPLAY 0x2008 | |
248 | #define WPS_CONFIG_PHY_DISPLAY 0x4008 | |
ad08c363 JM |
249 | |
250 | /* Connection Type Flags */ | |
251 | #define WPS_CONN_ESS 0x01 | |
252 | #define WPS_CONN_IBSS 0x02 | |
253 | ||
254 | /* Wi-Fi Protected Setup State */ | |
255 | enum wps_state { | |
256 | WPS_STATE_NOT_CONFIGURED = 1, | |
257 | WPS_STATE_CONFIGURED = 2 | |
258 | }; | |
259 | ||
260 | /* Association State */ | |
261 | enum wps_assoc_state { | |
262 | WPS_ASSOC_NOT_ASSOC = 0, | |
263 | WPS_ASSOC_CONN_SUCCESS = 1, | |
264 | WPS_ASSOC_CFG_FAILURE = 2, | |
265 | WPS_ASSOC_FAILURE = 3, | |
266 | WPS_ASSOC_IP_FAILURE = 4 | |
267 | }; | |
268 | ||
269 | ||
ad08c363 JM |
270 | #define WPS_DEV_OUI_WFA 0x0050f204 |
271 | ||
272 | enum wps_dev_categ { | |
273 | WPS_DEV_COMPUTER = 1, | |
274 | WPS_DEV_INPUT = 2, | |
275 | WPS_DEV_PRINTER = 3, | |
276 | WPS_DEV_CAMERA = 4, | |
277 | WPS_DEV_STORAGE = 5, | |
278 | WPS_DEV_NETWORK_INFRA = 6, | |
279 | WPS_DEV_DISPLAY = 7, | |
280 | WPS_DEV_MULTIMEDIA = 8, | |
281 | WPS_DEV_GAMING = 9, | |
282 | WPS_DEV_PHONE = 10 | |
283 | }; | |
284 | ||
285 | enum wps_dev_subcateg { | |
286 | WPS_DEV_COMPUTER_PC = 1, | |
287 | WPS_DEV_COMPUTER_SERVER = 2, | |
288 | WPS_DEV_COMPUTER_MEDIA_CENTER = 3, | |
289 | WPS_DEV_PRINTER_PRINTER = 1, | |
290 | WPS_DEV_PRINTER_SCANNER = 2, | |
291 | WPS_DEV_CAMERA_DIGITAL_STILL_CAMERA = 1, | |
292 | WPS_DEV_STORAGE_NAS = 1, | |
293 | WPS_DEV_NETWORK_INFRA_AP = 1, | |
294 | WPS_DEV_NETWORK_INFRA_ROUTER = 2, | |
295 | WPS_DEV_NETWORK_INFRA_SWITCH = 3, | |
296 | WPS_DEV_DISPLAY_TV = 1, | |
297 | WPS_DEV_DISPLAY_PICTURE_FRAME = 2, | |
298 | WPS_DEV_DISPLAY_PROJECTOR = 3, | |
299 | WPS_DEV_MULTIMEDIA_DAR = 1, | |
300 | WPS_DEV_MULTIMEDIA_PVR = 2, | |
301 | WPS_DEV_MULTIMEDIA_MCX = 3, | |
302 | WPS_DEV_GAMING_XBOX = 1, | |
303 | WPS_DEV_GAMING_XBOX360 = 2, | |
304 | WPS_DEV_GAMING_PLAYSTATION = 3, | |
305 | WPS_DEV_PHONE_WINDOWS_MOBILE = 1 | |
306 | }; | |
307 | ||
308 | ||
309 | /* Request Type */ | |
310 | enum wps_request_type { | |
311 | WPS_REQ_ENROLLEE_INFO = 0, | |
312 | WPS_REQ_ENROLLEE = 1, | |
313 | WPS_REQ_REGISTRAR = 2, | |
314 | WPS_REQ_WLAN_MANAGER_REGISTRAR = 3 | |
315 | }; | |
316 | ||
317 | /* Response Type */ | |
318 | enum wps_response_type { | |
319 | WPS_RESP_ENROLLEE_INFO = 0, | |
320 | WPS_RESP_ENROLLEE = 1, | |
321 | WPS_RESP_REGISTRAR = 2, | |
322 | WPS_RESP_AP = 3 | |
323 | }; | |
324 | ||
325 | /* Walk Time for push button configuration (in seconds) */ | |
326 | #define WPS_PBC_WALK_TIME 120 | |
327 | ||
31fcea93 JM |
328 | #define WPS_MAX_AUTHORIZED_MACS 5 |
329 | ||
ad08c363 | 330 | #endif /* WPS_DEFS_H */ |