summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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) {