make use of proxies a Keyserver property
This commit is contained in:
@@ -35,7 +35,7 @@ public class CloudSearch {
|
|||||||
private final static long SECONDS = 1000;
|
private final static long SECONDS = 1000;
|
||||||
|
|
||||||
public static ArrayList<ImportKeysListEntry> search(
|
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 {
|
throws Keyserver.CloudSearchFailureException {
|
||||||
final ArrayList<Keyserver> servers = new ArrayList<>();
|
final ArrayList<Keyserver> servers = new ArrayList<>();
|
||||||
|
|
||||||
@@ -43,10 +43,10 @@ public class CloudSearch {
|
|||||||
final Vector<Keyserver.CloudSearchFailureException> problems = new Vector<>();
|
final Vector<Keyserver.CloudSearchFailureException> problems = new Vector<>();
|
||||||
|
|
||||||
if (cloudPrefs.searchKeyserver) {
|
if (cloudPrefs.searchKeyserver) {
|
||||||
servers.add(new HkpKeyserver(cloudPrefs.keyserver));
|
servers.add(new HkpKeyserver(cloudPrefs.keyserver, proxy));
|
||||||
}
|
}
|
||||||
if (cloudPrefs.searchKeybase) {
|
if (cloudPrefs.searchKeybase) {
|
||||||
servers.add(new KeybaseKeyserver());
|
servers.add(new KeybaseKeyserver(proxy));
|
||||||
}
|
}
|
||||||
final ImportKeysList results = new ImportKeysList(servers.size());
|
final ImportKeysList results = new ImportKeysList(servers.size());
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ public class CloudSearch {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
results.addAll(keyserver.search(query, proxy));
|
results.addAll(keyserver.search(query));
|
||||||
} catch (Keyserver.CloudSearchFailureException e) {
|
} catch (Keyserver.CloudSearchFailureException e) {
|
||||||
problems.add(e);
|
problems.add(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
|
|
||||||
private String mHost;
|
private String mHost;
|
||||||
private short mPort;
|
private short mPort;
|
||||||
|
private Proxy mProxy;
|
||||||
private boolean mSecure;
|
private boolean mSecure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -152,17 +153,17 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
* connect using {@link #PORT_DEFAULT}. However, port may be specified after colon
|
* 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>").
|
* ("<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;
|
String host = hostAndPort;
|
||||||
short port = PORT_DEFAULT;
|
short port = PORT_DEFAULT;
|
||||||
boolean secure = false;
|
boolean secure = false;
|
||||||
String[] parts = hostAndPort.split(":");
|
String[] parts = hostAndPort.split(":");
|
||||||
if (parts.length > 1) {
|
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].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;
|
secure = true;
|
||||||
port = PORT_DEFAULT_HKPS;
|
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");
|
throw new IllegalArgumentException("Protocol " + parts[0] + " is unknown");
|
||||||
}
|
}
|
||||||
host = parts[1];
|
host = parts[1];
|
||||||
@@ -179,16 +180,18 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
mHost = host;
|
mHost = host;
|
||||||
mPort = port;
|
mPort = port;
|
||||||
|
mProxy = proxy;
|
||||||
mSecure = secure;
|
mSecure = secure;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HkpKeyserver(String host, short port) {
|
public HkpKeyserver(String host, short port, Proxy proxy) {
|
||||||
this(host, port, false);
|
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;
|
mHost = host;
|
||||||
mPort = port;
|
mPort = port;
|
||||||
|
mProxy = proxy;
|
||||||
mSecure = secure;
|
mSecure = secure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,7 +256,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
* Results are sorted by creation date of key!
|
* Results are sorted by creation date of key!
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
|
public ArrayList<ImportKeysListEntry> search(String query) throws QueryFailedException,
|
||||||
QueryNeedsRepairException {
|
QueryNeedsRepairException {
|
||||||
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
||||||
|
|
||||||
@@ -271,7 +274,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
|
|
||||||
String data;
|
String data;
|
||||||
try {
|
try {
|
||||||
data = query(request, proxy);
|
data = query(request, mProxy);
|
||||||
} catch (HttpError e) {
|
} catch (HttpError e) {
|
||||||
if (e.getData() != null) {
|
if (e.getData() != null) {
|
||||||
Log.d(Constants.TAG, "returned error data: " + e.getData().toLowerCase(Locale.ENGLISH));
|
Log.d(Constants.TAG, "returned error data: " + e.getData().toLowerCase(Locale.ENGLISH));
|
||||||
@@ -375,12 +378,12 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
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;
|
String data;
|
||||||
try {
|
try {
|
||||||
data = query(request, proxy);
|
data = query(request, mProxy);
|
||||||
} catch (HttpError httpError) {
|
} catch (HttpError httpError) {
|
||||||
Log.d(Constants.TAG, "Failed to get key at HkpKeyserver", httpError);
|
Log.d(Constants.TAG, "Failed to get key at HkpKeyserver", httpError);
|
||||||
throw new QueryFailedException("not found");
|
throw new QueryFailedException("not found");
|
||||||
@@ -396,7 +399,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(String armoredKey, Proxy proxy) throws AddKeyException {
|
public void add(String armoredKey) throws AddKeyException {
|
||||||
try {
|
try {
|
||||||
String path = "/pks/add";
|
String path = "/pks/add";
|
||||||
String params;
|
String params;
|
||||||
@@ -407,7 +410,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
URL url = new URL(getUrlPrefix() + mHost + ":" + mPort + path);
|
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);
|
Log.d(Constants.TAG, "params: " + params);
|
||||||
|
|
||||||
RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);
|
RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);
|
||||||
@@ -419,7 +422,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
.post(body)
|
.post(body)
|
||||||
.build();
|
.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, "response code: " + response.code());
|
||||||
Log.d(Constants.TAG, "answer: " + response.body().string());
|
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.
|
* @return A responsible Keyserver or null if not found.
|
||||||
* TODO: Add proxy functionality
|
* TODO: Add proxy functionality
|
||||||
*/
|
*/
|
||||||
public static HkpKeyserver resolve(String domain) {
|
public static HkpKeyserver resolve(String domain, Proxy proxy) {
|
||||||
try {
|
try {
|
||||||
Record[] records = new Client().query(new Question("_hkp._tcp." + domain, Record.TYPE.SRV)).getAnswers();
|
Record[] records = new Client().query(new Question("_hkp._tcp." + domain, Record.TYPE.SRV)).getAnswers();
|
||||||
if (records.length > 0) {
|
if (records.length > 0) {
|
||||||
@@ -460,7 +463,7 @@ public class HkpKeyserver extends Keyserver {
|
|||||||
Record record = records[0]; // This is our best choice
|
Record record = records[0]; // This is our best choice
|
||||||
if (record.getPayload().getType() == Record.TYPE.SRV) {
|
if (record.getPayload().getType() == Record.TYPE.SRV) {
|
||||||
return new HkpKeyserver(((SRV) record.getPayload()).getName(),
|
return new HkpKeyserver(((SRV) record.getPayload()).getName(),
|
||||||
(short) ((SRV) record.getPayload()).getPort());
|
(short) ((SRV) record.getPayload()).getPort(), proxy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
|
|||||||
@@ -33,10 +33,15 @@ import java.util.List;
|
|||||||
|
|
||||||
public class KeybaseKeyserver extends Keyserver {
|
public class KeybaseKeyserver extends Keyserver {
|
||||||
public static final String ORIGIN = "keybase:keybase.io";
|
public static final String ORIGIN = "keybase:keybase.io";
|
||||||
private String mQuery;
|
|
||||||
|
Proxy mProxy;
|
||||||
|
|
||||||
|
public KeybaseKeyserver(Proxy proxy) {
|
||||||
|
mProxy = proxy;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
|
public ArrayList<ImportKeysListEntry> search(String query) throws QueryFailedException,
|
||||||
QueryNeedsRepairException {
|
QueryNeedsRepairException {
|
||||||
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
||||||
|
|
||||||
@@ -47,14 +52,13 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
if (query.isEmpty()) {
|
if (query.isEmpty()) {
|
||||||
throw new QueryTooShortException();
|
throw new QueryTooShortException();
|
||||||
}
|
}
|
||||||
mQuery = query;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
|
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
|
||||||
keybaseQuery.setProxy(proxy);
|
keybaseQuery.setProxy(mProxy);
|
||||||
Iterable<Match> matches = keybaseQuery.search(query);
|
Iterable<Match> matches = keybaseQuery.search(query);
|
||||||
for (Match match : matches) {
|
for (Match match : matches) {
|
||||||
results.add(makeEntry(match));
|
results.add(makeEntry(match, query));
|
||||||
}
|
}
|
||||||
} catch (KeybaseException e) {
|
} catch (KeybaseException e) {
|
||||||
Log.e(Constants.TAG, "keybase result parsing error", e);
|
Log.e(Constants.TAG, "keybase result parsing error", e);
|
||||||
@@ -64,9 +68,9 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ImportKeysListEntry makeEntry(Match match) throws KeybaseException {
|
private ImportKeysListEntry makeEntry(Match match, String query) throws KeybaseException {
|
||||||
final ImportKeysListEntry entry = new ImportKeysListEntry();
|
final ImportKeysListEntry entry = new ImportKeysListEntry();
|
||||||
entry.setQuery(mQuery);
|
entry.setQuery(query);
|
||||||
entry.addOrigin(ORIGIN);
|
entry.addOrigin(ORIGIN);
|
||||||
|
|
||||||
entry.setRevoked(false); // keybase doesn’t say anything about revoked keys
|
entry.setRevoked(false); // keybase doesn’t say anything about revoked keys
|
||||||
@@ -102,10 +106,10 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String get(String id, Proxy proxy) throws QueryFailedException {
|
public String get(String id) throws QueryFailedException {
|
||||||
try {
|
try {
|
||||||
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
|
KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient());
|
||||||
keybaseQuery.setProxy(proxy);
|
keybaseQuery.setProxy(mProxy);
|
||||||
return User.keyForUsername(keybaseQuery, id);
|
return User.keyForUsername(keybaseQuery, id);
|
||||||
} catch (KeybaseException e) {
|
} catch (KeybaseException e) {
|
||||||
throw new QueryFailedException(e.getMessage());
|
throw new QueryFailedException(e.getMessage());
|
||||||
@@ -113,7 +117,7 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(String armoredKey, Proxy proxy) throws AddKeyException {
|
public void add(String armoredKey) throws AddKeyException {
|
||||||
throw new AddKeyException();
|
throw new AddKeyException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,12 +69,12 @@ public abstract class Keyserver {
|
|||||||
private static final long serialVersionUID = -507574859137295530L;
|
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;
|
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 {
|
public static String readAll(InputStream in, String encoding) throws IOException {
|
||||||
ByteArrayOutputStream raw = new ByteArrayOutputStream();
|
ByteArrayOutputStream raw = new ByteArrayOutputStream();
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ public class ImportOperation extends BaseOperation<ImportKeyringParcel> {
|
|||||||
// Make sure we have the keyserver instance cached
|
// Make sure we have the keyserver instance cached
|
||||||
if (keyServer == null) {
|
if (keyServer == null) {
|
||||||
log.add(LogType.MSG_IMPORT_KEYSERVER, 1, keyServerUri);
|
log.add(LogType.MSG_IMPORT_KEYSERVER, 1, keyServerUri);
|
||||||
keyServer = new HkpKeyserver(keyServerUri);
|
keyServer = new HkpKeyserver(keyServerUri, proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -197,10 +197,10 @@ public class ImportOperation extends BaseOperation<ImportKeyringParcel> {
|
|||||||
if (entry.mExpectedFingerprint != null) {
|
if (entry.mExpectedFingerprint != null) {
|
||||||
log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, "0x" +
|
log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, "0x" +
|
||||||
entry.mExpectedFingerprint.substring(24));
|
entry.mExpectedFingerprint.substring(24));
|
||||||
data = keyServer.get("0x" + entry.mExpectedFingerprint, proxy).getBytes();
|
data = keyServer.get("0x" + entry.mExpectedFingerprint).getBytes();
|
||||||
} else {
|
} else {
|
||||||
log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, entry.mKeyIdHex);
|
log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, entry.mKeyIdHex);
|
||||||
data = keyServer.get(entry.mKeyIdHex, proxy).getBytes();
|
data = keyServer.get(entry.mKeyIdHex).getBytes();
|
||||||
}
|
}
|
||||||
key = UncachedKeyRing.decodeFromData(data);
|
key = UncachedKeyRing.decodeFromData(data);
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
@@ -218,12 +218,12 @@ public class ImportOperation extends BaseOperation<ImportKeyringParcel> {
|
|||||||
if (entry.mKeybaseName != null) {
|
if (entry.mKeybaseName != null) {
|
||||||
// Make sure we have this cached
|
// Make sure we have this cached
|
||||||
if (keybaseServer == null) {
|
if (keybaseServer == null) {
|
||||||
keybaseServer = new KeybaseKeyserver();
|
keybaseServer = new KeybaseKeyserver(proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log.add(LogType.MSG_IMPORT_FETCH_KEYBASE, 2, entry.mKeybaseName);
|
log.add(LogType.MSG_IMPORT_FETCH_KEYBASE, 2, entry.mKeybaseName);
|
||||||
byte[] data = keybaseServer.get(entry.mKeybaseName, proxy).getBytes();
|
byte[] data = keybaseServer.get(entry.mKeybaseName).getBytes();
|
||||||
UncachedKeyRing keybaseKey = UncachedKeyRing.decodeFromData(data);
|
UncachedKeyRing keybaseKey = UncachedKeyRing.decodeFromData(data);
|
||||||
|
|
||||||
// If there already is a key, merge the two
|
// If there already is a key, merge the two
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public class UploadOperation extends BaseOperation<UploadKeyringParcel> {
|
|||||||
|
|
||||||
HkpKeyserver hkpKeyserver;
|
HkpKeyserver hkpKeyserver;
|
||||||
{
|
{
|
||||||
hkpKeyserver = new HkpKeyserver(uploadInput.mKeyserver);
|
hkpKeyserver = new HkpKeyserver(uploadInput.mKeyserver, proxy);
|
||||||
log.add(LogType.MSG_UPLOAD_SERVER, 1, hkpKeyserver.toString());
|
log.add(LogType.MSG_UPLOAD_SERVER, 1, hkpKeyserver.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ public class UploadOperation extends BaseOperation<UploadKeyringParcel> {
|
|||||||
return new UploadResult(UploadResult.RESULT_ERROR, log);
|
return new UploadResult(UploadResult.RESULT_ERROR, log);
|
||||||
}
|
}
|
||||||
|
|
||||||
return uploadKeyRingToServer(log, hkpKeyserver, keyring, proxy);
|
return uploadKeyRingToServer(log, hkpKeyserver, keyring);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -155,7 +155,7 @@ public class UploadOperation extends BaseOperation<UploadKeyringParcel> {
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private UploadResult uploadKeyRingToServer(
|
private UploadResult uploadKeyRingToServer(
|
||||||
OperationLog log, HkpKeyserver server, CanonicalizedPublicKeyRing keyring, Proxy proxy) {
|
OperationLog log, HkpKeyserver server, CanonicalizedPublicKeyRing keyring) {
|
||||||
|
|
||||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
ArmoredOutputStream aos = null;
|
ArmoredOutputStream aos = null;
|
||||||
@@ -166,7 +166,7 @@ public class UploadOperation extends BaseOperation<UploadKeyringParcel> {
|
|||||||
aos.close();
|
aos.close();
|
||||||
|
|
||||||
String armoredKey = bos.toString("UTF-8");
|
String armoredKey = bos.toString("UTF-8");
|
||||||
server.add(armoredKey, proxy);
|
server.add(armoredKey);
|
||||||
|
|
||||||
updateProgress(R.string.progress_uploading, 1, 1);
|
updateProgress(R.string.progress_uploading, 1, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -74,9 +74,9 @@ public class EmailKeyHelper {
|
|||||||
// Try _hkp._tcp SRV record first
|
// Try _hkp._tcp SRV record first
|
||||||
String[] mailparts = mail.split("@");
|
String[] mailparts = mail.split("@");
|
||||||
if (mailparts.length == 2) {
|
if (mailparts.length == 2) {
|
||||||
HkpKeyserver hkp = HkpKeyserver.resolve(mailparts[1]);
|
HkpKeyserver hkp = HkpKeyserver.resolve(mailparts[1], proxy);
|
||||||
if (hkp != null) {
|
if (hkp != null) {
|
||||||
keys.addAll(getEmailKeys(mail, hkp, proxy));
|
keys.addAll(getEmailKeys(mail, hkp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,18 +84,17 @@ public class EmailKeyHelper {
|
|||||||
// Most users don't have the SRV record, so ask a default server as well
|
// Most users don't have the SRV record, so ask a default server as well
|
||||||
String server = Preferences.getPreferences(context).getPreferredKeyserver();
|
String server = Preferences.getPreferences(context).getPreferredKeyserver();
|
||||||
if (server != null) {
|
if (server != null) {
|
||||||
HkpKeyserver hkp = new HkpKeyserver(server);
|
HkpKeyserver hkp = new HkpKeyserver(server, proxy);
|
||||||
keys.addAll(getEmailKeys(mail, hkp, proxy));
|
keys.addAll(getEmailKeys(mail, hkp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ImportKeysListEntry> getEmailKeys(String mail, Keyserver keyServer,
|
public static List<ImportKeysListEntry> getEmailKeys(String mail, Keyserver keyServer) {
|
||||||
Proxy proxy) {
|
|
||||||
Set<ImportKeysListEntry> keys = new HashSet<>();
|
Set<ImportKeysListEntry> keys = new HashSet<>();
|
||||||
try {
|
try {
|
||||||
for (ImportKeysListEntry key : keyServer.search(mail, proxy)) {
|
for (ImportKeysListEntry key : keyServer.search(mail)) {
|
||||||
if (key.isRevoked() || key.isExpired()) continue;
|
if (key.isRevoked() || key.isExpired()) continue;
|
||||||
for (String userId : key.getUserIds()) {
|
for (String userId : key.getUserIds()) {
|
||||||
if (userId.toLowerCase().contains(mail.toLowerCase(Locale.ENGLISH))) {
|
if (userId.toLowerCase().contains(mail.toLowerCase(Locale.ENGLISH))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user