diff options
author | Rubin Xu <rubinxu@google.com> | 2016-06-14 15:58:25 +0100 |
---|---|---|
committer | Rubin Xu <rubinxu@google.com> | 2016-06-16 14:14:24 +0100 |
commit | 89703ddeb050ce3f7163948574e1152fbd949ff7 (patch) | |
tree | 57d542a0595868c76e034c9ae02c26000841c438 | |
parent | e1ab94c0a5d45b6016127ac9edf53bfcb39b6dd2 (diff) | |
download | android_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.java | 21 |
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; |