Added preliminary Wi-Fi Protected Setup (WPS) implementation
[mech_eap.git] / wpa_supplicant / config_file.c
index fa39f64..3153214 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * WPA Supplicant / Configuration backend: text file
- * Copyright (c) 2003-2007, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -104,7 +104,8 @@ static int wpa_config_validate_network(struct wpa_ssid *ssid, int line)
                wpa_config_update_psk(ssid);
        }
 
-       if ((ssid->key_mgmt & (WPA_KEY_MGMT_PSK | WPA_KEY_MGMT_FT_PSK)) &&
+       if ((ssid->key_mgmt & (WPA_KEY_MGMT_PSK | WPA_KEY_MGMT_FT_PSK |
+                              WPA_KEY_MGMT_PSK_SHA256)) &&
            !ssid->psk_set) {
                wpa_printf(MSG_ERROR, "Line %d: WPA-PSK accepted for key "
                           "management, but no PSK configured.", line);
@@ -754,7 +755,15 @@ static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid)
        STR(pin);
        STR(engine_id);
        STR(key_id);
+       STR(cert_id);
+       STR(ca_cert_id);
+       STR(key2_id);
+       STR(pin2);
+       STR(engine2_id);
+       STR(cert2_id);
+       STR(ca_cert2_id);
        INTe(engine);
+       INTe(engine2);
        INT_DEF(eapol_flags, DEFAULT_EAPOL_FLAGS);
 #endif /* IEEE8021X_EAPOL */
        for (i = 0; i < 4; i++)
@@ -862,6 +871,8 @@ int wpa_config_write(const char *name, struct wpa_config *config)
        wpa_config_write_global(f, config);
 
        for (ssid = config->ssid; ssid; ssid = ssid->next) {
+               if (ssid->key_mgmt == WPA_KEY_MGMT_WPS)
+                       continue; /* do not save temporary WPS networks */
                fprintf(f, "\nnetwork={\n");
                wpa_config_write_network(f, ssid);
                fprintf(f, "}\n");