mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-12-24 07:58:50 -05:00
added proxy support to KeybaseLib
This commit is contained in:
parent
e1f4199585
commit
af2f922f06
@ -62,17 +62,21 @@ public class CloudSearch {
|
|||||||
new Thread(r).start();
|
new Thread(r).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
// wait for either all the searches to come back, or 10 seconds
|
// wait for either all the searches to come back, or 10 seconds. If using proxy, wait 30 seconds.
|
||||||
synchronized(results) {
|
synchronized(results) {
|
||||||
try {
|
try {
|
||||||
results.wait(10 * SECONDS);
|
if (proxy != null) {
|
||||||
|
results.wait(30 * SECONDS);
|
||||||
|
} else{
|
||||||
|
results.wait(10 * SECONDS);
|
||||||
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results.outstandingSuppliers() > 0) {
|
if (results.outstandingSuppliers() > 0) {
|
||||||
String message = "Launched " + servers.size() + " cloud searchers, but" +
|
String message = "Launched " + servers.size() + " cloud searchers, but " +
|
||||||
results.outstandingSuppliers() + "failed to complete.";
|
results.outstandingSuppliers() + " failed to complete.";
|
||||||
problems.add(new Keyserver.QueryFailedException(message));
|
problems.add(new Keyserver.QueryFailedException(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,6 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
@Override
|
@Override
|
||||||
public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
|
public ArrayList<ImportKeysListEntry> search(String query, Proxy proxy) throws QueryFailedException,
|
||||||
QueryNeedsRepairException {
|
QueryNeedsRepairException {
|
||||||
// TODO: implement proxy
|
|
||||||
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
ArrayList<ImportKeysListEntry> results = new ArrayList<>();
|
||||||
|
|
||||||
if (query.startsWith("0x")) {
|
if (query.startsWith("0x")) {
|
||||||
@ -50,7 +49,7 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
mQuery = query;
|
mQuery = query;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Iterable<Match> matches = Search.search(query);
|
Iterable<Match> matches = Search.search(query, proxy);
|
||||||
for (Match match : matches) {
|
for (Match match : matches) {
|
||||||
results.add(makeEntry(match));
|
results.add(makeEntry(match));
|
||||||
}
|
}
|
||||||
@ -101,9 +100,8 @@ public class KeybaseKeyserver extends Keyserver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String get(String id, Proxy proxy) throws QueryFailedException {
|
public String get(String id, Proxy proxy) throws QueryFailedException {
|
||||||
// TODO: implement proxy
|
|
||||||
try {
|
try {
|
||||||
return User.keyForUsername(id);
|
return User.keyForUsername(id, proxy);
|
||||||
} catch (KeybaseException e) {
|
} catch (KeybaseException e) {
|
||||||
throw new QueryFailedException(e.getMessage());
|
throw new QueryFailedException(e.getMessage());
|
||||||
}
|
}
|
||||||
|
@ -234,6 +234,8 @@ public class KeychainService extends Service implements Progressable {
|
|||||||
}
|
}
|
||||||
case ACTION_VERIFY_KEYBASE_PROOF: {
|
case ACTION_VERIFY_KEYBASE_PROOF: {
|
||||||
|
|
||||||
|
Proxy proxy = getProxyFromBundle(data);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Proof proof = new Proof(new JSONObject(data.getString(KEYBASE_PROOF)));
|
Proof proof = new Proof(new JSONObject(data.getString(KEYBASE_PROOF)));
|
||||||
setProgress(R.string.keybase_message_fetching_data, 0, 100);
|
setProgress(R.string.keybase_message_fetching_data, 0, 100);
|
||||||
@ -246,7 +248,7 @@ public class KeychainService extends Service implements Progressable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!prover.fetchProofData()) {
|
if (!prover.fetchProofData(proxy)) {
|
||||||
sendProofError(prover.getLog(), getString(R.string.keybase_problem_fetching_evidence));
|
sendProofError(prover.getLog(), getString(R.string.keybase_problem_fetching_evidence));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ import android.app.ProgressDialog;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.Messenger;
|
import android.os.Messenger;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
@ -39,7 +38,6 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
|||||||
import org.sufficientlysecure.keychain.service.KeychainService;
|
import org.sufficientlysecure.keychain.service.KeychainService;
|
||||||
import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity;
|
import org.sufficientlysecure.keychain.ui.base.BaseNfcActivity;
|
||||||
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
||||||
import org.sufficientlysecure.keychain.ui.dialog.InstallDialogFragment;
|
|
||||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
||||||
import org.sufficientlysecure.keychain.ui.util.Notify;
|
import org.sufficientlysecure.keychain.ui.util.Notify;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
@ -364,9 +362,9 @@ public class ImportKeysActivity extends BaseNfcActivity {
|
|||||||
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, mProxyPrefs, this)) {
|
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, mProxyPrefs, this)) {
|
||||||
mListFragment.loadNew(loaderState, mProxyPrefs.parcelableProxy);
|
mListFragment.loadNew(loaderState, mProxyPrefs.parcelableProxy);
|
||||||
}
|
}
|
||||||
|
} else if (loaderState instanceof ImportKeysListFragment.BytesLoaderState) { // must always be true
|
||||||
|
mListFragment.loadNew(loaderState, mProxyPrefs.parcelableProxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
mListFragment.loadNew(loaderState, mProxyPrefs.parcelableProxy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleMessage(Message message) {
|
private void handleMessage(Message message) {
|
||||||
|
@ -53,7 +53,11 @@ import org.sufficientlysecure.keychain.service.KeychainService;
|
|||||||
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
|
||||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
import org.sufficientlysecure.keychain.util.ParcelableProxy;
|
||||||
|
import org.sufficientlysecure.keychain.util.Preferences;
|
||||||
|
import org.sufficientlysecure.keychain.util.orbot.OrbotHelper;
|
||||||
|
|
||||||
|
import java.net.Proxy;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -190,8 +194,21 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
|
|||||||
mStartSearch.setOnClickListener(new View.OnClickListener() {
|
mStartSearch.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
mStartSearch.setEnabled(false);
|
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity()).getProxyPrefs();
|
||||||
new DescribeKey().execute(fingerprint);
|
|
||||||
|
Runnable ignoreTor = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mStartSearch.setEnabled(false);
|
||||||
|
new DescribeKey(proxyPrefs.parcelableProxy).execute(fingerprint);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
|
||||||
|
getActivity())) {
|
||||||
|
mStartSearch.setEnabled(false);
|
||||||
|
new DescribeKey(proxyPrefs.parcelableProxy).execute(fingerprint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -222,6 +239,11 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
|
|||||||
// look for evidence from keybase in the background, make tabular version of result
|
// look for evidence from keybase in the background, make tabular version of result
|
||||||
//
|
//
|
||||||
private class DescribeKey extends AsyncTask<String, Void, ResultPage> {
|
private class DescribeKey extends AsyncTask<String, Void, ResultPage> {
|
||||||
|
ParcelableProxy mParcelableProxy;
|
||||||
|
|
||||||
|
public DescribeKey(ParcelableProxy parcelableProxy) {
|
||||||
|
mParcelableProxy = parcelableProxy;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ResultPage doInBackground(String... args) {
|
protected ResultPage doInBackground(String... args) {
|
||||||
@ -230,7 +252,7 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
|
|||||||
final ArrayList<CharSequence> proofList = new ArrayList<CharSequence>();
|
final ArrayList<CharSequence> proofList = new ArrayList<CharSequence>();
|
||||||
final Hashtable<Integer, ArrayList<Proof>> proofs = new Hashtable<Integer, ArrayList<Proof>>();
|
final Hashtable<Integer, ArrayList<Proof>> proofs = new Hashtable<Integer, ArrayList<Proof>>();
|
||||||
try {
|
try {
|
||||||
User keybaseUser = User.findByFingerprint(fingerprint);
|
User keybaseUser = User.findByFingerprint(fingerprint, mParcelableProxy.getProxy());
|
||||||
for (Proof proof : keybaseUser.getProofs()) {
|
for (Proof proof : keybaseUser.getProofs()) {
|
||||||
Integer proofType = proof.getType();
|
Integer proofType = proof.getType();
|
||||||
appendIfOK(proofs, proofType, proof);
|
appendIfOK(proofs, proofType, proof);
|
||||||
@ -274,7 +296,21 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
|
|||||||
ClickableSpan clicker = new ClickableSpan() {
|
ClickableSpan clicker = new ClickableSpan() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
verify(proof, fingerprint);
|
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity()).getProxyPrefs();
|
||||||
|
|
||||||
|
Runnable ignoreTor = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mStartSearch.setEnabled(false);
|
||||||
|
verify(proof, fingerprint, new ParcelableProxy(null, -1, null));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
|
||||||
|
getActivity())) {
|
||||||
|
mStartSearch.setEnabled(false);
|
||||||
|
verify(proof, fingerprint, mParcelableProxy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ssb.setSpan(clicker, startAt, startAt + verify.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
ssb.setSpan(clicker, startAt, startAt + verify.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
@ -348,13 +384,16 @@ public class ViewKeyTrustFragment extends LoaderFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void verify(final Proof proof, final String fingerprint) {
|
private void verify(final Proof proof, final String fingerprint, ParcelableProxy parcelableProxy) {
|
||||||
Intent intent = new Intent(getActivity(), KeychainService.class);
|
Intent intent = new Intent(getActivity(), KeychainService.class);
|
||||||
Bundle data = new Bundle();
|
Bundle data = new Bundle();
|
||||||
intent.setAction(KeychainService.ACTION_VERIFY_KEYBASE_PROOF);
|
intent.setAction(KeychainService.ACTION_VERIFY_KEYBASE_PROOF);
|
||||||
|
|
||||||
data.putString(KeychainService.KEYBASE_PROOF, proof.toString());
|
data.putString(KeychainService.KEYBASE_PROOF, proof.toString());
|
||||||
data.putString(KeychainService.KEYBASE_REQUIRED_FINGERPRINT, fingerprint);
|
data.putString(KeychainService.KEYBASE_REQUIRED_FINGERPRINT, fingerprint);
|
||||||
|
|
||||||
|
data.putParcelable(KeychainService.EXTRA_PARCELABLE_PROXY, parcelableProxy);
|
||||||
|
|
||||||
intent.putExtra(KeychainService.EXTRA_DATA, data);
|
intent.putExtra(KeychainService.EXTRA_DATA, data);
|
||||||
|
|
||||||
mProofVerifyDetail.setVisibility(View.GONE);
|
mProofVerifyDetail.setVisibility(View.GONE);
|
||||||
|
2
extern/KeybaseLib
vendored
2
extern/KeybaseLib
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 9615d90b18d1aee4dad994aa45875adfdcfb3c34
|
Subproject commit 187caa13d766fc92fa26b704183f6aebeb029f9e
|
Loading…
Reference in New Issue
Block a user