aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-10-25 02:38:09 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-10-25 02:38:09 +0200
commite332c664cf935dc76bdf41c7e77b586b98f6124a (patch)
treef03745939703d0d70a7841f69aa824b2d6c6085a /OpenKeychain/src/main
parent33b54ab03ea611223864dded6f1f99b9eac0870b (diff)
parent7c4bbc83cbe6a65edb8cd6a4cccb6c9867454f9e (diff)
downloadopen-keychain-e332c664cf935dc76bdf41c7e77b586b98f6124a.tar.gz
open-keychain-e332c664cf935dc76bdf41c7e77b586b98f6124a.tar.bz2
open-keychain-e332c664cf935dc76bdf41c7e77b586b98f6124a.zip
Merge branch 'development' of github.com:open-keychain/open-keychain into development
Diffstat (limited to 'OpenKeychain/src/main')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java62
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java2
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml10
4 files changed, 62 insertions, 23 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
index 2c1f2e1cf..e915c1852 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
@@ -155,21 +155,8 @@ public class ImportExportOperation extends BaseOperation {
// Otherwise, we need to fetch the data from a server first
else {
- // If we have a keybase name, try to fetch from there
- if (entry.mKeybaseName != null) {
- // Make sure we have this cached
- if (keybaseServer == null) {
- keybaseServer = new KeybaseKeyserver();
- }
-
- try {
- byte[] data = keybaseServer.get(entry.mKeybaseName).getBytes();
- key = UncachedKeyRing.decodeFromData(data);
- } catch (Keyserver.QueryFailedException e) {
- // download failed, too bad. just proceed
- }
-
- }
+ // We fetch from keyservers first, because we tend to get more certificates
+ // from there, so the number of certificates which are merged in later is smaller.
// If we have a keyServerUri and a fingerprint or at least a keyId,
// download from HKP
@@ -177,6 +164,7 @@ public class ImportExportOperation extends BaseOperation {
&& (entry.mKeyIdHex != null || entry.mExpectedFingerprint != null)) {
// Make sure we have the keyserver instance cached
if (keyServer == null) {
+ log.add(LogType.MSG_IMPORT_KEYSERVER, 1, keyServerUri);
keyServer = new HkpKeyserver(keyServerUri);
}
@@ -184,29 +172,59 @@ public class ImportExportOperation extends BaseOperation {
byte[] data;
// Download by fingerprint, or keyId - whichever is available
if (entry.mExpectedFingerprint != null) {
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, "0x" + entry.mExpectedFingerprint.substring(24));
data = keyServer.get("0x" + entry.mExpectedFingerprint).getBytes();
} else {
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, entry.mKeyIdHex);
data = keyServer.get(entry.mKeyIdHex).getBytes();
}
+ key = UncachedKeyRing.decodeFromData(data);
+ if (key != null) {
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_OK, 3);
+ } else {
+ log.add(LogType.MSG_IMPORT_FETCH_ERROR_DECODE, 3);
+ }
+ } catch (Keyserver.QueryFailedException e) {
+ Log.e(Constants.TAG, "query failed", e);
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_ERROR, 3);
+ }
+ }
+
+ // If we have a keybase name, try to fetch from there
+ if (entry.mKeybaseName != null) {
+ // Make sure we have this cached
+ if (keybaseServer == null) {
+ keybaseServer = new KeybaseKeyserver();
+ }
+
+ try {
+ log.add(LogType.MSG_IMPORT_FETCH_KEYBASE, 2, entry.mKeybaseName);
+ byte[] data = keybaseServer.get(entry.mKeybaseName).getBytes();
+ key = UncachedKeyRing.decodeFromData(data);
+
// If there already is a key (of keybase origin), merge the two
if (key != null) {
+ log.add(LogType.MSG_IMPORT_MERGE, 3);
UncachedKeyRing merged = UncachedKeyRing.decodeFromData(data);
- // TODO log pollution?
- merged = key.merge(merged, log, 2);
+ merged = key.merge(merged, log, 4);
// If the merge didn't fail, use the new merged key
if (merged != null) {
key = merged;
}
} else {
+ log.add(LogType.MSG_IMPORT_FETCH_ERROR_DECODE, 3);
key = UncachedKeyRing.decodeFromData(data);
}
} catch (Keyserver.QueryFailedException e) {
- break;
+ // download failed, too bad. just proceed
+ Log.e(Constants.TAG, "query failed", e);
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_ERROR, 3);
}
}
}
if (key == null) {
+ log.add(LogType.MSG_IMPORT_FETCH_ERROR, 2);
badKeys += 1;
continue;
}
@@ -214,13 +232,11 @@ public class ImportExportOperation extends BaseOperation {
// If we have an expected fingerprint, make sure it matches
if (entry.mExpectedFingerprint != null) {
if(!KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint()).equals(entry.mExpectedFingerprint)) {
- Log.d(Constants.TAG, "fingerprint: " + KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint()));
- Log.d(Constants.TAG, "expected fingerprint: " + entry.mExpectedFingerprint);
- Log.e(Constants.TAG, "Actual key fingerprint is not the same as expected!");
+ log.add(LogType.MSG_IMPORT_FINGERPRINT_ERROR, 2);
badKeys += 1;
continue;
} else {
- Log.d(Constants.TAG, "Actual key fingerprint matches expected one.");
+ log.add(LogType.MSG_IMPORT_FINGERPRINT_OK, 2);
}
}
@@ -252,7 +268,7 @@ public class ImportExportOperation extends BaseOperation {
importedMasterKeyIds.add(key.getMasterKeyId());
}
- log.add(result, 1);
+ log.add(result, 2);
} catch (IOException e) {
Log.e(Constants.TAG, "Encountered bad key on import!", e);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java
index 9d04dec38..aa360609f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java
@@ -581,6 +581,17 @@ public abstract class OperationResult implements Parcelable {
MSG_CRT_WARN_SAVE_FAILED (LogLevel.WARN, R.string.msg_crt_warn_save_failed),
MSG_IMPORT (LogLevel.START, R.plurals.msg_import),
+
+ MSG_IMPORT_FETCH_ERROR (LogLevel.ERROR, R.string.msg_import_fetch_error),
+ MSG_IMPORT_FETCH_ERROR_DECODE (LogLevel.ERROR, R.string.msg_import_fetch_error_decode),
+ MSG_IMPORT_FETCH_KEYSERVER (LogLevel.INFO, R.string.msg_import_fetch_keyserver),
+ MSG_IMPORT_FETCH_KEYSERVER_OK (LogLevel.DEBUG, R.string.msg_import_fetch_keyserver_ok),
+ MSG_IMPORT_FETCH_KEYSERVER_ERROR (LogLevel.ERROR, R.string.msg_import_fetch_keyserver_error),
+ MSG_IMPORT_FETCH_KEYBASE (LogLevel.INFO, R.string.msg_import_fetch_keybase),
+ MSG_IMPORT_KEYSERVER (LogLevel.DEBUG, R.string.msg_import_keyserver),
+ MSG_IMPORT_MERGE (LogLevel.DEBUG, R.string.msg_import_merge),
+ MSG_IMPORT_FINGERPRINT_ERROR (LogLevel.ERROR, R.string.msg_import_fingerprint_error),
+ MSG_IMPORT_FINGERPRINT_OK (LogLevel.DEBUG, R.string.msg_import_fingerprint_ok),
MSG_IMPORT_ERROR (LogLevel.ERROR, R.string.msg_import_error),
MSG_IMPORT_PARTIAL (LogLevel.ERROR, R.string.msg_import_partial),
MSG_IMPORT_SUCCESS (LogLevel.OK, R.string.msg_import_success),
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
index 6166faf10..2baebc83d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
@@ -133,6 +133,8 @@ public class LogDisplayFragment extends ListFragment implements OnItemClickListe
ih.mSub.setVisibility(View.VISIBLE);
convertView.setClickable(false);
+ convertView.setPadding((entry.mIndent) * dipFactor, 0, 0, 0);
+
OperationResult result = ((SubLogEntryParcel) entry).getSubResult();
LogEntryParcel subEntry = result.getLog().getLast();
if (subEntry != null) {
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index b6de54c14..87c0acd6a 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -941,6 +941,16 @@
<item quantity="one">"Importing key"</item>
<item quantity="other">"Importing %d keys"</item>
</plurals>
+ <string name="msg_import_fetch_error_decode">"Error decoding retrieved keyring!"</string>
+ <string name="msg_import_fetch_error">"Key could not be retrieved! (Network problems?)"</string>
+ <string name="msg_import_fetch_keybase">"Retrieving from keybase.io: %s"</string>
+ <string name="msg_import_fetch_keyserver_error">"Could not retrieve key from keybase!"</string>
+ <string name="msg_import_fetch_keyserver">"Retrieving from keyserver: %s"</string>
+ <string name="msg_import_fetch_keyserver_ok">"Key retrieval successful"</string>
+ <string name="msg_import_keyserver">"Using keyserver %s"</string>
+ <string name="msg_import_fingerprint_error">"Fingerprint of fetched key didn't match expected!"</string>
+ <string name="msg_import_fingerprint_ok">"Fingerprint check OK"</string>
+ <string name="msg_import_merge">"Merging keys…"</string>
<string name="msg_import_error">"Import operation failed!"</string>
<string name="msg_import_partial">"Import operation successful, with errors!"</string>
<string name="msg_import_success">"Import operation successful"</string>