summaryrefslogtreecommitdiff
path: root/keystore/java
diff options
context:
space:
mode:
authorJanis Danisevskis <jdanis@google.com>2021-05-12 08:39:52 -0700
committerJanis Danisevskis <jdanis@google.com>2021-05-12 17:29:26 -0700
commit738e422b00b14b4959de4654db4edd20b786b18f (patch)
tree971604c5576f2ccc04892eee403adcb1a5b11ef4 /keystore/java
parent919e8c1ba3417c11087c5e1a243359c8f9416ce6 (diff)
Keystore 2.0 SPI: Fix NPE in getUniqueAliases.
getUniqueAliases may return a null if an error occurred. This would lead to a NPE in engineAliases. This patch makes getUniqueAliases return an empty HashSet instead. Test: atest KeystoreTests Change-Id: I387d90ea851a8b9c18bb2b20d1a0bfc1ab76c99f
Diffstat (limited to 'keystore/java')
-rw-r--r--keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
index 3e2fb94f0387..f3cfcf18dec1 100644
--- a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
@@ -41,6 +41,8 @@ import android.system.keystore2.KeyMetadata;
import android.system.keystore2.ResponseCode;
import android.util.Log;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -974,7 +976,6 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi {
}
private Set<String> getUniqueAliases() {
-
try {
final KeyDescriptor[] keys = mKeyStore.list(
getTargetDomain(),
@@ -987,7 +988,7 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi {
return aliases;
} catch (android.security.KeyStoreException e) {
Log.e(TAG, "Failed to list keystore entries.", e);
- return null;
+ return new HashSet<>();
}
}
@@ -1099,6 +1100,17 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi {
return caAlias;
}
+ /**
+ * Used by Tests to initialize with a fake KeyStore2.
+ * @hide
+ * @param keystore
+ */
+ @VisibleForTesting
+ public void initForTesting(KeyStore2 keystore) {
+ mKeyStore = keystore;
+ mNamespace = KeyProperties.NAMESPACE_APPLICATION;
+ }
+
@Override
public void engineStore(OutputStream stream, char[] password) throws IOException,
NoSuchAlgorithmException, CertificateException {