View | Details | Raw Unified | Return to bug 216063
Collapse All | Expand All

(-)branches/NETWORKMANAGER_0_6_0_RELEASE/include/NetworkManager.h (+21 lines)
Lines 122-127 Link Here
122
#define NM_AUTH_TYPE_WPA_EAP			0x00000020
122
#define NM_AUTH_TYPE_WPA_EAP			0x00000020
123
#define NM_AUTH_TYPE_LEAP			0x00000040
123
#define NM_AUTH_TYPE_LEAP			0x00000040
124
124
125
126
/*
127
 * EAP Method in libnm-util is a bitfield of (EAP Method) | (Phase2 Method)
128
 */
129
130
#define NM_EAP_METHOD_MASK			0x0000ffff
131
#define NM_PHASE2_METHOD_MASK			0xffff0000
132
133
#define NM_EAP_TO_EAP_METHOD(eap)    (eap & NM_EAP_METHOD_MASK)
134
#define NM_EAP_TO_PHASE2_METHOD(eap) (eap & NM_PHASE2_METHOD_MASK)
135
125
/*
136
/*
126
 * EAP Methods
137
 * EAP Methods
127
 */
138
 */
Lines 134-139 Link Here
134
#define NM_EAP_METHOD_TTLS			0x00000040	/* EAP-TTLS */
145
#define NM_EAP_METHOD_TTLS			0x00000040	/* EAP-TTLS */
135
146
136
/*
147
/*
148
 * Phase2 Methods
149
 */
150
#define NM_PHASE2_AUTH_NONE			0x00000000
151
#define NM_PHASE2_AUTH_PAP			0x00010000
152
#define NM_PHASE2_AUTH_MSCHAP			0x00020000
153
#define NM_PHASE2_AUTH_MSCHAPV2		0x00030000
154
#define NM_PHASE2_AUTH_GTC			0x00040000
155
156
157
/*
137
 * Wireless network update types
158
 * Wireless network update types
138
 */
159
 */
139
typedef enum
160
typedef enum
(-)branches/NETWORKMANAGER_0_6_0_RELEASE/libnm-util/dbus-helpers.c (-28 / +37 lines)
Lines 259-273 Link Here
259
						  const char *ca_cert_file,
259
						  const char *ca_cert_file,
260
						  int wpa_version)
260
						  int wpa_version)
