summaryrefslogtreecommitdiffstats
path: root/keystore/java
diff options
context:
space:
mode:
authorAlex Klyubin <klyubin@google.com>2015-05-06 10:16:57 -0700
committerAlex Klyubin <klyubin@google.com>2015-05-06 10:16:57 -0700
commit9cfc428a244c8b2c7a404a430b1b3991b1950c62 (patch)
tree413c50c9cdb666c8697a48b499934baf7a572f1c /keystore/java
parent28a516280a59a81aeecbf4a68057019d59feb872 (diff)
downloadframeworks_base-9cfc428a244c8b2c7a404a430b1b3991b1950c62.zip
frameworks_base-9cfc428a244c8b2c7a404a430b1b3991b1950c62.tar.gz
frameworks_base-9cfc428a244c8b2c7a404a430b1b3991b1950c62.tar.bz2
Keystore uses 0 for invalid operation handles.
This propagates the concept that 0 is an invalid crypto operation handle to the outside of AndroidKeyStore abstraction. Bug: 20864436 Change-Id: I1e5abb66c5d41d8fc32aac44372495a708c2b6e2
Diffstat (limited to 'keystore/java')
-rw-r--r--keystore/java/android/security/AndroidKeyStoreProvider.java6
-rw-r--r--keystore/java/android/security/KeyStoreCipherSpi.java11
-rw-r--r--keystore/java/android/security/KeyStoreCryptoOperation.java4
-rw-r--r--keystore/java/android/security/KeyStoreHmacSpi.java11
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;
}
}