am 074dc2eb: Merge "Don\'t restore EAP-TLS networks from backup" into klp-dev

* commit '074dc2eb2da23976bc2916cfe7c61dfcd9977e8f':
  Don't restore EAP-TLS networks from backup
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 344446f..7b09092 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -137,6 +137,7 @@
     static class Network {
         String ssid = "";  // equals() and hashCode() need these to be non-null
         String key_mgmt = "";
+        boolean certUsed = false;
         final ArrayList<String> rawLines = new ArrayList<String>();
 
         public static Network readFromStream(BufferedReader in) {
@@ -167,6 +168,12 @@
                 ssid = line;
             } else if (line.startsWith("key_mgmt")) {
                 key_mgmt = line;
+            } else if (line.startsWith("client_cert=")) {
+                certUsed = true;
+            } else if (line.startsWith("ca_cert=")) {
+                certUsed = true;
+            } else if (line.startsWith("ca_path=")) {
+                certUsed = true;
             }
         }
 
@@ -246,6 +253,13 @@
 
         public void write(Writer w) throws IOException {
             for (Network net : mNetworks) {
+                if (net.certUsed) {
+                    // Networks that use certificates for authentication can't be restored
+                    // because the certificates they need don't get restored (because they
+                    // are stored in keystore, and can't be restored)
+                    continue;
+                }
+
                 net.write(w);
             }
         }