summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRubin Xu <rubinxu@google.com>2016-06-14 15:58:25 +0100
committerRubin Xu <rubinxu@google.com>2016-06-16 14:14:24 +0100
commit89703ddeb050ce3f7163948574e1152fbd949ff7 (patch)
tree57d542a0595868c76e034c9ae02c26000841c438
parente1ab94c0a5d45b6016127ac9edf53bfcb39b6dd2 (diff)
downloadandroid_packages_apps_CertInstaller-cm-14.0.tar.gz
android_packages_apps_CertInstaller-cm-14.0.tar.bz2
android_packages_apps_CertInstaller-cm-14.0.zip
Skip non KeyEntry from PKCS12 file during extraction.staging/cm-14.0cm-14.0
Change-Id: I76880fc3a39c092cfc007450f59c477a2bdaf48e Fix: 29315994
-rw-r--r--src/com/android/certinstaller/CredentialHelper.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/com/android/certinstaller/CredentialHelper.java b/src/com/android/certinstaller/CredentialHelper.java
index 3285a36..6c1efba 100644
--- a/src/com/android/certinstaller/CredentialHelper.java
+++ b/src/com/android/certinstaller/CredentialHelper.java
@@ -370,14 +370,21 @@ class CredentialHelper {
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
- KeyStore.Entry entry = keystore.getEntry(alias, password);
- Log.d(TAG, "extracted alias = " + alias + ", entry=" + entry.getClass());
-
- if (entry instanceof PrivateKeyEntry) {
- if (TextUtils.isEmpty(mName)) {
- mName = alias;
+ if (keystore.isKeyEntry(alias)) {
+ KeyStore.Entry entry = keystore.getEntry(alias, password);
+ Log.d(TAG, "extracted alias = " + alias + ", entry=" + entry.getClass());
+
+ if (entry instanceof PrivateKeyEntry) {
+ if (TextUtils.isEmpty(mName)) {
+ mName = alias;
+ }
+ return installFrom((PrivateKeyEntry) entry);
}
- return installFrom((PrivateKeyEntry) entry);
+ } else {
+ // KeyStore.getEntry with non-null ProtectionParameter can only be invoked on
+ // PrivateKeyEntry or SecretKeyEntry.
+ // See https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html
+ Log.d(TAG, "Skip non-key entry, alias = " + alias);
}
}
return true;