diff options
author | Hu Wang <huw@codeaurora.org> | 2014-10-28 14:26:39 +0800 |
---|---|---|
committer | Diogo Ferreira <diogo@underdev.org> | 2015-03-04 10:59:07 +0000 |
commit | abbd4d6280d843b59cb9eb041387881517b5c9cd (patch) | |
tree | 4b23070ef2e8b56a4c0df2924a2db8c95991015d | |
parent | b534aca3bf7eea5661f8c16036e9ca503be1191b (diff) | |
download | android_packages_apps_CertInstaller-stable/cm-11.0-XNG2S.tar.gz android_packages_apps_CertInstaller-stable/cm-11.0-XNG2S.tar.bz2 android_packages_apps_CertInstaller-stable/cm-11.0-XNG2S.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.java | 16 |
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) { |