aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-07-08 04:36:43 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-07-08 04:36:43 +0200
commit5633fcc92f20ecd81e4a4ea7f22416f58d051c49 (patch)
tree51f5effca32e6e6d5b962aea9b3039f61d982b7b /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
parent6cbc0ceeaed90fdeba1d6cdd94db274e53a10235 (diff)
downloadopen-keychain-5633fcc92f20ecd81e4a4ea7f22416f58d051c49.tar.gz
open-keychain-5633fcc92f20ecd81e4a4ea7f22416f58d051c49.tar.bz2
open-keychain-5633fcc92f20ecd81e4a4ea7f22416f58d051c49.zip
fix symmetric passphrase caching (fixes #1401)
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
index a8d1f0313..e4026eaaf 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.os.Parcelable;
import android.support.annotation.NonNull;
+import org.sufficientlysecure.keychain.Constants.key;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.pgp.PassphraseCacheInterface;
import org.sufficientlysecure.keychain.pgp.Progressable;
@@ -111,8 +112,11 @@ public abstract class BaseOperation <T extends Parcelable> implements Passphrase
@Override
public Passphrase getCachedPassphrase(long subKeyId) throws NoSecretKeyException {
try {
- long masterKeyId = mProviderHelper.getMasterKeyId(subKeyId);
- return getCachedPassphrase(masterKeyId, subKeyId);
+ if (subKeyId != key.symmetric) {
+ long masterKeyId = mProviderHelper.getMasterKeyId(subKeyId);
+ return getCachedPassphrase(masterKeyId, subKeyId);
+ }
+ return getCachedPassphrase(key.symmetric, key.symmetric);
} catch (NotFoundException e) {
throw new PassphraseCacheInterface.NoSecretKeyException();
}