diff options
author | Janis Danisevskis <jdanis@google.com> | 2021-03-18 22:08:09 -0700 |
---|---|---|
committer | Yo Chiang <yochiang@google.com> | 2021-03-19 08:09:34 +0000 |
commit | 8758b2ceaf05f8d0e9a4d4d1e961dc85b6130029 (patch) | |
tree | 8e7992215c5c31469d008fc4f56350c7f88068df /keystore | |
parent | 47157e77113e9362e9a511c9c0be99639cc5139a (diff) |
Keystore 2.0: Fix infinit recursion.
Fix endless recursion when Cipher is initialized with
AndroidKeyStorePrivateKey.
Fixes: 183167349
Test: atest android.keystore.cts.AndroidKeyStoreTest#testKeyStore_Encrypting_RSA_NONE_NOPADDING
Change-Id: I5b4166fb1a4e298072f7156ba61a64966e86dc53
Diffstat (limited to 'keystore')
-rw-r--r-- | keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java b/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java index d9d5300e43f9..9d8a5effc2d7 100644 --- a/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java +++ b/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java @@ -124,7 +124,7 @@ abstract class AndroidKeyStoreCipherSpiBase extends CipherSpi implements KeyStor resetAll(); // Public key operations get diverted to the default provider. - if (opmode == Cipher.ENCRYPT_MODE + if (!(key instanceof AndroidKeyStorePrivateKey) && (key instanceof PrivateKey || key instanceof PublicKey)) { try { mCipher = Cipher.getInstance(getTransform()); @@ -186,7 +186,7 @@ abstract class AndroidKeyStoreCipherSpiBase extends CipherSpi implements KeyStor resetAll(); // Public key operations get diverted to the default provider. - if (opmode == Cipher.ENCRYPT_MODE + if (!(key instanceof AndroidKeyStorePrivateKey) && (key instanceof PrivateKey || key instanceof PublicKey)) { try { mCipher = Cipher.getInstance(getTransform()); @@ -216,7 +216,7 @@ abstract class AndroidKeyStoreCipherSpiBase extends CipherSpi implements KeyStor resetAll(); // Public key operations get diverted to the default provider. - if (opmode == Cipher.ENCRYPT_MODE + if (!(key instanceof AndroidKeyStorePrivateKey) && (key instanceof PrivateKey || key instanceof PublicKey)) { try { mCipher = Cipher.getInstance(getTransform()); |