Merge "Keystore uses 0 for invalid operation handles." into mnc-dev
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 @@
*
* <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 @@
* error conditions in between.
*/
private IBinder mOperationToken;
- private Long mOperationHandle;
+ private long mOperationHandle;
private KeyStoreCryptoOperationChunkedStreamer mMainDataStreamer;
/**
@@ -247,7 +247,7 @@
mIvHasBeenUsed = false;
mAdditionalEntropyForBegin = null;
mOperationToken = null;
- mOperationHandle = null;
+ mOperationHandle = 0;
mMainDataStreamer = null;
mCachedException = null;
}
@@ -258,7 +258,7 @@
mOperationToken = null;
mKeyStore.abort(operationToken);
}
- mOperationHandle = null;
+ mOperationHandle = 0;
mMainDataStreamer = null;
mAdditionalEntropyForBegin = null;
mCachedException = null;
@@ -322,6 +322,9 @@
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 @@
}
@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 @@
/**
* 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 @@
// 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 @@
mOperationToken = null;
mKeyStore.abort(operationToken);
}
- mOperationHandle = null;
+ mOperationHandle = 0;
mChunkedStreamer = null;
}
@@ -138,7 +138,7 @@
mOperationToken = null;
mKeyStore.abort(operationToken);
}
- mOperationHandle = null;
+ mOperationHandle = 0;
mChunkedStreamer = null;
}
@@ -187,6 +187,9 @@
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 @@
}
@Override
- public Long getOperationHandle() {
+ public long getOperationHandle() {
return mOperationHandle;
}
}