261
{
261
{
262
	dbus_int32_t	eap;
263
	dbus_int32_t	phase2;
264
262
	g_return_val_if_fail (iter != NULL, FALSE);
265
	g_return_val_if_fail (iter != NULL, FALSE);
263
	g_return_val_if_fail ((wpa_version == IW_AUTH_WPA_VERSION_WPA) || (wpa_version == IW_AUTH_WPA_VERSION_WPA2), FALSE);
266
	g_return_val_if_fail ((wpa_version == IW_AUTH_WPA_VERSION_WPA) || (wpa_version == IW_AUTH_WPA_VERSION_WPA2), FALSE);
264
	g_return_val_if_fail ((eap_method == NM_EAP_METHOD_MD5)
267
	eap = NM_EAP_TO_EAP_METHOD(eap_method);
265
				    || (eap_method == NM_EAP_METHOD_MSCHAP)
268
	g_return_val_if_fail ((eap == NM_EAP_METHOD_MD5)
266
				    || (eap_method == NM_EAP_METHOD_OTP)
269
				    || (eap == NM_EAP_METHOD_MSCHAP)
267
				    || (eap_method == NM_EAP_METHOD_GTC)
270
				    || (eap == NM_EAP_METHOD_OTP)
268
				    || (eap_method == NM_EAP_METHOD_PEAP)
271
				    || (eap == NM_EAP_METHOD_GTC)
269
				    || (eap_method == NM_EAP_METHOD_TLS)
272
				    || (eap == NM_EAP_METHOD_PEAP)
270
				    || (eap_method == NM_EAP_METHOD_TTLS), FALSE);
273
				    || (eap == NM_EAP_METHOD_TLS)
274
				    || (eap == NM_EAP_METHOD_TTLS), FALSE);
275
	phase2 = NM_EAP_TO_PHASE2_METHOD(eap_method);
276
	g_return_val_if_fail ((phase2 == NM_PHASE2_AUTH_NONE)
277
				    || (phase2 == NM_PHASE2_AUTH_PAP)
278
				    || (phase2 == NM_PHASE2_AUTH_MSCHAP)
279
				    || (phase2 == NM_PHASE2_AUTH_MSCHAPV2)
280
				    || (phase2 == NM_PHASE2_AUTH_GTC), FALSE);
271
	g_return_val_if_fail ((key_type == NM_AUTH_TYPE_WPA_PSK_AUTO)
281
	g_return_val_if_fail ((key_type == NM_AUTH_TYPE_WPA_PSK_AUTO)
272
				    || (key_type == IW_AUTH_CIPHER_CCMP)
282
				    || (key_type == IW_AUTH_CIPHER_CCMP)
273
				    || (key_type == IW_AUTH_CIPHER_TKIP)
283
				    || (key_type == IW_AUTH_CIPHER_TKIP)
Lines 323-346 Link Here
323
	dbus_bool_t	result;
333
	dbus_bool_t	result;
324
334
325
	g_return_val_if_fail (iter != NULL, FALSE);
335
	g_return_val_if_fail (iter != NULL, FALSE);
326
	g_return_val_if_fail ((wpa_version == IW_AUTH_WPA_VERSION_WPA) || (wpa_version == IW_AUTH_WPA_VERSION_WPA2), FALSE);
336
	/* validity of remaining arguments is checked in nmu_security_serialize_wpa_eap() which we call below */
327
	g_return_val_if_fail ((eap_method == NM_EAP_METHOD_MD5)
328
				    || (eap_method == NM_EAP_METHOD_MSCHAP)
329
				    || (eap_method == NM_EAP_METHOD_OTP)
330
				    || (eap_method == NM_EAP_METHOD_GTC)
331
				    || (eap_method == NM_EAP_METHOD_PEAP)
332
				    || (eap_method == NM_EAP_METHOD_TLS)
333
				    || (eap_method == NM_EAP_METHOD_TTLS), FALSE);
334
	g_return_val_if_fail ((key_type == NM_AUTH_TYPE_WPA_PSK_AUTO)
335
				    || (key_type == IW_AUTH_CIPHER_CCMP)
336
				    || (key_type == IW_AUTH_CIPHER_TKIP)
337
				    || (key_type == IW_AUTH_CIPHER_WEP104), FALSE);
338
337
339
	/* First arg: WE Cipher (INT32) */
338
	/* First arg: WE Cipher (INT32) */
340
	we_cipher_append_helper (iter, NM_AUTH_TYPE_WPA_EAP);
339
	we_cipher_append_helper (iter, NM_AUTH_TYPE_WPA_EAP);
341
340
342
	result = nmu_security_serialize_wpa_eap (iter, eap_method, key_type, identity, passwd, anon_identity, private_key_passwd,
341
	result = nmu_security_serialize_wpa_eap (iter, eap_method, key_type, identity, passwd, anon_identity,
343
									 private_key_file, client_cert_file, ca_cert_file, wpa_version);
342
									 private_key_passwd, private_key_file, client_cert_file, ca_cert_file, wpa_version);
344
343
345
	return result;
344
	return result;
346
}
345
}
Lines 370-375 Link Here
370
	char *		dbus_ca_cert_file;
369
	char *		dbus_ca_cert_file;
371
	dbus_int32_t	dbus_wpa_version;
370
	dbus_int32_t	dbus_wpa_version;
372
	dbus_int32_t	dbus_eap_method;
371
	dbus_int32_t	dbus_eap_method;
372
	dbus_int32_t	dbus_eap;
373
	dbus_int32_t	dbus_phase2;
373
	dbus_int32_t	dbus_key_type;
374
	dbus_int32_t	dbus_key_type;
374
375
375
	g_return_val_if_fail (iter != NULL, FALSE);
376
	g_return_val_if_fail (iter != NULL, FALSE);
Lines 392-406 Link Here
392
	g_return_val_if_fail (wpa_version != NULL, FALSE);
393
	g_return_val_if_fail (wpa_version != NULL, FALSE);
393
394
394
	/* Second arg: EAP method (INT32) */
395
	/* Second arg: EAP method (INT32) */
396
	/* Hack: this is really a bitfield of EAP method and phase2 method */
395
	g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_INT32, FALSE);
397
	g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_INT32, FALSE);
396
	dbus_message_iter_get_basic (iter, &dbus_eap_method);
398
	dbus_message_iter_get_basic (iter, &dbus_eap_method);
