From 214b60cd0049c90ea120401646c9d9ae707dc4ad Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Thu, 23 Oct 2014 23:29:40 +0200 Subject: integrate download from keyserver into key import operation --- .../keychain/util/EmailKeyHelper.java | 25 ++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java') 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 mails) { - Set keys = new HashSet(); + // Collect all candidates as ImportKeysListEntry (set for deduplication) + Set entries = new HashSet(); for (String mail : mails) { - keys.addAll(getEmailKeys(context, mail)); + entries.addAll(getEmailKeys(context, mail)); + } + + // Put them in a list and import + ArrayList keys = new ArrayList(entries.size()); + for (ImportKeysListEntry entry : entries) { + keys.add(new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(), null)); } - importKeys(context, messenger, new ArrayList(keys)); + importKeys(context, messenger, keys); } - public static List getEmailKeys(Context context, String mail) { + public static Set getEmailKeys(Context context, String mail) { Set keys = new HashSet(); // Try _hkp._tcp SRV record first @@ -67,15 +75,14 @@ public class EmailKeyHelper { keys.addAll(getEmailKeys(mail, hkp)); } } - return new ArrayList(keys); + return keys; } - private static void importKeys(Context context, Messenger messenger, List keys) { + private static void importKeys(Context context, Messenger messenger, ArrayList 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(keys)); + importData.putParcelableArrayList(KeychainIntentService.IMPORT_KEY_LIST, keys); importIntent.putExtra(KeychainIntentService.EXTRA_DATA, importData); importIntent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); -- cgit v1.2.3