From f29280bbb268d112426c6662e1227118819fb904 Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Wed, 25 Nov 2015 01:35:41 +0530 Subject: added Facebook links support, reworked Preferences --- .../keychain/operations/ImportOperation.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java index 70288123f..a20181a00 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java @@ -38,6 +38,7 @@ import android.support.annotation.NonNull; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.keyimport.FacebookKeyserver; import org.sufficientlysecure.keychain.keyimport.HkpKeyserver; import org.sufficientlysecure.keychain.keyimport.KeybaseKeyserver; import org.sufficientlysecure.keychain.keyimport.Keyserver; @@ -156,6 +157,7 @@ public class ImportOperation extends BaseOperation { double progSteps = 100.0 / num; KeybaseKeyserver keybaseServer = null; + FacebookKeyserver facebookServer = null; HkpKeyserver keyServer = null; // iterate over all entries @@ -228,6 +230,12 @@ public class ImportOperation extends BaseOperation { byte[] data = keybaseServer.get(entry.mKeybaseName).getBytes(); UncachedKeyRing keybaseKey = UncachedKeyRing.decodeFromData(data); + if (keybaseKey != null) { + log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_OK, 3); + } else { + log.add(LogType.MSG_IMPORT_FETCH_ERROR_DECODE, 3); + } + // If there already is a key, merge the two if (key != null && keybaseKey != null) { log.add(LogType.MSG_IMPORT_MERGE, 3); @@ -247,6 +255,44 @@ public class ImportOperation extends BaseOperation { log.add(LogType.MSG_IMPORT_FETCH_ERROR_KEYSERVER, 3, e.getMessage()); } } + + // if the key is from Facebook, fetch from there + if (entry.mFbUsername != null) { + // Make sure we have this cached + if (facebookServer == null) { + facebookServer = new FacebookKeyserver(proxy); + } + + try { + log.add(LogType.MSG_IMPORT_FETCH_FACEBOOK, 2, entry.mFbUsername); + byte[] data = facebookServer.get(entry.mFbUsername).getBytes(); + UncachedKeyRing facebookKey = UncachedKeyRing.decodeFromData(data); + + if (facebookKey != null) { + log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_OK, 3); + } else { + log.add(LogType.MSG_IMPORT_FETCH_ERROR_DECODE, 3); + } + + // If there already is a key, merge the two + if (key != null && facebookKey != null) { + log.add(LogType.MSG_IMPORT_MERGE, 3); + facebookKey = key.merge(facebookKey, log, 4); + // If the merge didn't fail, use the new merged key + if (facebookKey != null) { + key = facebookKey; + } else { + log.add(LogType.MSG_IMPORT_MERGE_ERROR, 4); + } + } else if (facebookKey != null) { + key = facebookKey; + } + } catch (Keyserver.QueryFailedException e) { + // download failed, too bad. just proceed + Log.e(Constants.TAG, "query failed", e); + log.add(LogType.MSG_IMPORT_FETCH_ERROR_KEYSERVER, 3, e.getMessage()); + } + } } if (key == null) { -- cgit v1.2.3