aboutsummaryrefslogtreecommitdiffstats
path: root/org_apg/src/org/thialfihar/android/apg/service/ApgService.java
diff options
context:
space:
mode:
Diffstat (limited to 'org_apg/src/org/thialfihar/android/apg/service/ApgService.java')
-rw-r--r--org_apg/src/org/thialfihar/android/apg/service/ApgService.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/org_apg/src/org/thialfihar/android/apg/service/ApgService.java b/org_apg/src/org/thialfihar/android/apg/service/ApgService.java
index 69c9e408c..b1c45ad05 100644
--- a/org_apg/src/org/thialfihar/android/apg/service/ApgService.java
+++ b/org_apg/src/org/thialfihar/android/apg/service/ApgService.java
@@ -28,6 +28,8 @@ import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Vector;
+import org.spongycastle.openpgp.PGPKeyRing;
+import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.spongycastle.openpgp.PGPSecretKey;
import org.spongycastle.openpgp.PGPSecretKeyRing;
import org.thialfihar.android.apg.Constants;
@@ -40,6 +42,7 @@ import org.thialfihar.android.apg.helper.Preferences;
import org.thialfihar.android.apg.helper.PGPMain.GeneralException;
import org.thialfihar.android.apg.helper.PGPConversionHelper;
import org.thialfihar.android.apg.provider.DataProvider;
+import org.thialfihar.android.apg.util.HkpKeyServer;
import org.thialfihar.android.apg.util.InputData;
import org.thialfihar.android.apg.util.ProgressDialogUpdater;
@@ -124,6 +127,10 @@ public class ApgService extends IntentService implements ProgressDialogUpdater {
public static final String EXPORT_ALL = "exportAll";
public static final String EXPORT_KEY_RING_ID = "exportKeyRingId";
+ // upload key
+ public static final String UPLOAD_KEY_SERVER = "uploadKeyServer";
+ public static final String UPLOAD_KEY_KEYRING_ID = "uploadKeyRingId";
+
/* possible EXTRA_ACTIONs */
public static final int ACTION_ENCRYPT_SIGN = 10;
@@ -138,6 +145,8 @@ public class ApgService extends IntentService implements ProgressDialogUpdater {
public static final int ACTION_IMPORT_KEY = 50;
public static final int ACTION_EXPORT_KEY = 51;
+ public static final int ACTION_UPLOAD_KEY = 60;
+
/* possible data keys as result send over messenger */
// keys
public static final String RESULT_NEW_KEY = "newKey";
@@ -700,6 +709,36 @@ public class ApgService extends IntentService implements ProgressDialogUpdater {
break;
+ case ACTION_UPLOAD_KEY:
+ try {
+
+ /* Input */
+
+ int keyRingId = data.getInt(UPLOAD_KEY_KEYRING_ID);
+ String keyServer = data.getString(UPLOAD_KEY_SERVER);
+
+ /* Operation */
+
+ HkpKeyServer server = new HkpKeyServer(keyServer);
+
+ PGPKeyRing keyring = PGPMain.getKeyRing(keyRingId);
+ if (keyring != null && keyring instanceof PGPPublicKeyRing) {
+ boolean uploaded = PGPMain.uploadKeyRingToServer(server,
+ (PGPPublicKeyRing) keyring);
+ if (!uploaded) {
+ sendErrorToHandler(new GeneralException(
+ "Unable to export key to selected server"));
+ return;
+ }
+ }
+
+ sendMessageToHandler(ApgHandler.MESSAGE_OKAY);
+ } catch (Exception e) {
+ sendErrorToHandler(e);
+ }
+
+ break;
+
default:
break;
}