aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-10-29 16:58:20 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-10-29 16:58:20 +0100
commitee79cc76d399ff499ee794ac694147341c8e5133 (patch)
tree9fb19b864666b1ab068dbccc0ecbff119a7a7e80 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport
parent1c83c33d35ae68a301c18d94c155d3bb7ddf3dd0 (diff)
downloadopen-keychain-ee79cc76d399ff499ee794ac694147341c8e5133.tar.gz
open-keychain-ee79cc76d399ff499ee794ac694147341c8e5133.tar.bz2
open-keychain-ee79cc76d399ff499ee794ac694147341c8e5133.zip
make use of proxies a Keyserver property
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java35
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java24
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java6
4 files changed, 40 insertions, 33 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java
index 4d2bc8593..869d107ab 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java
@@ -35,7 +35,7 @@ public class CloudSearch {
private final static long SECONDS = 1000;
public static ArrayList<ImportKeysListEntry> search(
- @NonNull final String query, Preferences.CloudSearchPrefs cloudPrefs, @NonNull final Proxy proxy)
+ @NonNull final String query, Preferences.CloudSearchPrefs cloudPrefs, @NonNull Proxy proxy)
throws Keyserver.CloudSearchFailureException {
final ArrayList<Keyserver> servers = new ArrayList<>();
@@ -43,10 +43,10 @@ public class CloudSearch {
final Vector<Keyserver.CloudSearchFailureException> problems = new Vector<>();
if (cloudPrefs.searchKeyserver) {
- servers.add(new HkpKeyserver(cloudPrefs.keyserver));
+ servers.add(new HkpKeyserver(cloudPrefs.keyserver, proxy));
}
if (cloudPrefs.searchKeybase) {
- servers.add(new KeybaseKeyserver());
+ servers.add(new KeybaseKeyserver(proxy));
}
final ImportKeysList results = new ImportKeysList(servers.size());
@@ -56,7 +56,7 @@ public class CloudSearch {
@Override
public void run() {
try {
- results.addAll(keyserver.search(query, proxy));
+ results.addAll(keyserver.search(query));
} catch (Keyserver.CloudSearchFailureException e) {
problems.add(e);
}
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 f05ff3836..6eab13126 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
@@ -76,6 +76,7 @@ public class HkpKeyserver extends Keyserver {
private String mHost;
private short mPort;
+ private Proxy mProxy;
private boolean mSecure;
/**
@@ -152,17 +153,17 @@ public class HkpKeyserver extends Keyserver {
* connect using {@link #PORT_DEFAULT}. However, port may be specified after colon
* ("<code>hostname:port</code>", eg. "<code>p80.pool.sks-keyservers.net:80</code>").
*/
- public HkpKeyserver(String hostAndPort) {
+ public HkpKeyserver(String hostAndPort, Proxy proxy) {
String host = hostAndPort;
short port = PORT_DEFAULT;
boolean secure = false;
String[] parts = hostAndPort.split(":");
if (parts.length > 1) {
if (!parts[0].contains(".")) { // This is not a domain or ip, so it must be a protocol name
- if (parts[0].equalsIgnoreCase("hkps") || parts[0].equalsIgnoreCase("https")) {
+ if ("hkps".equalsIgnoreCase(parts[0]) || "https".equalsIgnoreCase(parts[0])) {
secure = true;
port = PORT_DEFAULT_HKPS;
- } else if (!parts[0].equalsIgnoreCase("hkp") && !parts[0].equalsIgnoreCase("http")) {
+ } else if (!"hkp".equalsIgnoreCase(parts[0]) && !"http".equalsIgnoreCase(parts[0])) {
throw new IllegalArgumentException("Protocol " + parts[0] + " is unknown");
}
host = parts[1];
@@ -179,16 +180,18 @@ public class HkpKeyserver extends Keyserver {
}
mHost = host;
mPort = port;
+ mProxy = proxy;
mSecure = secure;
}
- public HkpKeyserver(String host, short port) {
- this(host, port, false);
+ public HkpKeyserver(String host, short port, Proxy proxy) {
+ this(host, port, proxy, false);
}
- public HkpKeyserver(String host, short port, boolean secure) {
+ public HkpKeyserver(String host, short port, Proxy proxy, boolean secure) {
mHost = host;
mPort = port;
+ mProxy = proxy;
mSecure = secure;
}
@@ -253,7 +256,7 @@ public class HkpKeyserver extends Keyserver {
* Results are sorted by creation date of key!
*/
@Override
- public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
+ public ArrayList<ImportKeysListEntry> search(String query) throws QueryFailedException,
QueryNeedsRepairException {
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
@@ -271,7 +274,7 @@ public class HkpKeyserver extends Keyserver {
String data;
try {
- data = query(request, proxy);
+ data = query(request, mProxy);
} catch (HttpError e) {
if (e.getData() != null) {
Log.d(Constants.TAG, "returned error data: " + e.getData().toLowerCase(Locale.ENGLISH));
@@ -375,12 +378,12 @@ public class HkpKeyserver extends Keyserver {
}
@Override
- public String get(String keyIdHex, @NonNull Proxy proxy) throws QueryFailedException {
+ public String get(String keyIdHex) throws QueryFailedException {
String request = "/pks/lookup?op=get&options=mr&search=" + keyIdHex;
- Log.d(Constants.TAG, "hkp keyserver get: " + request + " using Proxy: " + proxy);
+ Log.d(Constants.TAG, "hkp keyserver get: " + request + " using Proxy: " + mProxy);
String data;
try {
- data = query(request, proxy);
+ data = query(request, mProxy);
} catch (HttpError httpError) {
Log.d(Constants.TAG, "Failed to get key at HkpKeyserver", httpError);
throw new QueryFailedException("not found");
@@ -396,7 +399,7 @@ public class HkpKeyserver extends Keyserver {
}
@Override
- public void add(String armoredKey, Proxy proxy) throws AddKeyException {
+ public void add(String armoredKey) throws AddKeyException {
try {
String path = "/pks/add";
String params;
@@ -407,7 +410,7 @@ public class HkpKeyserver extends Keyserver {
}
URL url = new URL(getUrlPrefix() + mHost + ":" + mPort + path);
- Log.d(Constants.TAG, "hkp keyserver add: " + url.toString());
+ Log.d(Constants.TAG, "hkp keyserver add: " + url);
Log.d(Constants.TAG, "params: " + params);
RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);
@@ -419,7 +422,7 @@ public class HkpKeyserver extends Keyserver {
.post(body)
.build();
- Response response = getClient(url, proxy).newCall(request).execute();
+ Response response = getClient(url, mProxy).newCall(request).execute();
Log.d(Constants.TAG, "response code: " + response.code());
Log.d(Constants.TAG, "answer: " + response.body().string());
@@ -445,7 +448,7 @@ public class HkpKeyserver extends Keyserver {
* @return A responsible Keyserver or null if not found.
* TODO: Add proxy functionality
*/
- public static HkpKeyserver resolve(String domain) {
+ public static HkpKeyserver resolve(String domain, Proxy proxy) {
try {
Record[] records = new Client().query(new Question("_hkp._tcp." + domain, Record.TYPE.SRV)).getAnswers();
if (records.length > 0) {
@@ -460,7 +463,7 @@ public class HkpKeyserver extends Keyserver {
Record record = records[0]; // This is our best choice
if (record.getPayload().getType() == Record.TYPE.SRV) {
return new HkpKeyserver(((SRV) record.getPayload()).getName(),
- (short) ((SRV) record.getPayload()).getPort());
+ (short) ((SRV) record.getPayload()).getPort(), proxy);
}
}
} catch (Exception ignored) {
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 486d658f6..e4cd6738b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java
@@ -33,10 +33,15 @@ import java.util.List;
public class KeybaseKeyserver extends Keyserver {
public static final String ORIGIN = "keybase:keybase.io";
- private String mQuery;
+
+ Proxy mProxy;
+
+ public KeybaseKeyserver(Proxy proxy) {
+ mProxy = proxy;
+ }
@Override
- public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
+ public ArrayList<ImportKeysListEntry> search(String query) throws QueryFailedException,
QueryNeedsRepairException {
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
@@ -47,14 +52,13 @@ public class KeybaseKeyserver extends Keyserver {
if (query.isEmpty()) {
throw new QueryTooShortException();
}
- mQuery = query;
try {
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
- keybaseQuery.setProxy(proxy);
+ keybaseQuery.setProxy(mProxy);
Iterable<Match> matches = keybaseQuery.search(query);
for (Match match : matches) {
- results.add(makeEntry(match));
+ results.add(makeEntry(match, query));
}
} catch (KeybaseException e) {
Log.e(Constants.TAG, "keybase result parsing error", e);
@@ -64,9 +68,9 @@ public class KeybaseKeyserver extends Keyserver {
return results;
}
- private ImportKeysListEntry makeEntry(Match match) throws KeybaseException {
+ private ImportKeysListEntry makeEntry(Match match, String query) throws KeybaseException {
final ImportKeysListEntry entry = new ImportKeysListEntry();
- entry.setQuery(mQuery);
+ entry.setQuery(query);
entry.addOrigin(ORIGIN);
entry.setRevoked(false); // keybase doesn’t say anything about revoked keys
@@ -102,10 +106,10 @@ public class KeybaseKeyserver extends Keyserver {
}
@Override
- public String get(String id, Proxy proxy) throws QueryFailedException {
+ public String get(String id) throws QueryFailedException {
try {
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
- keybaseQuery.setProxy(proxy);
+ keybaseQuery.setProxy(mProxy);
return User.keyForUsername(keybaseQuery, id);
} catch (KeybaseException e) {
throw new QueryFailedException(e.getMessage());
@@ -113,7 +117,7 @@ public class KeybaseKeyserver extends Keyserver {
}
@Override
- public void add(String armoredKey, Proxy proxy) throws AddKeyException {
+ public void add(String armoredKey) throws AddKeyException {
throw new AddKeyException();
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
index 15e0d94e9..00e8d6ac5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/Keyserver.java
@@ -69,12 +69,12 @@ public abstract class Keyserver {
private static final long serialVersionUID = -507574859137295530L;
}
- public abstract List<ImportKeysListEntry> search(String query, Proxy proxy)
+ public abstract List<ImportKeysListEntry> search(String query)
throws QueryFailedException, QueryNeedsRepairException;
- public abstract String get(String keyIdHex, Proxy proxy) throws QueryFailedException;
+ public abstract String get(String keyIdHex) throws QueryFailedException;
- public abstract void add(String armoredKey, Proxy proxy) throws AddKeyException;
+ public abstract void add(String armoredKey) throws AddKeyException;
public static String readAll(InputStream in, String encoding) throws IOException {
ByteArrayOutputStream raw = new ByteArrayOutputStream();