aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-09-09 22:41:24 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-09-09 22:43:14 +0200
commit7dbb7cf1e1fd4de1098d4a2207a90ddc680598ed (patch)
treee44cec83c4e97c586e8fd730d0458b5da92c3bc8 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
parenta925e8b83f2af77bd74752dbe56c18baedeb1f1f (diff)
downloadopen-keychain-7dbb7cf1e1fd4de1098d4a2207a90ddc680598ed.tar.gz
open-keychain-7dbb7cf1e1fd4de1098d4a2207a90ddc680598ed.tar.bz2
open-keychain-7dbb7cf1e1fd4de1098d4a2207a90ddc680598ed.zip
jury-rig broken sign mechanism
Should improve situation on #811
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index 08f51d692..f085c8582 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -50,6 +50,7 @@ import org.sufficientlysecure.keychain.pgp.Progressable;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralMsgIdException;
+import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRingData;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
@@ -128,7 +129,7 @@ public class KeychainIntentService extends IntentService implements Progressable
public static final String SELECTED_URI = "selected_uri";
// encrypt
- public static final String ENCRYPT_SIGNATURE_KEY_ID = "secret_key_id";
+ public static final String ENCRYPT_SIGNATURE_MASTER_ID = "secret_key_id";
public static final String ENCRYPT_USE_ASCII_ARMOR = "use_ascii_armor";
public static final String ENCRYPT_ENCRYPTION_KEYS_IDS = "encryption_keys_ids";
public static final String ENCRYPT_COMPRESSION_ID = "compression_id";
@@ -251,7 +252,7 @@ public class KeychainIntentService extends IntentService implements Progressable
int source = data.get(SOURCE) != null ? data.getInt(SOURCE) : data.getInt(TARGET);
Bundle resultData = new Bundle();
- long signatureKeyId = data.getLong(ENCRYPT_SIGNATURE_KEY_ID);
+ long sigMasterKeyId = data.getLong(ENCRYPT_SIGNATURE_MASTER_ID);
String symmetricPassphrase = data.getString(ENCRYPT_SYMMETRIC_PASSPHRASE);
boolean useAsciiArmor = data.getBoolean(ENCRYPT_USE_ASCII_ARMOR);
@@ -280,14 +281,20 @@ public class KeychainIntentService extends IntentService implements Progressable
.setOriginalFilename(originalFilename);
try {
- builder.setSignatureMasterKeyId(signatureKeyId)
- .setSignaturePassphrase(
- PassphraseCacheService.getCachedPassphrase(this, signatureKeyId))
+ CachedPublicKeyRing signingRing =
+ new ProviderHelper(this).getCachedPublicKeyRing(sigMasterKeyId);
+ long sigSubKeyId = signingRing.getSignId();
+ // It is assumed that the passphrase was cached prior to the service call.
+ String passphrase = PassphraseCacheService.getCachedPassphrase(this, sigSubKeyId);
+ builder.setSignatureMasterKeyId(sigMasterKeyId)
+ .setSignatureSubKeyId(sigSubKeyId)
+ .setSignaturePassphrase(passphrase)
.setSignatureHashAlgorithm(
Preferences.getPreferences(this).getDefaultHashAlgorithm())
- .setAdditionalEncryptId(signatureKeyId);
- } catch (PassphraseCacheService.KeyNotFoundException e) {
+ .setAdditionalEncryptId(sigMasterKeyId);
+ } catch (PgpGeneralException e) {
// encrypt-only
+ // TODO Just silently drop the requested signature? Shouldn't we throw here?
}
// this assumes that the bytes are cleartext (valid for current implementation!)