diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-09-21 12:49:02 +0200 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-09-21 12:49:02 +0200 | 
| commit | ad2c8867e67e71f8b3d88db93911a7e37ed4bf69 (patch) | |
| tree | ca60cf14df28f200c02079ffcbfe9089c187c246 /OpenKeychain/src/main/java/org | |
| parent | 0b181743a3d6b1423e112b17a400b5ac4ac09bcb (diff) | |
| download | open-keychain-ad2c8867e67e71f8b3d88db93911a7e37ed4bf69.tar.gz open-keychain-ad2c8867e67e71f8b3d88db93911a7e37ed4bf69.tar.bz2 open-keychain-ad2c8867e67e71f8b3d88db93911a7e37ed4bf69.zip | |
Use more modular Keybase lib with OkHttp wrapper
Diffstat (limited to 'OpenKeychain/src/main/java/org')
5 files changed, 125 insertions, 18 deletions
| 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 c2865410e..486d658f6 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java @@ -19,12 +19,13 @@ package org.sufficientlysecure.keychain.keyimport;  import com.textuality.keybase.lib.KeybaseException;  import com.textuality.keybase.lib.Match; -import com.textuality.keybase.lib.Search; +import com.textuality.keybase.lib.KeybaseQuery;  import com.textuality.keybase.lib.User;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;  import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.util.OkHttpKeybaseClient;  import java.net.Proxy;  import java.util.ArrayList; @@ -49,7 +50,9 @@ public class KeybaseKeyserver extends Keyserver {          mQuery = query;          try { -            Iterable<Match> matches = Search.search(query, proxy); +            KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient()); +            keybaseQuery.setProxy(proxy); +            Iterable<Match> matches = keybaseQuery.search(query);              for (Match match : matches) {                  results.add(makeEntry(match));              } @@ -101,7 +104,9 @@ public class KeybaseKeyserver extends Keyserver {      @Override      public String get(String id, Proxy proxy) throws QueryFailedException {          try { -            return User.keyForUsername(id, proxy); +            KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient()); +            keybaseQuery.setProxy(proxy); +            return User.keyForUsername(keybaseQuery, id);          } catch (KeybaseException e) {              throw new QueryFailedException(e.getMessage());          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/KeybaseVerificationOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/KeybaseVerificationOperation.java index 8f1abde83..aaff0a07c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/KeybaseVerificationOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/KeybaseVerificationOperation.java @@ -20,39 +20,43 @@  package org.sufficientlysecure.keychain.operations; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.net.Proxy; -import java.util.ArrayList; -import java.util.List; -  import android.content.Context;  import android.support.annotation.NonNull; +import com.textuality.keybase.lib.KeybaseQuery;  import com.textuality.keybase.lib.Proof;  import com.textuality.keybase.lib.prover.Prover; -import de.measite.minidns.Client; -import de.measite.minidns.DNSMessage; -import de.measite.minidns.Question; -import de.measite.minidns.Record; -import de.measite.minidns.record.Data; -import de.measite.minidns.record.TXT; +  import org.json.JSONObject;  import org.spongycastle.openpgp.PGPUtil;  import org.sufficientlysecure.keychain.R;  import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;  import org.sufficientlysecure.keychain.operations.results.KeybaseVerificationResult;  import org.sufficientlysecure.keychain.operations.results.OperationResult; -import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyOperation;  import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyInputParcel; +import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyOperation;  import org.sufficientlysecure.keychain.pgp.Progressable;  import org.sufficientlysecure.keychain.provider.ProviderHelper;  import org.sufficientlysecure.keychain.service.KeybaseVerificationParcel;  import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;  import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; +import org.sufficientlysecure.keychain.util.OkHttpKeybaseClient;  import org.sufficientlysecure.keychain.util.Preferences;  import org.sufficientlysecure.keychain.util.orbot.OrbotHelper; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.net.Proxy; +import java.util.ArrayList; +import java.util.List; + +import de.measite.minidns.Client; +import de.measite.minidns.DNSMessage; +import de.measite.minidns.Question; +import de.measite.minidns.Record; +import de.measite.minidns.record.Data; +import de.measite.minidns.record.TXT; +  public class KeybaseVerificationOperation extends BaseOperation<KeybaseVerificationParcel> {      public KeybaseVerificationOperation(Context context, ProviderHelper providerHelper, @@ -83,6 +87,9 @@ public class KeybaseVerificationOperation extends BaseOperation<KeybaseVerificat          log.add(OperationResult.LogType.MSG_KEYBASE_VERIFICATION, 0, requiredFingerprint);          try { +            KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient()); +            keybaseQuery.setProxy(proxy); +              String keybaseProof = keybaseInput.mKeybaseProof;              Proof proof = new Proof(new JSONObject(keybaseProof));              mProgressable.setProgress(R.string.keybase_message_fetching_data, 0, 100); @@ -95,7 +102,7 @@ public class KeybaseVerificationOperation extends BaseOperation<KeybaseVerificat                  return new KeybaseVerificationResult(OperationResult.RESULT_ERROR, log);              } -            if (!prover.fetchProofData(proxy)) { +            if (!prover.fetchProofData(keybaseQuery)) {                  log.add(OperationResult.LogType.MSG_KEYBASE_ERROR_FETCH_PROOF, 1);                  return new KeybaseVerificationResult(OperationResult.RESULT_ERROR, log);              } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyKeybaseFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyKeybaseFragment.java index 266633061..5951702c4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyKeybaseFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyKeybaseFragment.java @@ -40,6 +40,7 @@ import android.widget.TableRow;  import android.widget.TextView;  import com.textuality.keybase.lib.KeybaseException; +import com.textuality.keybase.lib.KeybaseQuery;  import com.textuality.keybase.lib.Proof;  import com.textuality.keybase.lib.User; @@ -51,6 +52,7 @@ import org.sufficientlysecure.keychain.service.KeybaseVerificationParcel;  import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;  import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;  import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.util.OkHttpKeybaseClient;  import org.sufficientlysecure.keychain.util.ParcelableProxy;  import org.sufficientlysecure.keychain.util.Preferences;  import org.sufficientlysecure.keychain.util.orbot.OrbotHelper; @@ -240,7 +242,9 @@ public class ViewKeyKeybaseFragment extends LoaderFragment implements              final ArrayList<CharSequence> proofList = new ArrayList<CharSequence>();              final Hashtable<Integer, ArrayList<Proof>> proofs = new Hashtable<Integer, ArrayList<Proof>>();              try { -                User keybaseUser = User.findByFingerprint(fingerprint, mParcelableProxy.getProxy()); +                KeybaseQuery keybaseQuery = new KeybaseQuery(new OkHttpKeybaseClient()); +                keybaseQuery.setProxy(mParcelableProxy.getProxy()); +                User keybaseUser = User.findByFingerprint(keybaseQuery, fingerprint);                  for (Proof proof : keybaseUser.getProofs()) {                      Integer proofType = proof.getType();                      appendIfOK(proofs, proofType, proof); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java index ab73f59b8..d06f2ab65 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java @@ -1,3 +1,20 @@ +/* + * Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +  package org.sufficientlysecure.keychain.util; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/OkHttpKeybaseClient.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/OkHttpKeybaseClient.java new file mode 100644 index 000000000..7c1d9f291 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/OkHttpKeybaseClient.java @@ -0,0 +1,74 @@ +package org.sufficientlysecure.keychain.util; + +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.OkUrlFactory; +/* + * Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +import com.textuality.keybase.lib.KeybaseUrlConnectionClient; + +import java.io.IOException; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.util.concurrent.TimeUnit; + +/** + * Wrapper for Keybase Lib + */ +public class OkHttpKeybaseClient implements KeybaseUrlConnectionClient { + +    private final OkUrlFactory factory; +    private final OkUrlFactory proxyFactory; + +    private static OkUrlFactory generateUrlFactory() { +        OkHttpClient client = new OkHttpClient(); +        client.setConnectTimeout(5000, TimeUnit.MILLISECONDS); +        client.setReadTimeout(25000, TimeUnit.MILLISECONDS); +        return new OkUrlFactory(client); +    } + +    private static OkUrlFactory generateProxyUrlFactory() { +        OkHttpClient client = new OkHttpClient(); +        client.setConnectTimeout(30000, TimeUnit.MILLISECONDS); +        client.setReadTimeout(40000, TimeUnit.MILLISECONDS); +        return new OkUrlFactory(client); +    } + +    public OkHttpKeybaseClient() { +        factory = generateUrlFactory(); +        proxyFactory = generateProxyUrlFactory(); +    } + +    @Override +    public URLConnection openConnection(URL url) throws IOException { +        return openConnection(url, null); +    } + +    @Override +    public URLConnection openConnection(URL url, Proxy proxy) throws IOException { +        URLConnection conn; +        if (proxy != null) { +            proxyFactory.client().setProxy(proxy); +            conn = proxyFactory.open(url); +        } else { +            conn = factory.open(url); +        } +        return conn; +    } + +}
\ No newline at end of file | 
