Added debug_timestamp option to Windows registry
[wpasupplicant] / wpa_supplicant / wpa_gui-qt4 / networkconfig.cpp
index 44d70d4..f17475e 100644 (file)
@@ -283,6 +283,8 @@ void NetworkConfig::addNetwork()
                setNetworkParam(id, "eap", eap, false);
                if (strcmp(eap, "SIM") == 0 || strcmp(eap, "AKA") == 0)
                        setNetworkParam(id, "pcsc", "", true);
+               else
+                       setNetworkParam(id, "pcsc", "NULL", false);
        }
        if (phase2Select->isEnabled()) {
                QString eap = eapSelect->currentText();
@@ -303,32 +305,53 @@ void NetworkConfig::addNetwork()
                                snprintf(phase2, sizeof(phase2), "auth=%s",
                                         inner.toAscii().constData());
                } else if (eap.compare("FAST") == 0) {
-                       if (inner.startsWith("EAP-"))
+                       char *provisioning = NULL;
+                       if (inner.startsWith("EAP-")) {
                                snprintf(phase2, sizeof(phase2), "auth=%s",
                                         inner.right(inner.size() - 4).
                                         toAscii().constData());
-                       else if (inner.compare("GTC(auth) + MSCHAPv2(prov)") ==
-                                0) {
+                               provisioning = "fast_provisioning=2";
+                       } else if (inner.compare("GTC(auth) + MSCHAPv2(prov)")
+                                  == 0) {
                                snprintf(phase2, sizeof(phase2),
-                                        "auth=GTC MSCHAPV2");
+                                        "auth=GTC auth=MSCHAPV2");
+                               provisioning = "fast_provisioning=1";
+                       }
+                       if (provisioning) {
+                               char blob[32];
+                               setNetworkParam(id, "phase1", provisioning,
+                                               true);
+                               snprintf(blob, sizeof(blob),
+                                        "blob://fast-pac-%d", id);
+                               setNetworkParam(id, "pac_file", blob, true);
                        }
                }
-               setNetworkParam(id, "phase2", phase2, true);
-       }
-       if (identityEdit->isEnabled())
+               if (phase2[0])
+                       setNetworkParam(id, "phase2", phase2, true);
+               else
+                       setNetworkParam(id, "phase2", "NULL", false);
+       } else
+               setNetworkParam(id, "phase2", "NULL", false);
+       if (identityEdit->isEnabled() && identityEdit->text().length() > 0)
                setNetworkParam(id, "identity",
                                identityEdit->text().toAscii().constData(),
                                true);
-       if (passwordEdit->isEnabled() &&
+       else
+               setNetworkParam(id, "identity", "NULL", false);
+       if (passwordEdit->isEnabled() && passwordEdit->text().length() > 0 &&
            strcmp(passwordEdit->text().toAscii().constData(),
                   WPA_GUI_KEY_DATA) != 0)
                setNetworkParam(id, "password",
                                passwordEdit->text().toAscii().constData(),
                                true);
-       if (cacertEdit->isEnabled())
+       else if (passwordEdit->text().length() == 0)
+               setNetworkParam(id, "password", "NULL", false);
+       if (cacertEdit->isEnabled() && cacertEdit->text().length() > 0)
                setNetworkParam(id, "ca_cert",
                                cacertEdit->text().toAscii().constData(),
                                true);
+       else
+               setNetworkParam(id, "ca_cert", "NULL", false);
        writeWepKey(id, wep0Edit, 0);
        writeWepKey(id, wep1Edit, 1);
        writeWepKey(id, wep2Edit, 2);
@@ -343,10 +366,12 @@ void NetworkConfig::addNetwork()
        else if (wep3Radio->isEnabled() && wep3Radio->isChecked())
                setNetworkParam(id, "wep_tx_keyidx", "3", false);
 
-       if (idstrEdit->isEnabled())
+       if (idstrEdit->isEnabled() && idstrEdit->text().length() > 0)
                setNetworkParam(id, "id_str",
                                idstrEdit->text().toAscii().constData(),
                                true);
+       else
+               setNetworkParam(id, "id_str", "NULL", false);
 
        if (prioritySpinBox->isEnabled()) {
                QString prio;
@@ -618,7 +643,7 @@ void NetworkConfig::paramsFromConfig(int network_id)
        case FAST_INNER:
                if (strncmp(reply, "\"auth=", 6))
                        break;
-               if (strcmp(reply + 6, "GTC MSCHAPV2") == 0) {
+               if (strcmp(reply + 6, "GTC auth=MSCHAPV2") == 0) {
                        val = "GTC(auth) + MSCHAPv2(prov)";
                        break;
                }