397
	g_return_val_if_fail ((dbus_eap_method == NM_EAP_METHOD_MD5)
399
	dbus_eap = NM_EAP_TO_EAP_METHOD(dbus_eap_method);
398
				    || (dbus_eap_method == NM_EAP_METHOD_MSCHAP)
400
	g_return_val_if_fail ((dbus_eap == NM_EAP_METHOD_MD5)
399
				    || (dbus_eap_method == NM_EAP_METHOD_OTP)
401
				    || (dbus_eap == NM_EAP_METHOD_MSCHAP)
400
				    || (dbus_eap_method == NM_EAP_METHOD_GTC)
402
				    || (dbus_eap == NM_EAP_METHOD_OTP)
401
				    || (dbus_eap_method == NM_EAP_METHOD_PEAP)
403
				    || (dbus_eap == NM_EAP_METHOD_GTC)
402
				    || (dbus_eap_method == NM_EAP_METHOD_TLS)
404
				    || (dbus_eap == NM_EAP_METHOD_PEAP)
403
				    || (dbus_eap_method == NM_EAP_METHOD_TTLS), FALSE);
405
				    || (dbus_eap == NM_EAP_METHOD_TLS)
406
				    || (dbus_eap == NM_EAP_METHOD_TTLS), FALSE);
407
	dbus_phase2 = NM_EAP_TO_PHASE2_METHOD(dbus_eap_method);
408
	g_return_val_if_fail ((dbus_phase2 == NM_PHASE2_AUTH_NONE)
409
				    || (dbus_phase2 == NM_PHASE2_AUTH_PAP)
410
				    || (dbus_phase2 == NM_PHASE2_AUTH_MSCHAP)
411
				    || (dbus_phase2 == NM_PHASE2_AUTH_MSCHAPV2)
412
				    || (dbus_phase2 == NM_PHASE2_AUTH_GTC), FALSE);
404
413
405
	/* Third arg: Key type (INT32) */
414
	/* Third arg: Key type (INT32) */
406
	g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
415
	g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
