added proxy to all import operations using KeychainService

This commit is contained in:
Adithya Abraham Philip
2015-06-11 05:33:31 +05:30
parent aa7ad4ac63
commit 79fc0f97ea
8 changed files with 122 additions and 21 deletions

View File

@@ -41,7 +41,9 @@ import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.NfcListenerFragment;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationFragment;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
import org.sufficientlysecure.keychain.util.orbot.OrbotHelper;
public class CreateYubiKeyImportFragment
@@ -120,7 +122,19 @@ public class CreateYubiKeyImportFragment
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
importKey();
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity()).getProxyPrefs();
Runnable ignoreTor = new Runnable() {
@Override
public void run() {
importKey(new ParcelableProxy(null, -1, null));
}
};
if(OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
getActivity())) {
importKey(proxyPrefs.parcelableProxy);
}
}
});
}
@@ -176,7 +190,7 @@ public class CreateYubiKeyImportFragment
Preferences.getPreferences(getActivity()).getCloudSearchPrefs()), null);
}
public void importKey() {
public void importKey(ParcelableProxy parcelableProxy) {
ArrayList<ParcelableKeyRing> keyList = new ArrayList<>();
keyList.add(new ParcelableKeyRing(mNfcFingerprint, null, null));

View File

@@ -58,7 +58,9 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.util.ParcelableProxy;
import org.sufficientlysecure.keychain.util.Preferences;
import org.sufficientlysecure.keychain.util.orbot.OrbotHelper;
public abstract class DecryptFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
@@ -136,7 +138,7 @@ public abstract class DecryptFragment extends Fragment implements LoaderManager.
}
}
private void lookupUnknownKey(long unknownKeyId) {
private void lookupUnknownKey(long unknownKeyId, ParcelableProxy parcelableProxy) {
final ArrayList<ParcelableKeyRing> keyList;
final String keyserver;
@@ -427,7 +429,19 @@ public abstract class DecryptFragment extends Fragment implements LoaderManager.
mSignatureLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lookupUnknownKey(signatureKeyId);
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity())
.getProxyPrefs();
Runnable ignoreTor = new Runnable() {
@Override
public void run() {
lookupUnknownKey(signatureKeyId, new ParcelableProxy(null, -1, null));
}
};
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
getActivity())) {
lookupUnknownKey(signatureKeyId, proxyPrefs.parcelableProxy);
}
}
});

View File

@@ -44,7 +44,9 @@ import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.util.IntentIntegratorSupportV4;
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.util.ArrayList;
import java.util.Locale;
@@ -157,8 +159,7 @@ public class ImportKeysProxyActivity extends FragmentActivity
returnResult(intent);
return;
}
String fingerprint = uri.getEncodedSchemeSpecificPart().toLowerCase(Locale.ENGLISH);
final String fingerprint = uri.getEncodedSchemeSpecificPart().toLowerCase(Locale.ENGLISH);
if (!fingerprint.matches("[a-fA-F0-9]{40}")) {
SingletonResult result = new SingletonResult(
SingletonResult.RESULT_ERROR, LogType.MSG_WRONG_QR_CODE_FP);
@@ -194,23 +195,23 @@ public class ImportKeysProxyActivity extends FragmentActivity
}
}
public void importKeys(byte[] keyringData) {
public void importKeys(byte[] keyringData, ParcelableProxy parcelableProxy) {
ParcelableKeyRing keyEntry = new ParcelableKeyRing(keyringData);
ArrayList<ParcelableKeyRing> selectedEntries = new ArrayList<>();
selectedEntries.add(keyEntry);
startImportService(selectedEntries);
startImportService(selectedEntries, parcelableProxy);
}
public void importKeys(String fingerprint) {
public void importKeys(String fingerprint, ParcelableProxy parcelableProxy) {
ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null);
ArrayList<ParcelableKeyRing> selectedEntries = new ArrayList<>();
selectedEntries.add(keyEntry);
startImportService(selectedEntries);
startImportService(selectedEntries, parcelableProxy);
}
private void startImportService(ArrayList<ParcelableKeyRing> keyRings) {
private void startImportService(ArrayList<ParcelableKeyRing> keyRings, ParcelableProxy parcelableProxy) {
// search config
{
@@ -273,8 +274,19 @@ public class ImportKeysProxyActivity extends FragmentActivity
// only one message sent during the beam
NdefMessage msg = (NdefMessage) rawMsgs[0];
// record 0 contains the MIME type, record 1 is the AAR, if present
byte[] receivedKeyringBytes = msg.getRecords()[0].getPayload();
importKeys(receivedKeyringBytes);
final byte[] receivedKeyringBytes = msg.getRecords()[0].getPayload();
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(this)
.getProxyPrefs();
Runnable ignoreTor = new Runnable() {
@Override
public void run() {
importKeys(receivedKeyringBytes, new ParcelableProxy(null, -1, null));
}
};
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs, this)) {
importKeys(receivedKeyringBytes, proxyPrefs.parcelableProxy);
}
}
}

View File

@@ -71,16 +71,17 @@ import org.sufficientlysecure.keychain.ui.dialog.DeleteKeyDialogFragment;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.adapter.KeyAdapter;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.util.ExportHelper;
import org.sufficientlysecure.keychain.util.FabContainer;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Preferences;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import org.sufficientlysecure.keychain.util.orbot.OrbotHelper;
import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
@@ -562,7 +563,7 @@ public class KeyListFragment extends LoaderFragment
startActivityForResult(intent, REQUEST_ACTION);
}
private void updateAllKeys() {
private void updateAllKeys(ParcelableProxy parcelableProxy) {
Activity activity = getActivity();
if (activity == null) {
return;

View File

@@ -37,7 +37,9 @@ import org.sufficientlysecure.keychain.service.ExportKeyringParcel;
import org.sufficientlysecure.keychain.ui.base.BaseActivity;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
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;
/**
* Sends the selected public key to a keyserver
@@ -76,7 +78,19 @@ public class UploadKeyActivity extends BaseActivity
mUploadButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
uploadKey();
final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(UploadKeyActivity.this)
.getProxyPrefs();
Runnable ignoreTor = new Runnable() {
@Override
public void run() {
uploadKey(proxyPrefs.parcelableProxy);
}
};
if (OrbotHelper.isOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
UploadKeyActivity.this)) {
uploadKey(proxyPrefs.parcelableProxy);
}
}
});

View File

@@ -53,6 +53,7 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.getbase.floatingactionbutton.FloatingActionButton;
import edu.cmu.cylab.starslinger.exchange.ExchangeActivity;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing;
@@ -80,11 +81,6 @@ import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.Notify.ActionListener;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.ui.util.QrCodeUtils;
import org.sufficientlysecure.keychain.util.ContactHelper;
import org.sufficientlysecure.keychain.util.ExportHelper;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.NfcHelper;
import org.sufficientlysecure.keychain.util.Preferences;
import java.io.IOException;
import java.util.ArrayList;