summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-09-16 16:43:27 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-09-20 15:14:17 +0200
commitaddd2af53753a3062ff02c4316045ee3cde5f292 (patch)
tree82e200125458ad00def9272843f29960c4078097 /plugins
parent711ca31591cdda88fb5045c831b03e666f1e6c18 (diff)
downloadconnman-addd2af53753a3062ff02c4316045ee3cde5f292.tar.gz
connman-addd2af53753a3062ff02c4316045ee3cde5f292.tar.bz2
connman-addd2af53753a3062ff02c4316045ee3cde5f292.zip
WPA-EAP support for GSupplicant
Diffstat (limited to 'plugins')
-rw-r--r--plugins/wifi.c47
1 files changed, 39 insertions, 8 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 4cde53ec..f8bd87e4 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -538,13 +538,50 @@ static GSupplicantSecurity network_security(const char *security)
return G_SUPPLICANT_SECURITY_UNKNOWN;
}
+static void ssid_init(GSupplicantSSID *ssid, struct connman_network *network)
+{
+ const char *security;
+
+ memset(ssid, 0, sizeof(*ssid));
+ ssid->ssid = connman_network_get_blob(network, "WiFi.SSID",
+ &ssid->ssid_len);
+ security = connman_network_get_string(network, "WiFi.Security");
+ ssid->security = network_security(security);
+ ssid->passphrase = connman_network_get_string(network,
+ "WiFi.Passphrase");
+ ssid->eap = connman_network_get_string(network, "WiFi.EAP");
+
+ /*
+ * If our private key password is unset,
+ * we use the supplied passphrase. That is needed
+ * for PEAP where 2 passphrases (identity and client
+ * cert may have to be provided.
+ */
+ if (connman_network_get_string(network,
+ "WiFi.PrivateKeyPassphrase") == NULL)
+ connman_network_set_string(network,
+ "WiFi.PrivateKeyPassphrase",
+ ssid->passphrase);
+ /* We must have an identity for both PEAP and TLS */
+ ssid->identity = connman_network_get_string(network, "WiFi.Identity");
+ ssid->ca_cert_path = connman_network_get_string(network,
+ "WiFi.CACertFile");
+ ssid->client_cert_path = connman_network_get_string(network,
+ "WiFi.ClientCertFile");
+ ssid->private_key_path = connman_network_get_string(network,
+ "WiFi.PrivateKeyFile");
+ ssid->private_key_passphrase = connman_network_get_string(network,
+ "WiFi.PrivateKeyPassphrase");
+ ssid->phase2_auth = connman_network_get_string(network, "WiFi.Phase2");
+
+}
+
static int network_connect(struct connman_network *network)
{
struct connman_device *device = connman_network_get_device(network);
struct wifi_data *wifi;
GSupplicantInterface *interface;
GSupplicantSSID ssid;
- const char *security;
DBG("network %p", network);
@@ -557,13 +594,7 @@ static int network_connect(struct connman_network *network)
interface = wifi->interface;
- memset(&ssid, 0, sizeof(ssid));
- ssid.ssid = connman_network_get_blob(network, "WiFi.SSID",
- &ssid.ssid_len);
- security = connman_network_get_string(network, "WiFi.Security");
- ssid.security = network_security(security);
- ssid.passphrase = connman_network_get_string(network,
- "WiFi.Passphrase");
+ ssid_init(&ssid, network);
wifi->network = connman_network_ref(network);