diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-09-16 16:43:27 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-09-20 15:14:17 +0200 |
commit | addd2af53753a3062ff02c4316045ee3cde5f292 (patch) | |
tree | 82e200125458ad00def9272843f29960c4078097 /plugins | |
parent | 711ca31591cdda88fb5045c831b03e666f1e6c18 (diff) | |
download | connman-addd2af53753a3062ff02c4316045ee3cde5f292.tar.gz connman-addd2af53753a3062ff02c4316045ee3cde5f292.tar.bz2 connman-addd2af53753a3062ff02c4316045ee3cde5f292.zip |
WPA-EAP support for GSupplicant
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/wifi.c | 47 |
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); |