summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Klyubin <klyubin@google.com>2015-04-14 19:00:35 -0700
committerAlex Klyubin <klyubin@google.com>2015-04-14 19:02:46 -0700
commit5eacd777fedcc73529e2c930dc9f53ca7cf381de (patch)
tree69636ba60c924465fce84aadd725941fe75e9985
parent82992b7270842637d1af3dcc7c9ae954bdfa312c (diff)
downloadframeworks_base-5eacd777fedcc73529e2c930dc9f53ca7cf381de.zip
frameworks_base-5eacd777fedcc73529e2c930dc9f53ca7cf381de.tar.gz
frameworks_base-5eacd777fedcc73529e2c930dc9f53ca7cf381de.tar.bz2
Unbreak obtaining symmetric keys from AndroidKeyStore.
This tracks 59f977c6988e21b3b8aa6c83428bd6ee1a98816d due to which AndroidKeyStore is unable to provide symmetric keys because it assumes that the digest field is not repeating. Bug: 18088752 Change-Id: Ie8ed01449280b7c759e81aeaf2066953b0abaf2a
-rw-r--r--keystore/java/android/security/AndroidKeyStore.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/keystore/java/android/security/AndroidKeyStore.java b/keystore/java/android/security/AndroidKeyStore.java
index fcee9fc..964fb21 100644
--- a/keystore/java/android/security/AndroidKeyStore.java
+++ b/keystore/java/android/security/AndroidKeyStore.java
@@ -55,6 +55,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import javax.crypto.SecretKey;
@@ -116,11 +117,15 @@ public class AndroidKeyStore extends KeyStoreSpi {
throw new UnrecoverableKeyException("Key algorithm unknown");
}
- int keymasterDigest =
- keyCharacteristics.hwEnforced.getInt(KeymasterDefs.KM_TAG_DIGEST, -1);
- if (keymasterDigest == -1) {
- keymasterDigest =
- keyCharacteristics.swEnforced.getInt(KeymasterDefs.KM_TAG_DIGEST, -1);
+ List<Integer> keymasterDigests =
+ keyCharacteristics.getInts(KeymasterDefs.KM_TAG_DIGEST);
+ int keymasterDigest;
+ if (keymasterDigests.isEmpty()) {
+ keymasterDigest = -1;
+ } else {
+ // More than one digest can be permitted for this key. Use the first one to form the
+ // JCA key algorithm name.
+ keymasterDigest = keymasterDigests.get(0);
}
String keyAlgorithmString;