aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-06-01 10:15:46 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-06-01 10:15:46 +0200
commitaf5fc6622943acc20948f4daf8ae13fb80e4ef5d (patch)
tree066c76b0cec20c735e93794e0dadee5e44f5c770
parent784dbc087e82826269ed58cc61e64b2b89c40dfe (diff)
parent93f3a98eae1fdd8f9a3a82d415a7284548a2e4bf (diff)
downloadopen-keychain-af5fc6622943acc20948f4daf8ae13fb80e4ef5d.tar.gz
open-keychain-af5fc6622943acc20948f4daf8ae13fb80e4ef5d.tar.bz2
open-keychain-af5fc6622943acc20948f4daf8ae13fb80e4ef5d.zip
Merge pull request #1317 from adithyaphilip/master
Merge key from Keyserver with that from Keybase instead of replacing
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java23
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java1
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml1
3 files changed, 13 insertions, 12 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 86cfc21a3..b48de009e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
@@ -38,7 +38,6 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.Operat
import org.sufficientlysecure.keychain.operations.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing;
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKeyRing;
-import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.pgp.Progressable;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
@@ -244,25 +243,25 @@ public class ImportExportOperation extends BaseOperation {
try {
log.add(LogType.MSG_IMPORT_FETCH_KEYBASE, 2, entry.mKeybaseName);
byte[] data = keybaseServer.get(entry.mKeybaseName).getBytes();
- key = UncachedKeyRing.decodeFromData(data);
+ UncachedKeyRing keybaseKey = UncachedKeyRing.decodeFromData(data);
- // If there already is a key (of keybase origin), merge the two
- if (key != null) {
+ // If there already is a key, merge the two
+ if (key != null && keybaseKey != null) {
log.add(LogType.MSG_IMPORT_MERGE, 3);
- UncachedKeyRing merged = UncachedKeyRing.decodeFromData(data);
- merged = key.merge(merged, log, 4);
+ keybaseKey = key.merge(keybaseKey, log, 4);
// If the merge didn't fail, use the new merged key
- if (merged != null) {
- key = merged;
+ if (keybaseKey != null) {
+ key = keybaseKey;
+ } else {
+ log.add(LogType.MSG_IMPORT_MERGE_ERROR, 4);
}
- } else {
- log.add(LogType.MSG_IMPORT_FETCH_ERROR_DECODE, 3);
- key = UncachedKeyRing.decodeFromData(data);
+ } else if (keybaseKey != null) {
+ key = keybaseKey;
}
} catch (Keyserver.QueryFailedException e) {
// download failed, too bad. just proceed
Log.e(Constants.TAG, "query failed", e);
- log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_ERROR, 3);
+ log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER_ERROR, 3, e.getMessage());
}
}
}
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 2551c1802..707cf0af1 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
@@ -696,6 +696,7 @@ public abstract class OperationResult implements Parcelable {
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_MERGE_ERROR (LogLevel.ERROR, R.string.msg_import_merge_error),
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),
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 58e9292de..853acbaa5 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -1154,6 +1154,7 @@
<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 retrieved data"</string>
+ <string name="msg_import_merge_error">"Error merging retrieved data!"</string>
<string name="msg_import_error">"Import operation failed!"</string>
<string name="msg_import_error_io">"Import operation failed due to i/o error!"</string>
<string name="msg_import_partial">"Import operation successful, with errors!"</string>