summaryrefslogtreecommitdiffstats
path: root/keystore/java/android/security/KeyStoreHmacSpi.java
diff options
context:
space:
mode:
authorAlex Klyubin <klyubin@google.com>2015-03-31 20:55:10 -0700
committerAlex Klyubin <klyubin@google.com>2015-03-31 21:19:26 -0700
commit52886ca77d4d93f6faf5d2a6836625a421e32403 (patch)
tree375eebcf3a0800e578df1305f67a8fdcf2dea664 /keystore/java/android/security/KeyStoreHmacSpi.java
parentb7a34e4955beae2cee81a27e7c240316078bbf2f (diff)
downloadframeworks_base-52886ca77d4d93f6faf5d2a6836625a421e32403.zip
frameworks_base-52886ca77d4d93f6faf5d2a6836625a421e32403.tar.gz
frameworks_base-52886ca77d4d93f6faf5d2a6836625a421e32403.tar.bz2
A way to obtain KeyStore operation handle from crypto primitives.
This adds AndroidKeyStore.getKeyStoreOperationHandle method which can be used to obtain the KeyStore operation handle corresponding to the provided JCA cryto primitive (provided it's backed by AndroidKeyStore). Bug: 18088752 Change-Id: Iaa3b6f9b2281b2ec2de8fd5946d353dc7fdb3d2d
Diffstat (limited to 'keystore/java/android/security/KeyStoreHmacSpi.java')
-rw-r--r--keystore/java/android/security/KeyStoreHmacSpi.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/keystore/java/android/security/KeyStoreHmacSpi.java b/keystore/java/android/security/KeyStoreHmacSpi.java
index 939b41c..841b90d 100644
--- a/keystore/java/android/security/KeyStoreHmacSpi.java
+++ b/keystore/java/android/security/KeyStoreHmacSpi.java
@@ -33,7 +33,7 @@ import javax.crypto.MacSpi;
*
* @hide
*/
-public abstract class KeyStoreHmacSpi extends MacSpi {
+public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOperation {
public static class HmacSHA256 extends KeyStoreHmacSpi {
public HmacSHA256() {
@@ -50,6 +50,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
// The fields below are reset by the engineReset operation.
private KeyStoreCryptoOperationChunkedStreamer mChunkedStreamer;
private IBinder mOperationToken;
+ private Long mOperationHandle;
protected KeyStoreHmacSpi(@KeyStoreKeyConstraints.DigestEnum int digest, int macSizeBytes) {
mDigest = digest;
@@ -87,6 +88,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
mOperationToken = null;
mKeyStore.abort(operationToken);
}
+ mOperationHandle = null;
mChunkedStreamer = null;
KeymasterArguments keymasterArgs = new KeymasterArguments();
@@ -108,6 +110,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
if (mOperationToken == null) {
throw new CryptoOperationException("Keystore returned null operation token");
}
+ mOperationHandle = opResult.operationHandle;
mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer(
new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
mKeyStore, mOperationToken));
@@ -157,11 +160,15 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
try {
IBinder operationToken = mOperationToken;
if (operationToken != null) {
- mOperationToken = null;
mKeyStore.abort(operationToken);
}
} finally {
super.finalize();
}
}
+
+ @Override
+ public Long getOperationHandle() {
+ return mOperationHandle;
+ }
}