diff options
| author | Alex Klyubin <klyubin@google.com> | 2015-03-31 20:55:10 -0700 |
|---|---|---|
| committer | Alex Klyubin <klyubin@google.com> | 2015-03-31 21:19:26 -0700 |
| commit | 52886ca77d4d93f6faf5d2a6836625a421e32403 (patch) | |
| tree | 375eebcf3a0800e578df1305f67a8fdcf2dea664 /keystore/java/android/security/KeyStoreHmacSpi.java | |
| parent | b7a34e4955beae2cee81a27e7c240316078bbf2f (diff) | |
| download | frameworks_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.java | 11 |
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; + } } |
