summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keystore/java/android/security/KeyStoreCipherSpi.java10
-rw-r--r--keystore/java/android/security/KeyStoreHmacSpi.java10
2 files changed, 20 insertions, 0 deletions
diff --git a/keystore/java/android/security/KeyStoreCipherSpi.java b/keystore/java/android/security/KeyStoreCipherSpi.java
index 125ca418c32e..917f71678e41 100644
--- a/keystore/java/android/security/KeyStoreCipherSpi.java
+++ b/keystore/java/android/security/KeyStoreCipherSpi.java
@@ -320,6 +320,16 @@ public abstract class KeyStoreCipherSpi extends CipherSpi implements KeyStoreCry
mMainDataStreamer = new KeyStoreCryptoOperationChunkedStreamer(
new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
mKeyStore, opResult.token));
+
+ if (opResult.resultCode != KeyStore.NO_ERROR) {
+ // The operation requires user authentication. Check whether such authentication is
+ // possible (e.g., the key may have been permanently invalidated).
+ InvalidKeyException e =
+ mKeyStore.getInvalidKeyException(mKey.getAlias(), opResult.resultCode);
+ if (!(e instanceof UserNotAuthenticatedException)) {
+ throw e;
+ }
+ }
}
@Override
diff --git a/keystore/java/android/security/KeyStoreHmacSpi.java b/keystore/java/android/security/KeyStoreHmacSpi.java
index 2a3372143e2c..4590b9ce8f0e 100644
--- a/keystore/java/android/security/KeyStoreHmacSpi.java
+++ b/keystore/java/android/security/KeyStoreHmacSpi.java
@@ -183,6 +183,16 @@ public abstract class KeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOp
mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer(
new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
mKeyStore, mOperationToken));
+
+ if (opResult.resultCode != KeyStore.NO_ERROR) {
+ // The operation requires user authentication. Check whether such authentication is
+ // possible (e.g., the key may have been permanently invalidated).
+ InvalidKeyException e =
+ mKeyStore.getInvalidKeyException(mKey.getAlias(), opResult.resultCode);
+ if (!(e instanceof UserNotAuthenticatedException)) {
+ throw e;
+ }
+ }
}
@Override