From b833b9495c25a00e27ed54b7c6a5ffdea287ca87 Mon Sep 17 00:00:00 2001 From: Andrea Torlaschi Date: Wed, 17 Aug 2016 20:52:13 +0200 Subject: [PATCH] ImportKeys: Don't save origins (not used) and fix logic --- .../keychain/keyimport/FacebookKeyserver.java | 5 --- .../keychain/keyimport/HkpKeyserver.java | 2 +- .../keychain/keyimport/ImportKeysList.java | 33 +++++-------------- .../keyimport/ImportKeysListEntry.java | 14 +------- .../keychain/keyimport/KeybaseKeyserver.java | 6 ++-- 5 files changed, 13 insertions(+), 47 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java index 5d9e1eb0b..6ee14d0d8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java @@ -51,10 +51,6 @@ public class FacebookKeyserver extends Keyserver { private static final String FB_HOST = "facebook.com"; private static final String FB_HOST_WWW = "www." + FB_HOST; - public static final String FB_URL = "https://" + FB_HOST_WWW; - - public static final String ORIGIN = FB_URL; - private final Proxy mProxy; public FacebookKeyserver(Proxy proxy) { @@ -148,7 +144,6 @@ public class FacebookKeyserver extends Keyserver { throws UnsupportedOperationException { ImportKeysListEntry entry = new ImportKeysListEntry(); entry.setSecretKey(false); // keys imported from Facebook must be public - entry.addOrigin(ORIGIN); // so we can query for the Facebook username directly, and to identify the source to // download the key from diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java index 014b7a312..a1db26696 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java @@ -54,6 +54,7 @@ import okhttp3.RequestBody; import okhttp3.Response; public class HkpKeyserver extends Keyserver { + private static class HttpError extends Exception { private static final long serialVersionUID = 1718783705229428893L; private int mCode; @@ -274,7 +275,6 @@ public class HkpKeyserver extends Keyserver { while (matcher.find()) { final ImportKeysListEntry entry = new ImportKeysListEntry(); entry.setQuery(query); - entry.addOrigin(getUrlPrefix() + mHost + ":" + mPort); // group 1 contains the full fingerprint (v4) or the long key id if available // see https://bitbucket.org/skskeyserver/sks-keyserver/pull-request/12/fixes-for-machine-readable-indexes/diff diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java index e9e24a495..2e7872b82 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java @@ -72,32 +72,17 @@ public class ImportKeysList extends ArrayList { if (incoming.getKeyserver() != null) { existing.setKeyserver(incoming.getKeyserver()); - } - - // keep track if this key result is from a HKP keyserver - boolean incomingFromHkpServer = true; - // we’re going to want to try to fetch the key from everywhere we found it, so remember - // all the origins - for (String origin : incoming.getOrigins()) { - existing.addOrigin(origin); - - // to work properly, Keybase-sourced/Facebook-sourced entries need to pass along the - // identifying name/id - if (incoming.getKeybaseName() != null) { - existing.setKeybaseName(incoming.getKeybaseName()); - // one of the origins is not a HKP keyserver - incomingFromHkpServer = false; - } - if (incoming.getFbUsername() != null) { - existing.setFbUsername(incoming.getFbUsername()); - // one of the origins is not a HKP keyserver - incomingFromHkpServer = false; - } - } - - if (incomingFromHkpServer) { // Mail addresses returned by HKP servers are preferred over keybase.io IDs existing.setPrimaryUserId(incoming.getPrimaryUserId()); + + modified = true; + } else if (incoming.getKeybaseName() != null) { + // to work properly, Keybase-sourced/Facebook-sourced entries need to pass along the + // identifying name/id + existing.setKeybaseName(incoming.getKeybaseName()); + modified = true; + } else if (incoming.getFbUsername() != null) { + existing.setFbUsername(incoming.getFbUsername()); modified = true; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java index 076244344..820ae5b28 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -61,7 +61,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private String mKeybaseName; private String mFbUsername; private String mQuery; - private ArrayList mOrigins; private Integer mHashCode = null; public ParcelableKeyRing getParcelableKeyRing() { @@ -203,14 +202,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mQuery = query; } - public ArrayList getOrigins() { - return mOrigins; - } - - public void addOrigin(String origin) { - mOrigins.add(origin); - } - public int hashCode() { return mHashCode != null ? mHashCode : super.hashCode(); } @@ -264,7 +255,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mSecretKey = false; mUserIds = new ArrayList<>(); - mOrigins = new ArrayList<>(); } /** @@ -367,12 +357,12 @@ public class ImportKeysListEntry implements Serializable, Parcelable { dest.writeByte((byte) (mSecretKey ? 1 : 0)); dest.writeString(mKeybaseName); dest.writeString(mFbUsername); - dest.writeStringList(mOrigins); } public static final Creator CREATOR = new Creator() { public ImportKeysListEntry createFromParcel(final Parcel source) { ImportKeysListEntry vr = new ImportKeysListEntry(); + vr.mParcelableKeyRing = source.readParcelable(ParcelableKeyRing.class.getClassLoader()); vr.mPrimaryUserId = (UserId) source.readSerializable(); vr.mUserIds = new ArrayList<>(); @@ -388,8 +378,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { vr.mSecretKey = source.readByte() == 1; vr.mKeybaseName = source.readString(); vr.mFbUsername = source.readString(); - vr.mOrigins = new ArrayList<>(); - source.readStringList(vr.mOrigins); return vr; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java index 9243926df..e34b981ea 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java @@ -18,8 +18,8 @@ package org.sufficientlysecure.keychain.keyimport; import com.textuality.keybase.lib.KeybaseException; -import com.textuality.keybase.lib.Match; import com.textuality.keybase.lib.KeybaseQuery; +import com.textuality.keybase.lib.Match; import com.textuality.keybase.lib.User; import org.sufficientlysecure.keychain.Constants; @@ -32,9 +32,8 @@ import java.util.ArrayList; import java.util.List; public class KeybaseKeyserver extends Keyserver { - public static final String ORIGIN = "keybase:keybase.io"; - Proxy mProxy; + private Proxy mProxy; public KeybaseKeyserver(Proxy proxy) { mProxy = proxy; @@ -71,7 +70,6 @@ public class KeybaseKeyserver extends Keyserver { private ImportKeysListEntry makeEntry(Match match, String query) throws KeybaseException { final ImportKeysListEntry entry = new ImportKeysListEntry(); entry.setQuery(query); - entry.addOrigin(ORIGIN); entry.setRevoked(false); // keybase doesn’t say anything about revoked keys