From bce2f852b31906dccd0bcd6fe0a537992a4a6f99 Mon Sep 17 00:00:00 2001 From: Tim Bray Date: Tue, 18 Nov 2014 22:21:16 -0800 Subject: [PATCH 1/7] Improve proofLabels to handle more than twitter/github and the only the first (!) listed site --- .../com/textuality/keybase/lib/Match.java | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/Lib/src/main/java/com/textuality/keybase/lib/Match.java b/Lib/src/main/java/com/textuality/keybase/lib/Match.java index e71edf2..5916b5f 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/Match.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/Match.java @@ -21,7 +21,9 @@ import org.json.JSONObject; import java.util.ArrayList; +import java.util.Hashtable; import java.util.List; +import java.util.Set; public class Match { private final JSONObject mComponents; @@ -86,18 +88,48 @@ public int getBitStrength() throws KeybaseException { public List getProofLabels() { ArrayList labels = new ArrayList(); try { - labels.add("twitter.com/" + JWalk.getString(mComponents, "twitter", "val")); + labels.add("Twitter: @" + JWalk.getString(mComponents, "twitter", "val")); } catch (JSONException e) { // s'OK } try { - labels.add("github.com/" + JWalk.getString(mComponents, "github", "val")); + labels.add("GitHub: " + JWalk.getString(mComponents, "github", "val")); + } catch (JSONException e) { + // s'OK + } + try { + labels.add("Reddit: " + JWalk.getString(mComponents, "reddit", "val")); + } catch (JSONException e) { + // s'OK + } + try { + labels.add("Hacker News: " + JWalk.getString(mComponents, "hackernews", "val")); + } catch (JSONException e) { + // s'OK + } + try { + labels.add("Coinbase: " + JWalk.getString(mComponents, "coinbase", "val")); } catch (JSONException e) { // s'OK } try { JSONArray sites = JWalk.getArray(mComponents, "websites"); - labels.add(JWalk.getString(sites.getJSONObject(0), "val")); + Hashtable uniqueNames = new Hashtable(); + int i; + for (i = 0; i < sites.length(); i++) { + uniqueNames.put(JWalk.getString(sites.getJSONObject(i), "val"), 1); + } + Set names = uniqueNames.keySet(); + StringBuilder label = new StringBuilder("Web: "); + i = 0; + for (String name : names) { + label.append(name); + if (i < names.size() - 1) { + label.append(", "); + } + i++; + } + labels.add(label.toString()); } catch (JSONException e) { // s'OK } From b2a8fe1327f6195681640f02f3623bd44e8a6db0 Mon Sep 17 00:00:00 2001 From: Tim Bray Date: Sat, 22 Nov 2014 09:31:56 -0800 Subject: [PATCH 2/7] Add check of proof fingerprint vs key-being-verified fingerprint --- .../textuality/keybase/lib/prover/Prover.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java index c5e06cb..c521c39 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java @@ -52,15 +52,17 @@ * How to use: * 1. call fetchProofData(), which will exhibit network latency. If it returns false the proof * verification failed; an explanation can be found in the log. - * 2. fetch the PGP message with getPgpMessage(), check that it’s signed with the right fingerprint + * 2. call checkFingerprint(), passing it the fingerprint of the key you’re checking up on; if + * if it returns false the verification failed. + * 3. fetch the PGP message with getPgpMessage(), check that it’s signed with the right fingerprint * (see above). - * 3. Call dnsTxtCheckRequired() and if it returns non-null, the return value is a domain name; + * 4. Call dnsTxtCheckRequired() and if it returns non-null, the return value is a domain name; * retrieve TXT records from that domain and pass them to checkDnsTxt(); if it returns false * the proof verification failed; an explanation can be found in the log. - * 4. call rawMessageCheckRequired() and if it returns true, feed the raw (de-armored) bytes + * 5. call rawMessageCheckRequired() and if it returns true, feed the raw (de-armored) bytes * of the message to checkRawMessageBytes(). if it returns false the proof verification failed; * an explanation can be found in the log. This may exhibit crypto latency. - * 5. Pass the message to validate(), which should have no real latency. If it returns false the + * 6. Pass the message to validate(), which should have no real latency. If it returns false the * proof verification failed; an explanation can be found in the log. */ public abstract class Prover { @@ -68,6 +70,7 @@ public abstract class Prover { String mPgpMessage; String mPayload; String mShortenedMessageHash; + String mFingerprintUsedInProof = null; final Proof mProof; final List mLog = new ArrayList(); @@ -94,6 +97,10 @@ public String getPgpMessage() { return mPgpMessage; } + public boolean checkFingerprint(String fingerprint) { + return fingerprint.equalsIgnoreCase(mFingerprintUsedInProof); + } + public boolean validate(String decryptedMessage) { return mPayload.equals(decryptedMessage); } @@ -111,6 +118,7 @@ JSONObject readSig(String sigId) throws JSONException, KeybaseException { sigJSON = JWalk.getArray(sigJSON, "sigs").getJSONObject(0); mPayload = JWalk.getString(sigJSON, "payload_json"); mPgpMessage = JWalk.getString(sigJSON, "sig"); + mFingerprintUsedInProof = JWalk.getString(sigJSON, "fingerprint"); mLog.add("Extracted payload & message from sig"); From 1a252cc588921515442d467aeeca07b33a39156b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Thu, 4 Dec 2014 18:57:16 +0100 Subject: [PATCH 3/7] Update for Android Studio 1.0 RC --- Lib/build.gradle | 10 +--------- build.gradle | 2 +- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/Lib/build.gradle b/Lib/build.gradle index 13fcd23..6a3cc73 100644 --- a/Lib/build.gradle +++ b/Lib/build.gradle @@ -1,19 +1,11 @@ -apply plugin: 'android-library' +apply plugin: 'com.android.library' android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { - applicationId "com.textuality.keybase.lib" minSdkVersion 9 targetSdkVersion 19 } - - buildTypes { - release { - runProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' - } - } } diff --git a/build.gradle b/build.gradle index 0d9b5eb..b53db4f 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,6 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'com.android.tools.build:gradle:1.0.0-rc3' } } From 9615d90b18d1aee4dad994aa45875adfdcfb3c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 2 Mar 2015 16:18:33 +0100 Subject: [PATCH 4/7] Use SDK and build tools versions from root project --- Lib/build.gradle | 4 ++-- Lib/src/main/res/values/styles.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/build.gradle b/Lib/build.gradle index 6a3cc73..949b00b 100644 --- a/Lib/build.gradle +++ b/Lib/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 19 - buildToolsVersion "19.1.0" + compileSdkVersion rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion 9 diff --git a/Lib/src/main/res/values/styles.xml b/Lib/src/main/res/values/styles.xml index 6ce89c7..d5ff31a 100644 --- a/Lib/src/main/res/values/styles.xml +++ b/Lib/src/main/res/values/styles.xml @@ -13,7 +13,7 @@ - From 187caa13d766fc92fa26b704183f6aebeb029f9e Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Thu, 11 Jun 2015 08:23:23 +0530 Subject: [PATCH 5/7] added proxy support --- Lib/build.gradle | 4 ++ .../com/textuality/keybase/lib/Search.java | 46 ++++++++++++++----- .../java/com/textuality/keybase/lib/User.java | 13 +++--- .../keybase/lib/prover/Coinbase.java | 5 +- .../textuality/keybase/lib/prover/DNS.java | 5 +- .../textuality/keybase/lib/prover/GitHub.java | 6 ++- .../keybase/lib/prover/HackerNews.java | 5 +- .../textuality/keybase/lib/prover/Prover.java | 7 +-- .../textuality/keybase/lib/prover/Reddit.java | 5 +- .../keybase/lib/prover/Twitter.java | 5 +- .../keybase/lib/prover/Website.java | 5 +- 11 files changed, 72 insertions(+), 34 deletions(-) diff --git a/Lib/build.gradle b/Lib/build.gradle index 949b00b..95ce478 100644 --- a/Lib/build.gradle +++ b/Lib/build.gradle @@ -1,5 +1,9 @@ apply plugin: 'com.android.library' +dependencies { + compile 'com.squareup.okhttp:okhttp:2.4.0' +} + android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion diff --git a/Lib/src/main/java/com/textuality/keybase/lib/Search.java b/Lib/src/main/java/com/textuality/keybase/lib/Search.java index 98e1b56..ff73f5e 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/Search.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/Search.java @@ -18,6 +18,9 @@ import android.util.Log; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; +import com.squareup.okhttp.Response; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -26,17 +29,20 @@ import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; +import java.net.Proxy; import java.net.URL; import java.net.URLEncoder; +import java.sql.Time; import java.util.Iterator; import java.util.NoSuchElementException; +import java.util.concurrent.TimeUnit; public class Search { private static final String TAG = "KEYBASE-LIB"; - public static Iterable search(String query) throws KeybaseException { - JSONObject result = getFromKeybase("_/api/1.0/user/autocomplete.json?q=", query); + public static Iterable search(String query, Proxy proxy) throws KeybaseException { + JSONObject result = getFromKeybase("_/api/1.0/user/autocomplete.json?q=", query, proxy); try { return new MatchIterator(JWalk.getArray(result, "completions")); } catch (JSONException e) { @@ -44,18 +50,32 @@ public static Iterable search(String query) throws KeybaseException { } } - public static JSONObject getFromKeybase(String path, String query) throws KeybaseException { + public static JSONObject getFromKeybase(String path, String query, Proxy proxy) throws KeybaseException { try { String url = "https://keybase.io/" + path + URLEncoder.encode(query, "utf8"); URL realUrl = new URL(url); - HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); - conn.setConnectTimeout(5000); // TODO: Reasonable values for keybase - conn.setReadTimeout(25000); - conn.connect(); - int response = conn.getResponseCode(); + + OkHttpClient client = new OkHttpClient(); + client.setProxy(proxy); + + if (proxy != null) { + client.setConnectTimeout(30000, TimeUnit.MILLISECONDS); + client.setReadTimeout(40000, TimeUnit.MILLISECONDS); + } else { + client.setConnectTimeout(5000, TimeUnit.MILLISECONDS); // TODO: Reasonable values for keybase + client.setReadTimeout(25000, TimeUnit.MILLISECONDS); + } + + tempIpTest(client); + + Response resp = client.newCall(new Request.Builder().url(realUrl).build()).execute(); + + int response = resp.code(); + + String text = resp.body().string(); + if (response >= 200 && response < 300) { - String text = snarf(conn.getInputStream()); try { JSONObject json = new JSONObject(text); if (JWalk.getInt(json, "status", "code") != 0) { @@ -66,14 +86,18 @@ public static JSONObject getFromKeybase(String path, String query) throws Keybas throw KeybaseException.keybaseScrewup(e); } } else { - String message = snarf(conn.getErrorStream()); - throw KeybaseException.networkScrewup("Keybase.io query error (status=" + response + "): " + message); + throw KeybaseException.networkScrewup("Keybase.io query error (status=" + response + "): " + text); } } catch (Exception e) { throw KeybaseException.networkScrewup(e); } } + public static void tempIpTest(OkHttpClient client) throws IOException { + Log.e("PHILIP","ipTest: "+ client.newCall(new Request.Builder().url("https://wtfismyip.com/text").build()) + .execute().body().string()); + } + public static String snarf(InputStream in) throws IOException { byte[] buf = new byte[1024]; diff --git a/Lib/src/main/java/com/textuality/keybase/lib/User.java b/Lib/src/main/java/com/textuality/keybase/lib/User.java index 6548f77..fadab8d 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/User.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/User.java @@ -20,14 +20,15 @@ import org.json.JSONException; import org.json.JSONObject; +import java.net.Proxy; import java.util.Iterator; public class User { private final JSONObject mJson; - public static User findByUsername(String username) throws KeybaseException { - JSONObject json = Search.getFromKeybase("_/api/1.0/user/lookup.json?username=", username); + public static User findByUsername(String username, Proxy proxy) throws KeybaseException { + JSONObject json = Search.getFromKeybase("_/api/1.0/user/lookup.json?username=", username, proxy); try { json = JWalk.getObject(json, "them"); } catch (JSONException e) { @@ -35,11 +36,11 @@ public static User findByUsername(String username) throws KeybaseException { } return new User(json); } - public static String keyForUsername(String username) throws KeybaseException { - return findByUsername(username).getKey(); + public static String keyForUsername(String username, Proxy proxy) throws KeybaseException { + return findByUsername(username, proxy).getKey(); } - public static User findByFingerprint(String fingerprint) throws KeybaseException { - JSONObject json = Search.getFromKeybase("_/api/1.0/user/lookup.json?key_fingerprint=", fingerprint); + public static User findByFingerprint(String fingerprint, Proxy proxy) throws KeybaseException { + JSONObject json = Search.getFromKeybase("_/api/1.0/user/lookup.json?key_fingerprint=", fingerprint, proxy); try { JSONArray them = JWalk.getArray(json, "them"); if (them.length() != 1) { diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Coinbase.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Coinbase.java index 7c67881..efa08ac 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Coinbase.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Coinbase.java @@ -24,15 +24,16 @@ import org.json.JSONObject; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; public class Coinbase extends Prover { @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); String proofUrl = mProof.getProofUrl(); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/DNS.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/DNS.java index db00999..50d70e7 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/DNS.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/DNS.java @@ -23,6 +23,7 @@ import org.json.JSONException; import org.json.JSONObject; +import java.net.Proxy; import java.util.List; public class DNS extends Prover { @@ -30,10 +31,10 @@ public class DNS extends Prover { private String mDomain = null; @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // the magic string is the base64 of the SHA of the raw message mShortenedMessageHash = JWalk.getString(sigJSON, "sig_id_short"); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/GitHub.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/GitHub.java index 8c7ec8b..52c05e6 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/GitHub.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/GitHub.java @@ -24,6 +24,8 @@ import org.json.JSONException; import org.json.JSONObject; +import java.net.Proxy; + public class GitHub extends Prover { private static final String[] sAllowedApiBases = { @@ -31,10 +33,10 @@ public class GitHub extends Prover { }; @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // find the URL for the markdown form of the gist String markdownURL = JWalk.getString(sigJSON, "api_url"); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/HackerNews.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/HackerNews.java index 161694d..cf764c8 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/HackerNews.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/HackerNews.java @@ -24,15 +24,16 @@ import org.json.JSONObject; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; public class HackerNews extends Prover { @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // the magic string is the base64 of the SHA of the raw message mShortenedMessageHash = JWalk.getString(sigJSON, "sig_id_short"); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java index c521c39..9742972 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Prover.java @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -91,7 +92,7 @@ public Prover(Proof proof) { mProof = proof; } - abstract public boolean fetchProofData(); + abstract public boolean fetchProofData(Proxy proxy); public String getPgpMessage() { return mPgpMessage; @@ -109,10 +110,10 @@ public List getLog() { return mLog; } - JSONObject readSig(String sigId) throws JSONException, KeybaseException { + JSONObject readSig(String sigId, Proxy proxy) throws JSONException, KeybaseException { // fetch the sig - JSONObject sigJSON = Search.getFromKeybase("_/api/1.0/sig/get.json?sig_id=", sigId); + JSONObject sigJSON = Search.getFromKeybase("_/api/1.0/sig/get.json?sig_id=", sigId, proxy); mLog.add("Successfully retrieved sig from Keybase"); sigJSON = JWalk.getArray(sigJSON, "sigs").getJSONObject(0); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Reddit.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Reddit.java index 817a87f..f2ec427 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Reddit.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Reddit.java @@ -26,6 +26,7 @@ import org.json.JSONObject; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; public class Reddit extends Prover { @@ -33,10 +34,10 @@ public class Reddit extends Prover { private String mApiUrl = null; @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // the magic string is the base64 of the SHA of the raw message mShortenedMessageHash = JWalk.getString(sigJSON, "sig_id_short"); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Twitter.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Twitter.java index a0f717a..0c01f81 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Twitter.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Twitter.java @@ -24,6 +24,7 @@ import org.json.JSONObject; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; public class Twitter extends Prover { @@ -33,11 +34,11 @@ public Twitter(Proof proof) { } @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { String tweetUrl = null; try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // the magic string is the base64 of the SHA of the raw message mShortenedMessageHash = JWalk.getString(sigJSON, "sig_id_short"); diff --git a/Lib/src/main/java/com/textuality/keybase/lib/prover/Website.java b/Lib/src/main/java/com/textuality/keybase/lib/prover/Website.java index 4811286..e5e3c35 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/prover/Website.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/prover/Website.java @@ -25,6 +25,7 @@ import org.json.JSONObject; import java.net.MalformedURLException; +import java.net.Proxy; import java.net.URL; public class Website extends Prover { @@ -34,10 +35,10 @@ public Website(Proof proof) { } @Override - public boolean fetchProofData() { + public boolean fetchProofData(Proxy proxy) { try { - JSONObject sigJSON = readSig(mProof.getSigId()); + JSONObject sigJSON = readSig(mProof.getSigId(), proxy); // find the .well-known URL String wellKnownUrl = JWalk.getString(sigJSON, "api_url"); From 22f44ec0bf5d6fba9a41d846b7d188bf900b7b3b Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Tue, 16 Jun 2015 15:04:58 +0530 Subject: [PATCH 6/7] code cleanup --- .../main/java/com/textuality/keybase/lib/Search.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Lib/src/main/java/com/textuality/keybase/lib/Search.java b/Lib/src/main/java/com/textuality/keybase/lib/Search.java index ff73f5e..e14b512 100644 --- a/Lib/src/main/java/com/textuality/keybase/lib/Search.java +++ b/Lib/src/main/java/com/textuality/keybase/lib/Search.java @@ -28,11 +28,9 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.net.HttpURLConnection; import java.net.Proxy; import java.net.URL; import java.net.URLEncoder; -import java.sql.Time; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.concurrent.TimeUnit; @@ -67,8 +65,6 @@ public static JSONObject getFromKeybase(String path, String query, Proxy proxy) client.setReadTimeout(25000, TimeUnit.MILLISECONDS); } - tempIpTest(client); - Response resp = client.newCall(new Request.Builder().url(realUrl).build()).execute(); int response = resp.code(); @@ -79,7 +75,8 @@ public static JSONObject getFromKeybase(String path, String query, Proxy proxy) try { JSONObject json = new JSONObject(text); if (JWalk.getInt(json, "status", "code") != 0) { - throw KeybaseException.queryScrewup("Keybase.io query failed: " + path + "?" + query); + throw KeybaseException.queryScrewup("Keybase.io query failed: " + path + "?" + query + + " using proxy: " + proxy); } return json; } catch (JSONException e) { @@ -93,11 +90,6 @@ public static JSONObject getFromKeybase(String path, String query, Proxy proxy) } } - public static void tempIpTest(OkHttpClient client) throws IOException { - Log.e("PHILIP","ipTest: "+ client.newCall(new Request.Builder().url("https://wtfismyip.com/text").build()) - .execute().body().string()); - } - public static String snarf(InputStream in) throws IOException { byte[] buf = new byte[1024]; From 0b0a60533c5f76b60e43895f3a0342bb0be68539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 6 Jul 2015 17:26:24 +0200 Subject: [PATCH 7/7] Ignore lint errors --- Lib/build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/build.gradle b/Lib/build.gradle index 95ce478..4bef8d3 100644 --- a/Lib/build.gradle +++ b/Lib/build.gradle @@ -12,4 +12,8 @@ android { minSdkVersion 9 targetSdkVersion 19 } -} + + lintOptions { + abortOnError false + } +} \ No newline at end of file