aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-10-26 02:17:26 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-10-26 02:17:26 +0200
commit4631f45ed760fbc7706852bb5dcf26b969da86b8 (patch)
tree0adc207e2e4e7614dd7294d2477ed6e7616f42fe /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations
parentbe3e6ae6eff504ebb82883419248f16e2208dcff (diff)
parentd6b9fc27b72683cbb5dfe548f863df789fbb5345 (diff)
downloadopen-keychain-4631f45ed760fbc7706852bb5dcf26b969da86b8.tar.gz
open-keychain-4631f45ed760fbc7706852bb5dcf26b969da86b8.tar.bz2
open-keychain-4631f45ed760fbc7706852bb5dcf26b969da86b8.zip
Merge branch 'development' of github.com:open-keychain/open-keychain into development
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java32
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java10
3 files changed, 39 insertions, 7 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
index 2eb4c955c..9af6713ba 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/CertifyOperation.java
@@ -2,6 +2,9 @@ package org.sufficientlysecure.keychain.operations;
import android.content.Context;
+import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.keyimport.HkpKeyserver;
+import org.sufficientlysecure.keychain.keyimport.Keyserver.AddKeyException;
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKeyRing;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKeyRing;
@@ -17,6 +20,7 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.LogTyp
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.operations.results.SaveKeyringResult;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
+import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -36,7 +40,7 @@ public class CertifyOperation extends BaseOperation {
super(context, providerHelper, progressable, cancelled);
}
- public CertifyResult certify(CertifyActionsParcel parcel) {
+ public CertifyResult certify(CertifyActionsParcel parcel, String keyServerUri) {
OperationLog log = new OperationLog();
log.add(LogType.MSG_CRT, 0);
@@ -72,7 +76,7 @@ public class CertifyOperation extends BaseOperation {
log.add(LogType.MSG_CRT_CERTIFYING, 1);
- int certifyOk = 0, certifyError = 0;
+ int certifyOk = 0, certifyError = 0, uploadOk = 0, uploadError = 0;
// Work through all requested certifications
for (CertifyAction action : parcel.mCertifyActions) {
@@ -118,13 +122,20 @@ public class CertifyOperation extends BaseOperation {
return new CertifyResult(CertifyResult.RESULT_CANCELLED, log);
}
+ HkpKeyserver keyServer = null;
+ ImportExportOperation importExportOperation = null;
+ if (keyServerUri != null) {
+ keyServer = new HkpKeyserver(keyServerUri);
+ importExportOperation = new ImportExportOperation(mContext, mProviderHelper, mProgressable);
+ }
+
// Write all certified keys into the database
for (UncachedKeyRing certifiedKey : certifiedKeys) {
// Check if we were cancelled
if (checkCancelled()) {
log.add(LogType.MSG_OPERATION_CANCELLED, 0);
- return new CertifyResult(CertifyResult.RESULT_CANCELLED, log, certifyOk, certifyError);
+ return new CertifyResult(CertifyResult.RESULT_CANCELLED, log, certifyOk, certifyError, uploadOk, uploadError);
}
log.add(LogType.MSG_CRT_SAVE, 2,
@@ -133,6 +144,17 @@ public class CertifyOperation extends BaseOperation {
mProviderHelper.clearLog();
SaveKeyringResult result = mProviderHelper.savePublicKeyRing(certifiedKey);
+ if (importExportOperation != null) {
+ // TODO use subresult, get rid of try/catch!
+ try {
+ importExportOperation.uploadKeyRingToServer(keyServer, certifiedKey);
+ uploadOk += 1;
+ } catch (AddKeyException e) {
+ Log.e(Constants.TAG, "error uploading key", e);
+ uploadError += 1;
+ }
+ }
+
if (result.success()) {
certifyOk += 1;
} else {
@@ -145,11 +167,11 @@ public class CertifyOperation extends BaseOperation {
if (certifyOk == 0) {
log.add(LogType.MSG_CRT_ERROR_NOTHING, 0);
- return new CertifyResult(CertifyResult.RESULT_ERROR, log, certifyOk, certifyError);
+ return new CertifyResult(CertifyResult.RESULT_ERROR, log, certifyOk, certifyError, uploadOk, uploadError);
}
log.add(LogType.MSG_CRT_SUCCESS, 0);
- return new CertifyResult(CertifyResult.RESULT_OK, log, certifyOk, certifyError);
+ return new CertifyResult(CertifyResult.RESULT_OK, log, certifyOk, certifyError, uploadOk, uploadError);
}
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 6178b92d0..6dfac8429 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportExportOperation.java
@@ -94,6 +94,10 @@ public class ImportExportOperation extends BaseOperation {
}
public void uploadKeyRingToServer(HkpKeyserver server, CanonicalizedPublicKeyRing keyring) throws AddKeyException {
+ uploadKeyRingToServer(server, keyring.getUncachedKeyRing());
+ }
+
+ public void uploadKeyRingToServer(HkpKeyserver server, UncachedKeyRing keyring) throws AddKeyException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ArmoredOutputStream aos = null;
try {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java
index 49e3d0346..7b38cd244 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java
@@ -36,16 +36,18 @@ import org.sufficientlysecure.keychain.ui.LogDisplayFragment;
public class CertifyResult extends OperationResult {
- int mCertifyOk, mCertifyError;
+ int mCertifyOk, mCertifyError, mUploadOk, mUploadError;
public CertifyResult(int result, OperationLog log) {
super(result, log);
}
- public CertifyResult(int result, OperationLog log, int certifyOk, int certifyError) {
+ public CertifyResult(int result, OperationLog log, int certifyOk, int certifyError, int uploadOk, int uploadError) {
this(result, log);
mCertifyOk = certifyOk;
mCertifyError = certifyError;
+ mUploadOk = uploadOk;
+ mUploadError = uploadError;
}
/** Construct from a parcel - trivial because we have no extra data. */
@@ -53,6 +55,8 @@ public class CertifyResult extends OperationResult {
super(source);
mCertifyOk = source.readInt();
mCertifyError = source.readInt();
+ mUploadOk = source.readInt();
+ mUploadError = source.readInt();
}
@Override
@@ -60,6 +64,8 @@ public class CertifyResult extends OperationResult {
super.writeToParcel(dest, flags);
dest.writeInt(mCertifyOk);
dest.writeInt(mCertifyError);
+ dest.writeInt(mUploadOk);
+ dest.writeInt(mUploadError);
}
public static Creator<CertifyResult> CREATOR = new Creator<CertifyResult>() {