aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-10-23 23:29:40 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-10-23 23:29:40 +0200
commit214b60cd0049c90ea120401646c9d9ae707dc4ad (patch)
tree8a9dd3836ce1a4a19abed29a91a0cf2fde96860c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java
parentb6c7231a7f7db860059c3af803a5ddf04aa2cb9e (diff)
downloadopen-keychain-214b60cd0049c90ea120401646c9d9ae707dc4ad.tar.gz
open-keychain-214b60cd0049c90ea120401646c9d9ae707dc4ad.tar.bz2
open-keychain-214b60cd0049c90ea120401646c9d9ae707dc4ad.zip
integrate download from keyserver into key import operation
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java
index 33541718e..49d4d8bf8 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java
@@ -25,6 +25,7 @@ import android.os.Messenger;
import org.sufficientlysecure.keychain.keyimport.HkpKeyserver;
import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry;
import org.sufficientlysecure.keychain.keyimport.Keyserver;
+import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import java.util.ArrayList;
@@ -40,14 +41,21 @@ public class EmailKeyHelper {
}
public static void importAll(Context context, Messenger messenger, List<String> mails) {
- Set<ImportKeysListEntry> keys = new HashSet<ImportKeysListEntry>();
+ // Collect all candidates as ImportKeysListEntry (set for deduplication)
+ Set<ImportKeysListEntry> entries = new HashSet<ImportKeysListEntry>();
for (String mail : mails) {
- keys.addAll(getEmailKeys(context, mail));
+ entries.addAll(getEmailKeys(context, mail));
+ }
+
+ // Put them in a list and import
+ ArrayList<ParcelableKeyRing> keys = new ArrayList<ParcelableKeyRing>(entries.size());
+ for (ImportKeysListEntry entry : entries) {
+ keys.add(new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(), null));
}
- importKeys(context, messenger, new ArrayList<ImportKeysListEntry>(keys));
+ importKeys(context, messenger, keys);
}
- public static List<ImportKeysListEntry> getEmailKeys(Context context, String mail) {
+ public static Set<ImportKeysListEntry> getEmailKeys(Context context, String mail) {
Set<ImportKeysListEntry> keys = new HashSet<ImportKeysListEntry>();
// Try _hkp._tcp SRV record first
@@ -67,15 +75,14 @@ public class EmailKeyHelper {
keys.addAll(getEmailKeys(mail, hkp));
}
}
- return new ArrayList<ImportKeysListEntry>(keys);
+ return keys;
}
- private static void importKeys(Context context, Messenger messenger, List<ImportKeysListEntry> keys) {
+ private static void importKeys(Context context, Messenger messenger, ArrayList<ParcelableKeyRing> keys) {
Intent importIntent = new Intent(context, KeychainIntentService.class);
- importIntent.setAction(KeychainIntentService.ACTION_DOWNLOAD_AND_IMPORT_KEYS);
+ importIntent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING);
Bundle importData = new Bundle();
- importData.putParcelableArrayList(KeychainIntentService.DOWNLOAD_KEY_LIST,
- new ArrayList<ImportKeysListEntry>(keys));
+ importData.putParcelableArrayList(KeychainIntentService.IMPORT_KEY_LIST, keys);
importIntent.putExtra(KeychainIntentService.EXTRA_DATA, importData);
importIntent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);