summaryrefslogtreecommitdiffstats
path: root/core/java/android/security
diff options
context:
space:
mode:
authorChad Brubaker <cbrubaker@google.com>2015-04-16 22:42:38 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-16 22:42:38 +0000
commit733ad46ad268b2343b8d70cccc3fcab09a5e1dd0 (patch)
treeae9d241da22b7c214b43073f1c59b21cf2c57d2e /core/java/android/security
parent402d7ca70ce8edd87fc569bb6282c4565d7e0360 (diff)
parent1ba9585506521a2bb722ef692dc7152291306898 (diff)
downloadframeworks_base-733ad46ad268b2343b8d70cccc3fcab09a5e1dd0.zip
frameworks_base-733ad46ad268b2343b8d70cccc3fcab09a5e1dd0.tar.gz
frameworks_base-733ad46ad268b2343b8d70cccc3fcab09a5e1dd0.tar.bz2
am 1ba95855: am a9d74000: am e5e49a17: Merge "Support KM_LONG_REP"
* commit '1ba9585506521a2bb722ef692dc7152291306898': Support KM_LONG_REP
Diffstat (limited to 'core/java/android/security')
-rw-r--r--core/java/android/security/keymaster/KeymasterArgument.java1
-rw-r--r--core/java/android/security/keymaster/KeymasterArguments.java28
-rw-r--r--core/java/android/security/keymaster/KeymasterLongArgument.java1
3 files changed, 28 insertions, 2 deletions
diff --git a/core/java/android/security/keymaster/KeymasterArgument.java b/core/java/android/security/keymaster/KeymasterArgument.java
index 9a1c894..9adde35 100644
--- a/core/java/android/security/keymaster/KeymasterArgument.java
+++ b/core/java/android/security/keymaster/KeymasterArgument.java
@@ -42,6 +42,7 @@ abstract class KeymasterArgument implements Parcelable {
case KeymasterDefs.KM_INT_REP:
return new KeymasterIntArgument(tag, in);
case KeymasterDefs.KM_LONG:
+ case KeymasterDefs.KM_LONG_REP:
return new KeymasterLongArgument(tag, in);
case KeymasterDefs.KM_DATE:
return new KeymasterDateArgument(tag, in);
diff --git a/core/java/android/security/keymaster/KeymasterArguments.java b/core/java/android/security/keymaster/KeymasterArguments.java
index 8ed288c..82f65c7 100644
--- a/core/java/android/security/keymaster/KeymasterArguments.java
+++ b/core/java/android/security/keymaster/KeymasterArguments.java
@@ -63,6 +63,12 @@ public class KeymasterArguments implements Parcelable {
}
}
+ public void addLongs(int tag, long... values) {
+ for (long value : values) {
+ addLong(tag, value);
+ }
+ }
+
public void addBoolean(int tag) {
mArguments.add(new KeymasterBooleanArgument(tag));
}
@@ -111,8 +117,13 @@ public class KeymasterArguments implements Parcelable {
}
public long getLong(int tag, long defaultValue) {
- if (KeymasterDefs.getTagType(tag) != KeymasterDefs.KM_LONG) {
- throw new IllegalArgumentException("Tag is not a long type: " + tag);
+ switch (KeymasterDefs.getTagType(tag)) {
+ case KeymasterDefs.KM_LONG:
+ break; // Accepted type
+ case KeymasterDefs.KM_LONG_REP:
+ throw new IllegalArgumentException("Repeatable tags must use getLongs: " + tag);
+ default:
+ throw new IllegalArgumentException("Tag is not a long type: " + tag);
}
KeymasterArgument arg = getArgumentByTag(tag);
if (arg == null) {
@@ -175,6 +186,19 @@ public class KeymasterArguments implements Parcelable {
return values;
}
+ public List<Long> getLongs(int tag) {
+ if (KeymasterDefs.getTagType(tag) != KeymasterDefs.KM_LONG_REP) {
+ throw new IllegalArgumentException("Tag is not a repeating long: " + tag);
+ }
+ List<Long> values = new ArrayList<Long>();
+ for (KeymasterArgument arg : mArguments) {
+ if (arg.tag == tag) {
+ values.add(((KeymasterLongArgument) arg).value);
+ }
+ }
+ return values;
+ }
+
public int size() {
return mArguments.size();
}
diff --git a/core/java/android/security/keymaster/KeymasterLongArgument.java b/core/java/android/security/keymaster/KeymasterLongArgument.java
index 9d2be09..eb17b7e 100644
--- a/core/java/android/security/keymaster/KeymasterLongArgument.java
+++ b/core/java/android/security/keymaster/KeymasterLongArgument.java
@@ -28,6 +28,7 @@ class KeymasterLongArgument extends KeymasterArgument {
super(tag);
switch (KeymasterDefs.getTagType(tag)) {
case KeymasterDefs.KM_LONG:
+ case KeymasterDefs.KM_LONG_REP:
break; // OK.
default:
throw new IllegalArgumentException("Bad long tag " + tag);