aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
diff options
context:
space:
mode:
authorJoey Castillo <jose.castillo@gmail.com>2015-05-13 05:33:28 -0400
committerJoey Castillo <jose.castillo@gmail.com>2015-05-13 14:36:30 -0400
commitd21fb7733697a8f947604dbd1d6c608f5b2a21d5 (patch)
tree1ae3348b7047b351a598dd71b8d5e4e8ffed74dd /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
parenta0107afd3efefb152b5691b04c6343a4382fcd6a (diff)
downloadopen-keychain-d21fb7733697a8f947604dbd1d6c608f5b2a21d5.tar.gz
open-keychain-d21fb7733697a8f947604dbd1d6c608f5b2a21d5.tar.bz2
open-keychain-d21fb7733697a8f947604dbd1d6c608f5b2a21d5.zip
Moving keytocard process into PgpKeyOperation.
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java20
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/SaveKeyringParcel.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java50
3 files changed, 45 insertions, 28 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index 0fad22e4a..e0509ac9b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -40,7 +40,6 @@ import org.sufficientlysecure.keychain.operations.CertifyOperation;
import org.sufficientlysecure.keychain.operations.DeleteOperation;
import org.sufficientlysecure.keychain.operations.EditKeyOperation;
import org.sufficientlysecure.keychain.operations.ImportExportOperation;
-import org.sufficientlysecure.keychain.operations.NfcKeyToCardOperation;
import org.sufficientlysecure.keychain.operations.PromoteKeyOperation;
import org.sufficientlysecure.keychain.operations.SignEncryptOperation;
import org.sufficientlysecure.keychain.operations.results.CertifyResult;
@@ -49,7 +48,6 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
import org.sufficientlysecure.keychain.operations.results.DeleteResult;
import org.sufficientlysecure.keychain.operations.results.ExportResult;
import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
-import org.sufficientlysecure.keychain.operations.results.NfcKeyToCardResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.operations.results.PromoteKeyResult;
@@ -113,8 +111,6 @@ public class KeychainIntentService extends IntentService implements Progressable
public static final String ACTION_IMPORT_KEYRING = Constants.INTENT_PREFIX + "IMPORT_KEYRING";
public static final String ACTION_EXPORT_KEYRING = Constants.INTENT_PREFIX + "EXPORT_KEYRING";
- public static final String ACTION_NFC_KEYTOCARD = Constants.INTENT_PREFIX + "NFC_KEYTOCARD";
-
public static final String ACTION_UPLOAD_KEYRING = Constants.INTENT_PREFIX + "UPLOAD_KEYRING";
public static final String ACTION_CERTIFY_KEYRING = Constants.INTENT_PREFIX + "SIGN_KEYRING";
@@ -180,9 +176,6 @@ public class KeychainIntentService extends IntentService implements Progressable
public static final String EXPORT_ALL = "export_all";
public static final String EXPORT_KEY_RING_MASTER_KEY_ID = "export_key_ring_id";
- // NFC export key to card
- public static final String NFC_KEYTOCARD_SUBKEY_ID = "nfc_keytocard_subkey_id";
-
// upload key
public static final String UPLOAD_KEY_SERVER = "upload_key_server";
@@ -539,19 +532,6 @@ public class KeychainIntentService extends IntentService implements Progressable
break;
}
- case ACTION_NFC_KEYTOCARD: {
- // Input
- long subKeyId = data.getLong(NFC_KEYTOCARD_SUBKEY_ID);
-
- // Operation
- NfcKeyToCardOperation exportOp = new NfcKeyToCardOperation(this, providerHelper, this);
- NfcKeyToCardResult result = exportOp.execute(subKeyId);
-
- // Result
- sendMessageToHandler(MessageStatus.OKAY, result);
-
- break;
- }
case ACTION_SIGN_ENCRYPT: {
// Input
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/SaveKeyringParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/SaveKeyringParcel.java
index 2e0524141..6064c28fb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/SaveKeyringParcel.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/SaveKeyringParcel.java
@@ -95,7 +95,8 @@ public class SaveKeyringParcel implements Parcelable {
}
for (SubkeyChange change : mChangeSubKeys) {
- if (change.mRecertify || change.mFlags != null || change.mExpiry != null) {
+ if (change.mRecertify || change.mFlags != null || change.mExpiry != null ||
+ (change.mDummyDivert != null && change.mDummyDivert.length == 0)) {
return false;
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java
index 50fb35e90..727f1638c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/RequiredInputParcel.java
@@ -1,5 +1,6 @@
package org.sufficientlysecure.keychain.service.input;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -7,8 +8,6 @@ import java.util.Date;
import android.os.Parcel;
import android.os.Parcelable;
-import org.sufficientlysecure.keychain.Constants.key;
-
public class RequiredInputParcel implements Parcelable {
@@ -87,11 +86,6 @@ public class RequiredInputParcel implements Parcelable {
new byte[][] { inputHash }, null, null, null, subKeyId);
}
- public static RequiredInputParcel createNfcKeyToCardOperation(long masterKeyId, long subKeyId) {
- return new RequiredInputParcel(RequiredInputType.NFC_KEYTOCARD, null, null, null,
- masterKeyId, subKeyId);
- }
-
public static RequiredInputParcel createRequiredSignPassphrase(
long masterKeyId, long subKeyId, Date signatureTime) {
return new RequiredInputParcel(RequiredInputType.PASSPHRASE,
@@ -216,4 +210,46 @@ public class RequiredInputParcel implements Parcelable {
}
+ public static class NfcKeyToCardOperationsBuilder {
+ ArrayList<byte[]> mSubkeysToExport = new ArrayList<>();
+ Long mMasterKeyId;
+
+ public NfcKeyToCardOperationsBuilder(Long masterKeyId) {
+ mMasterKeyId = masterKeyId;
+ }
+
+ public RequiredInputParcel build() {
+ byte[][] inputHashes = new byte[mSubkeysToExport.size()][];
+ mSubkeysToExport.toArray(inputHashes);
+ ByteBuffer buf = ByteBuffer.wrap(mSubkeysToExport.get(0));
+
+ // We need to pass in a subkey here...
+ return new RequiredInputParcel(RequiredInputType.NFC_KEYTOCARD,
+ inputHashes, null, null, mMasterKeyId, buf.getLong());
+ }
+
+ public void addSubkey(long subkeyId) {
+ byte[] subKeyId = new byte[8];
+ ByteBuffer buf = ByteBuffer.wrap(subKeyId);
+ buf.putLong(subkeyId).rewind();
+ mSubkeysToExport.add(subKeyId);
+ }
+
+ public void addAll(RequiredInputParcel input) {
+ if (!mMasterKeyId.equals(input.mMasterKeyId)) {
+ throw new AssertionError("Master keys must match, this is a programming error!");
+ }
+ if (input.mType != RequiredInputType.NFC_KEYTOCARD) {
+ throw new AssertionError("Operation types must match, this is a programming error!");
+ }
+
+ Collections.addAll(mSubkeysToExport, input.mInputHashes);
+ }
+
+ public boolean isEmpty() {
+ return mSubkeysToExport.isEmpty();
+ }
+
+ }
+
}