diff options
author | Alex Klyubin <klyubin@google.com> | 2015-05-06 17:26:07 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-06 17:26:11 +0000 |
commit | 6223ec129b256526d8c30920271b2ee3960bcf1f (patch) | |
tree | 451702319d1a024c5b87ecad1bb0f0876401bb26 /keystore | |
parent | 809d5d7fbe20e6c84ea19480efa531af765b792b (diff) | |
parent | 9cfc428a244c8b2c7a404a430b1b3991b1950c62 (diff) | |
download | frameworks_base-6223ec129b256526d8c30920271b2ee3960bcf1f.zip frameworks_base-6223ec129b256526d8c30920271b2ee3960bcf1f.tar.gz frameworks_base-6223ec129b256526d8c30920271b2ee3960bcf1f.tar.bz2 |
Merge "Keystore uses 0 for invalid operation handles." into mnc-dev
Diffstat (limited to 'keystore')
4 files changed, 19 insertions, 13 deletions
diff --git a/keystore/java/android/security/AndroidKeyStoreProvider.java b/keystore/java/android/security/AndroidKeyStoreProvider.java index 518067b..257ab54 100644 --- a/keystore/java/android/security/AndroidKeyStoreProvider.java +++ b/keystore/java/android/security/AndroidKeyStoreProvider.java @@ -104,13 +104,13 @@ public class AndroidKeyStoreProvider extends Provider { * * <p>The following primitives are supported: {@link Cipher} and {@link Mac}. * - * @return KeyStore operation handle or {@code null} if the provided primitive's KeyStore - * operation is not in progress. + * @return KeyStore operation handle or {@code 0} if the provided primitive's KeyStore operation + * is not in progress. * * @throws IllegalArgumentException if the provided primitive is not supported or is not backed * by AndroidKeyStore provider. */ - public static Long getKeyStoreOperationHandle(Object cryptoPrimitive) { + public static long getKeyStoreOperationHandle(Object cryptoPrimitive) { if (cryptoPrimitive == null) { throw new NullPointerException(); } diff --git a/keystore/java/android/security/KeyStoreCipherSpi.java b/keystore/java/android/security/KeyStoreCipherSpi.java index 20dd524..094aa75 100644 --- a/keystore/java/android/security/KeyStoreCipherSpi.java +++ b/keystore/java/android/security/KeyStoreCipherSpi.java @@ -134,7 +134,7 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry * error conditions in between. */ private IBinder mOperationToken; - private Long mOperationHandle; + private long mOperationHandle; private KeyStoreCryptoOperationChunkedStreamer mMainDataStreamer; /** @@ -247,7 +247,7 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry mIvHasBeenUsed = false; mAdditionalEntropyForBegin = null; mOperationToken = null; - mOperationHandle = null; + mOperationHandle = 0; mMainDataStreamer = null; mCachedException = null; } @@ -258,7 +258,7 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry mOperationToken = null; mKeyStore.abort(operationToken); } - mOperationHandle = null; + mOperationHandle = 0; mMainDataStreamer = null; mAdditionalEntropyForBegin = null; mCachedException = null; @@ -322,6 +322,9 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry if (mOperationToken == null) { throw new IllegalStateException("Keystore returned null operation token"); } + if (mOperationHandle == 0) { + throw new IllegalStateException("Keystore returned invalid operation handle"); + } loadAlgorithmSpecificParametersFromBeginResult(keymasterOutputArgs); mFirstOperationInitiated = true; @@ -471,7 +474,7 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry } @Override - public Long getOperationHandle() { + public long getOperationHandle() { return mOperationHandle; } diff --git a/keystore/java/android/security/KeyStoreCryptoOperation.java b/keystore/java/android/security/KeyStoreCryptoOperation.java index 19abd05..c5cf211 100644 --- a/keystore/java/android/security/KeyStoreCryptoOperation.java +++ b/keystore/java/android/security/KeyStoreCryptoOperation.java @@ -25,7 +25,7 @@ public interface KeyStoreCryptoOperation { /** * Gets the KeyStore operation handle of this crypto operation. * - * @return handle or {@code null} if the KeyStore operation is not in progress. + * @return handle or {@code 0} if the KeyStore operation is not in progress. */ - Long getOperationHandle(); + long getOperationHandle(); } diff --git a/keystore/java/android/security/KeyStoreHmacSpi.java b/keystore/java/android/security/KeyStoreHmacSpi.java index e993b50..0dbe788 100644 --- a/keystore/java/android/security/KeyStoreHmacSpi.java +++ b/keystore/java/android/security/KeyStoreHmacSpi.java @@ -75,7 +75,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp // Fields below are reset when engineDoFinal succeeds. private KeyStoreCryptoOperationChunkedStreamer mChunkedStreamer; private IBinder mOperationToken; - private Long mOperationHandle; + private long mOperationHandle; protected KeyStoreHmacSpi(int keymasterDigest) { mKeymasterDigest = keymasterDigest; @@ -128,7 +128,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp mOperationToken = null; mKeyStore.abort(operationToken); } - mOperationHandle = null; + mOperationHandle = 0; mChunkedStreamer = null; } @@ -138,7 +138,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp mOperationToken = null; mKeyStore.abort(operationToken); } - mOperationHandle = null; + mOperationHandle = 0; mChunkedStreamer = null; } @@ -187,6 +187,9 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp if (mOperationToken == null) { throw new IllegalStateException("Keystore returned null operation token"); } + if (mOperationHandle == 0) { + throw new IllegalStateException("Keystore returned invalid operation handle"); + } mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer( new KeyStoreCryptoOperationChunkedStreamer.MainDataStream( @@ -249,7 +252,7 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp } @Override - public Long getOperationHandle() { + public long getOperationHandle() { return mOperationHandle; } } |