(-)branches/NETWORKMANAGER_0_6_0_RELEASE/src/nm-ap-security-wpa-eap.c (-2 / +35 lines)
Lines 38-43 Link Here
38
{
38
{
39
	int		eap_method;
39
	int		eap_method;
40
	int		key_type;
40
	int		key_type;
41
	int		phase2_type;
41
	int		wpa_version;
42
	int		wpa_version;
42
	int		key_mgmt;
43
	int		key_mgmt;
43
	char *	identity;
44
	char *	identity;
Lines 56-61 Link Here
56
	NMAPSecurityWPA_EAP *	security = NULL;
57
	NMAPSecurityWPA_EAP *	security = NULL;
57
	int					eap_method;
58
	int					eap_method;
58
	int					key_type;
59
	int					key_type;
60
	int					phase2_type;
59
	int					wpa_version;
61
	int					wpa_version;
60
	char *				identity = NULL;
62
	char *				identity = NULL;
61
	char *				passwd = NULL;
63
	char *				passwd = NULL;
Lines 77-84 Link Here
77
	nm_ap_security_set_we_cipher (NM_AP_SECURITY (security), NM_AUTH_TYPE_WPA_EAP);
79
	nm_ap_security_set_we_cipher (NM_AP_SECURITY (security), NM_AUTH_TYPE_WPA_EAP);
78
	if ((private_key_passwd && strlen (private_key_passwd) > 0) || (passwd && strlen (passwd) > 0))
80
	if ((private_key_passwd && strlen (private_key_passwd) > 0) || (passwd && strlen (passwd) > 0))
79
		nm_ap_security_set_key (NM_AP_SECURITY (security), "FIXME", 5);
81
		nm_ap_security_set_key (NM_AP_SECURITY (security), "FIXME", 5);
80
	security->priv->eap_method = eap_method;
81
	security->priv->key_type = key_type;
82
	security->priv->key_type = key_type;
83
	security->priv->eap_method = NM_EAP_TO_EAP_METHOD (eap_method);
84
	security->priv->phase2_type = NM_EAP_TO_PHASE2_METHOD (eap_method);
82
	security->priv->wpa_version = wpa_version;
85
	security->priv->wpa_version = wpa_version;
83
	security->priv->key_mgmt = IW_AUTH_KEY_MGMT_802_1X;
86
	security->priv->key_mgmt = IW_AUTH_KEY_MGMT_802_1X;
84
	security->priv->identity = g_strdup (identity);
87
	security->priv->identity = g_strdup (identity);
Lines 132-138 Link Here
132
	NMAPSecurityWPA_EAP * self = NM_AP_SECURITY_WPA_EAP (instance);
135
	NMAPSecurityWPA_EAP * self = NM_AP_SECURITY_WPA_EAP (instance);
133
136
134
	if (!nmu_security_serialize_wpa_eap (iter,
137
	if (!nmu_security_serialize_wpa_eap (iter,
135
			self->priv->eap_method,
138
			self->priv->eap_method |	self->priv->phase2_type,
136
			self->priv->key_type,
139
			self->priv->key_type,
137
			self->priv->identity ? : "",
140
			self->priv->identity ? : "",
138
			self->priv->passwd ? : "",
141
			self->priv->passwd ? : "",
Lines 185-190 Link Here
185
	int 				key_mgmt = self->priv->key_mgmt;
188
	int 				key_mgmt = self->priv->key_mgmt;
186
	int				eap_method = self->priv->eap_method;
189
	int				eap_method = self->priv->eap_method;
187
	int				key_type = self->priv->key_type;
190
	int				key_type = self->priv->key_type;
191
	int				phase2_type = self->priv->phase2_type;
188
192
189
	g_return_val_if_fail (nm_ap_security_get_we_cipher (instance) == NM_AUTH_TYPE_WPA_EAP, FALSE);
193
	g_return_val_if_fail (nm_ap_security_get_we_cipher (instance) == NM_AUTH_TYPE_WPA_EAP, FALSE);
190
	g_return_val_if_fail (key_mgmt == IW_AUTH_KEY_MGMT_802_1X, FALSE);
194
	g_return_val_if_fail (key_mgmt == IW_AUTH_KEY_MGMT_802_1X, FALSE);
Lines 201-206 Link Here
201
				    || (key_type == IW_AUTH_CIPHER_CCMP)
205
				    || (key_type == IW_AUTH_CIPHER_CCMP)
202
				    || (key_type == IW_AUTH_CIPHER_TKIP)
206
				    || (key_type == IW_AUTH_CIPHER_TKIP)
203
				    || (key_type == IW_AUTH_CIPHER_WEP104), FALSE);
207
				    || (key_type == IW_AUTH_CIPHER_WEP104), FALSE);
208
	g_return_val_if_fail ((phase2_type == NM_PHASE2_AUTH_NONE)
209
			         || (phase2_type == NM_PHASE2_AUTH_PAP)
210
				    || (phase2_type == NM_PHASE2_AUTH_MSCHAP)
211
				    || (phase2_type == NM_PHASE2_AUTH_MSCHAPV2)
212
				    || (phase2_type == NM_PHASE2_AUTH_GTC), FALSE);
204
213
205
	/* WPA-EAP network setup */
214
	/* WPA-EAP network setup */
206
215
Lines 227-232 Link Here
227
			goto out;
236
			goto out;
228
	}
237
	}
229
238
239
	/* phase2 options can be used with Dynamic WEP, WPA-EAP-TTLS, WPA-EAP-PEAP */
240
	/* do nothing if phase2 == NM_PHASE2_AUTH_NONE */
241
	if (phase2_type == NM_PHASE2_AUTH_PAP)
242
	{
243
		if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i phase2 \"auth=PAP\"", nwid))
244
			goto out;
245
	}
246
	if (phase2_type == NM_PHASE2_AUTH_MSCHAP)
247
	{
248
		if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i phase2 \"auth=MSCHAP\"", nwid))
249
			goto out;
250
	}
251
	if (phase2_type == NM_PHASE2_AUTH_MSCHAPV2)
252
	{
253
		if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i phase2 \"auth=MSCHAPV2\"", nwid))
254
			goto out;
255
	}
256
	if (phase2_type == NM_PHASE2_AUTH_GTC)
257
	{
258
		if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i phase2 \"auth=GTC\"", nwid))
259
			goto out;
260
	}
261
230
	if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i eap %s", nwid, get_eap_method (eap_method)))
262
	if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i eap %s", nwid, get_eap_method (eap_method)))
231
		goto out;
263
		goto out;
232
264
Lines 336-341 Link Here
336
368
337
	dst->priv->eap_method = self->priv->eap_method;
369
	dst->priv->eap_method = self->priv->eap_method;
338
	dst->priv->key_type = self->priv->key_type;
370
	dst->priv->key_type = self->priv->key_type;
371
	dst->priv->phase2_type = self->priv->phase2_type;
339
	dst->priv->wpa_version = self->priv->wpa_version;
372
	dst->priv->wpa_version = self->priv->wpa_version;
340
	dst->priv->key_mgmt = self->priv->key_mgmt;
373
	dst->priv->key_mgmt = self->priv->key_mgmt;
341
	dst->priv->identity = g_strdup (self->priv->identity);
374
	dst->priv->identity = g_strdup (self->priv->identity);

Return to bug 216063