summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2021-06-21 05:49:09 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-06-21 05:49:09 +0000
commitb6727a8d6435d2e566c302c0ab33f5057f7a9013 (patch)
treef621e99f822953e06f9424865254a143ccf5712b
parentb9dbbb282693d99c290adfa2214ebd9ddec8de49 (diff)
parentf23cb8bc6243374fe27db6146cb4019de2ed0d2a (diff)
downloadCertInstaller-b6727a8d6435d2e566c302c0ab33f5057f7a9013.tar.gz
Merge "DO NOT MERGE - Merge RQ3A.210605.005"
-rw-r--r--res/values-es/strings.xml2
-rw-r--r--res/values-fr-rCA/strings.xml2
-rw-r--r--res/values-mk/strings.xml6
-rw-r--r--res/values-ne/strings.xml2
-rw-r--r--src/com/android/certinstaller/WiFiInstaller.java76
5 files changed, 59 insertions, 29 deletions
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d0f20e8..dd95ee2 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -74,7 +74,7 @@
<string name="wifi_cancel_label" msgid="1328748037608392134">"Cancelar"</string>
<string name="wifi_dismiss_label" msgid="1916684434873972698">"Cerrar"</string>
<string name="wifi_no_config" msgid="1835743123288916755">"Ninguna"</string>
- <string name="wifi_config_text" msgid="8259587306773310314">"Nombre: %1$s\nFQDN: %2$s\nConsorcios de roaming: %3$s\nDominio: %4$s\nMétodo de autenticación: EAP-%5$s\n"</string>
+ <string name="wifi_config_text" msgid="8259587306773310314">"Nombre: %1$s\nFQDN: %2$s\nConsorcios de itinerancia: %3$s\nDominio: %4$s\nMétodo de autenticación: EAP-%5$s\n"</string>
<string name="wifi_ttls_config_text" msgid="2002413183253872168">"Nombre de usuario: %s\n"</string>
<string name="wifi_tls_config_text" msgid="9062328536640168510">"Certificado de cliente:\n%1$s\nClave: %2$s\n"</string>
<string name="wifi_sim_config_text" msgid="1666019954520831840">"SIM: %s\n"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 257159e..d2710cf 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -35,7 +35,7 @@
<string name="password_empty_error" msgid="591713406761723025">"Veuillez saisir le mot de passe."</string>
<string name="name_empty_error" msgid="3808800768660110354">"Veuillez saisir un nom."</string>
<string name="name_char_error" msgid="3176618568784938968">"Veuillez saisir un nom ne contenant que des lettres et des chiffres."</string>
- <string name="unable_to_save_cert" msgid="9178604087335389686">"Impossible d\'enregistrer le certificat. Le stockage des authentifiants n\'est pas activé, ou il n\'est pas initialisé correctement."</string>
+ <string name="unable_to_save_cert" msgid="9178604087335389686">"Impossible d\'enregistrer le certificat. Le stockage des identifiants n\'est pas activé, ou il n\'est pas initialisé correctement."</string>
<string name="cert_not_saved" msgid="4037698479662830270">"Le certificat n\'est pas installé."</string>
<string name="no_cert_to_saved" msgid="5708884372817309068">"Aucun certificat à installer."</string>
<string name="invalid_cert" msgid="7704228670980743590">"Le certificat est incorrect."</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index f85e403..afab15d 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -30,7 +30,7 @@
<string name="userkey_type" msgid="6214833257030657106">"Алгоритам:"</string>
<string name="one_usercrt" msgid="7690798336332403106">"еден сертификат на корисник"</string>
<string name="one_cacrt" msgid="2667950425420663146">"еден CA сертификат"</string>
- <string name="n_cacrts" msgid="2141498640685639208">"%d CA-сертификати"</string>
+ <string name="n_cacrts" msgid="2141498640685639208">"%d CA сертификати"</string>
<string name="password_error" msgid="2042471639556516356">"Внеси ја точната лозинка."</string>
<string name="password_empty_error" msgid="591713406761723025">"Внеси ја лозинката."</string>
<string name="name_empty_error" msgid="3808800768660110354">"Напиши име."</string>
@@ -49,10 +49,10 @@
<string name="invalid_certificate_close_button" msgid="350986774973653102">"Затвори"</string>
<string name="invalid_certificate_message" msgid="3508065546083182733">"Датотекава не може да се користи како <xliff:g id="CERTIFICATE_USAGE">%1$s</xliff:g>"</string>
<string name="certificate" msgid="8790577925509962529">"Сертификат"</string>
- <string name="ca_certificate" msgid="7397198551290322945">"CA-сертификат"</string>
+ <string name="ca_certificate" msgid="7397198551290322945">"Сертификат CA"</string>
<string name="user_certificate" msgid="514888069820553128">"Кориснички сертификат за VPN и апликации"</string>
<string name="wifi_certificate" msgid="5356595832360140989">"Сертификат за Wi‑Fi"</string>
- <string name="ca_cert_is_added" msgid="2847081843756291802">"Инсталиран е CA-сертификат"</string>
+ <string name="ca_cert_is_added" msgid="2847081843756291802">"Сертификат CA е инсталиран"</string>
<string name="user_cert_is_added" msgid="3088794616560630823">"Корисничкиот сертификат е инсталиран"</string>
<string name="wifi_cert_is_added" msgid="333220613655140428">"Сертификатот за Wi‑Fi е инсталиран"</string>
<string name="cert_too_large_error" msgid="8715414972725646285">"Не може да се инсталира зашто сертификатот е преголем."</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index c650668..ce01324 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -59,7 +59,7 @@
<string name="cert_missing_error" msgid="7040527352278728220">"स्थापना गर्न सकेन किनभने प्रमाणपत्र फाइल पत्ता लगाउन सकिएन।"</string>
<string name="cert_read_error" msgid="7353463360652419796">"स्थापना गर्न सकिएन किनभने प्रमाणपत्र फाइल पढ्न सकेन।"</string>
<string name="cert_temp_error" msgid="617276803992714550">"अस्थायी विफलता। कृपया पछि फेरि प्रयास गर्नुहोस्।"</string>
- <string name="only_primary_user_allowed" msgid="4005084935023047716">"यो उपकरणको मालिकले मात्र सर्टिफिकेट इन्स्टल गर्न सक्छ।"</string>
+ <string name="only_primary_user_allowed" msgid="4005084935023047716">"यो उपकरणको मालिकले मात्र प्रमाणपत्रहरू स्थापना गर्न सक्छ।"</string>
<string name="credential_usage_label" msgid="1513892208033156805">"प्रमाणपत्रको प्रयोग:"</string>
<string-array name="credential_usage">
<item msgid="375085478373011304">"VPN र एपहरू"</item>
diff --git a/src/com/android/certinstaller/WiFiInstaller.java b/src/com/android/certinstaller/WiFiInstaller.java
index 41827f6..ad03eca 100644
--- a/src/com/android/certinstaller/WiFiInstaller.java
+++ b/src/com/android/certinstaller/WiFiInstaller.java
@@ -1,5 +1,7 @@
package com.android.certinstaller;
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
@@ -13,6 +15,8 @@ import android.net.wifi.hotspot2.PasspointConfiguration;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.DocumentsContract;
+import android.text.TextUtils;
+import android.util.EventLog;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -26,18 +30,24 @@ public class WiFiInstaller extends Activity {
private static final String TAG = "WifiInstaller";
private static final String NETWORK_NAME = "network_name";
private static final String INSTALL_STATE = "install_state";
+ private static final String TYPE_WIFI_CONFIG = "application/x-wifi-config";
public static final int INSTALL_SUCCESS = 2;
public static final int INSTALL_FAIL = 1;
public static final int INSTALL_FAIL_NO_WIFI = 0;
- PasspointConfiguration mPasspointConfig;
- WifiManager mWifiManager;
- boolean doNotInstall;
+ private PasspointConfiguration mPasspointConfig;
+ private boolean mIsPasspointConfigurationValid;
@Override
protected void onCreate(Bundle savedStates) {
super.onCreate(savedStates);
+ getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+ mIsPasspointConfigurationValid = false;
Bundle bundle = getIntent().getExtras();
+ if (bundle == null) {
+ Log.e(TAG, "Invalid inputs");
+ return;
+ }
String uriString = bundle.getString(CertInstallerMain.WIFI_CONFIG_FILE);
String mimeType = bundle.getString(CertInstallerMain.WIFI_CONFIG);
byte[] data = bundle.getByteArray(CertInstallerMain.WIFI_CONFIG_DATA);
@@ -45,17 +55,34 @@ public class WiFiInstaller extends Activity {
Log.d(TAG, "WiFi data for " + CertInstallerMain.WIFI_CONFIG + ": " +
mimeType + " is " + (data != null ? data.length : "-"));
- mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data);
- dropFile(Uri.parse(uriString), getApplicationContext());
+ // Make sure that the input is valid
+ if (data == null || data.length == 0 || TextUtils.isEmpty(uriString)) {
+ Log.e(TAG, "Invalid inputs");
+ return;
+ }
+
+ // Verify MIME type before parsing
+ if (!TextUtils.equals(mimeType, TYPE_WIFI_CONFIG)) {
+ Log.e(TAG, "Unexpected MIME type: " + mimeType);
+ EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid mime-type");
+ return;
+ }
+ mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data);
if (mPasspointConfig == null) {
- Log.w(TAG, "failed to build passpoint configuration");
- doNotInstall = true;
- } else if (mPasspointConfig.getHomeSp() == null) {
- Log.w(TAG, "Passpoint profile missing HomeSP information");
- doNotInstall = true;
+ Log.e(TAG, "Failed to build Passpoint configuration");
+ EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid data in file "
+ + uriString);
+ return;
+ }
+ if (mPasspointConfig.getHomeSp() == null) {
+ Log.e(TAG, "Passpoint profile missing HomeSP information");
+ } else {
+ // Passpoint configuration parsed successfully and valid. Mark to be installed.
+ mIsPasspointConfigurationValid = true;
}
+ // Delete the file only if the Passpoint configuration was parsed successfully
+ dropFile(Uri.parse(uriString), getApplicationContext());
}
@Override
@@ -75,7 +102,8 @@ public class WiFiInstaller extends Activity {
builder.setView(layout);
TextView text = (TextView) layout.findViewById(R.id.wifi_info);
- if (!doNotInstall) {
+ if (mIsPasspointConfigurationValid) {
+ WifiManager wifiManager = getSystemService(WifiManager.class);
text.setText(String.format(getResources().getString(R.string.wifi_installer_detail),
mPasspointConfig.getHomeSp().getFriendlyName()));
@@ -93,14 +121,14 @@ public class WiFiInstaller extends Activity {
public void run() {
boolean success = true;
try {
- mWifiManager.removePasspointConfiguration(
+ wifiManager.removePasspointConfiguration(
mPasspointConfig.getHomeSp().getFqdn());
} catch (IllegalArgumentException e) {
// Do nothing. This is expected if a profile with this FQDN does not
// exist.
}
try {
- mWifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig);
+ wifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig);
} catch (RuntimeException rte) {
Log.w(TAG, "Caught exception while installing wifi config: " +
rte, rte);
@@ -144,7 +172,9 @@ public class WiFiInstaller extends Activity {
}
});
}
- builder.create().show();
+ final AlertDialog alertDialog = builder.create();
+ alertDialog.show();
+ alertDialog.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
}
/**
@@ -154,14 +184,14 @@ public class WiFiInstaller extends Activity {
* @param context The context of the current application
*/
private static void dropFile(Uri uri, Context context) {
- try {
- if (DocumentsContract.isDocumentUri(context, uri)) {
- DocumentsContract.deleteDocument(context.getContentResolver(), uri);
- } else {
- context.getContentResolver().delete(uri, null, null);
+ try {
+ if (DocumentsContract.isDocumentUri(context, uri)) {
+ DocumentsContract.deleteDocument(context.getContentResolver(), uri);
+ } else {
+ context.getContentResolver().delete(uri, null, null);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "could not delete document " + uri);
}
- } catch (Exception e) {
- Log.e(TAG, "could not delete document " + uri);
- }
}
}