summaryrefslogtreecommitdiff
path: root/keystore
diff options
context:
space:
mode:
authorJanis Danisevskis <jdanis@google.com>2021-03-18 22:08:09 -0700
committerYo Chiang <yochiang@google.com>2021-03-19 08:09:34 +0000
commit8758b2ceaf05f8d0e9a4d4d1e961dc85b6130029 (patch)
tree8e7992215c5c31469d008fc4f56350c7f88068df /keystore
parent47157e77113e9362e9a511c9c0be99639cc5139a (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.java6
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());