summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHu Wang <huw@codeaurora.org>2014-10-28 14:26:39 +0800
committerDiogo Ferreira <diogo@underdev.org>2015-03-04 10:59:07 +0000
commitabbd4d6280d843b59cb9eb041387881517b5c9cd (patch)
tree4b23070ef2e8b56a4c0df2924a2db8c95991015d
parentb534aca3bf7eea5661f8c16036e9ca503be1191b (diff)
downloadandroid_packages_apps_CertInstaller-stable/cm-11.0-XNG3C.tar.gz
android_packages_apps_CertInstaller-stable/cm-11.0-XNG3C.tar.bz2
android_packages_apps_CertInstaller-stable/cm-11.0-XNG3C.zip
CertInstaller: Handle Java RuntimeException in CertInstaller.stable/cm-11.0-XNG3Cstable/cm-11.0-XNG2S
If a WAPI cert passed to CertInstaller, then ssl_lib will treate it as x509 cert, which will result in parse error. To avoid Java RuntimeException, handle this error in CertInstaller, and make a hint to user that cert is invalid. Change-Id: I222b9b8248fa474d37974f7a99a2026e15e35d2d CRs-Fixed: 746711
-rwxr-xr-x[-rw-r--r--]src/com/android/certinstaller/CertInstaller.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/com/android/certinstaller/CertInstaller.java b/src/com/android/certinstaller/CertInstaller.java
index 907646e..4e63c35 100644..100755
--- a/src/com/android/certinstaller/CertInstaller.java
+++ b/src/com/android/certinstaller/CertInstaller.java
@@ -44,6 +44,7 @@ import java.io.Serializable;
import java.security.cert.X509Certificate;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.lang.RuntimeException;
/**
* Installs certificates to the system keystore.
@@ -227,8 +228,19 @@ public class CertInstaller extends Activity {
} else {
X509Certificate cert = mCredentials.getUserCertificate();
if (cert != null) {
- // find matched private key
- String key = Util.toMd5(cert.getPublicKey().getEncoded());
+ String key = null;
+ try {
+ /* If a WAPI cert passed to it, then cert.geyPublicKey()
+ * will result in a RuntimeException.
+ * Handle this error and make a hint to user that cert is
+ * invalid.
+ */
+ key = Util.toMd5(cert.getPublicKey().getEncoded());
+ } catch (RuntimeException ex) {
+ toastErrorAndFinish(R.string.invalid_cert);
+ return;
+ }
+
Map<String, byte[]> map = getPkeyMap();
byte[] privatekey = map.get(key);
if (privatekey != null) {