Add SecretKeyFactory backed by AndroidKeyStore.
This factory provides a way to obtain information about a SecretKey
backed by AndroidKeyStore. The information is provided in a form of an
instance of KeyStoreKeySpec class.
EXAMPLE
SecretKeyFactory factory = SecretKeyFactory.getInstance(
key.getAlgorithm(), "AndroidKeyStore");
KeyStoreKeySpec keySpec =
factory.getKeySpec(key, KeyStoreKeySpec.class);
Bug: 18088752
Change-Id: I26c9dd544f80230fe7039501eeb471eaf875452b
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
package android.security;
|
||||
|
||||
import android.security.keymaster.KeyCharacteristics;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@@ -20,4 +25,37 @@ public abstract class KeymasterUtils {
|
||||
KeymasterDefs.getErrorMessage(keymasterErrorCode));
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer getInt(KeyCharacteristics keyCharacteristics, int tag) {
|
||||
if (keyCharacteristics.hwEnforced.containsTag(tag)) {
|
||||
return keyCharacteristics.hwEnforced.getInt(tag, -1);
|
||||
} else if (keyCharacteristics.swEnforced.containsTag(tag)) {
|
||||
return keyCharacteristics.swEnforced.getInt(tag, -1);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Integer> getInts(KeyCharacteristics keyCharacteristics, int tag) {
|
||||
List<Integer> result = new ArrayList<Integer>();
|
||||
result.addAll(keyCharacteristics.hwEnforced.getInts(tag));
|
||||
result.addAll(keyCharacteristics.swEnforced.getInts(tag));
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Date getDate(KeyCharacteristics keyCharacteristics, int tag) {
|
||||
Date result = keyCharacteristics.hwEnforced.getDate(tag, null);
|
||||
if (result == null) {
|
||||
result = keyCharacteristics.swEnforced.getDate(tag, null);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean getBoolean(KeyCharacteristics keyCharacteristics, int tag) {
|
||||
if (keyCharacteristics.hwEnforced.containsTag(tag)) {
|
||||
return keyCharacteristics.hwEnforced.getBoolean(tag, false);
|
||||
} else {
|
||||
return keyCharacteristics.swEnforced.getBoolean(tag, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user