Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 459ef1e7 authored by Alex Klyubin's avatar Alex Klyubin
Browse files

Surface KeyPermanentlyInvalidatedException for per-op auth keys.

Bug: 20642549
Change-Id: Ibda270921f13a1fd695264583b0e4bd255f63aed
parent 4fbdbbe8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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
+10 −0
Original line number Diff line number Diff line
@@ -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