aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-03-18 13:45:16 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-03-18 14:06:59 +0100
commit4499caef1e64d2e1afec37d360958f516da4dd40 (patch)
tree61b7d6e1926a14bf85832ea6e58b455b3da2f3e2 /OpenKeychain/src/main/java/org
parent53d7c1f5330a6b5e83d27196ae4145e364af2cd3 (diff)
downloadopen-keychain-4499caef1e64d2e1afec37d360958f516da4dd40.tar.gz
open-keychain-4499caef1e64d2e1afec37d360958f516da4dd40.tar.bz2
open-keychain-4499caef1e64d2e1afec37d360958f516da4dd40.zip
introduce CryptoOperationParcel for nfc data
Diffstat (limited to 'OpenKeychain/src/main/java/org')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/CryptoOperationParcel.java52
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java4
3 files changed, 64 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java
index f4b941109..d6da18e6e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java
@@ -23,15 +23,17 @@ import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Date;
import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute;
+import org.sufficientlysecure.keychain.service.input.CryptoOperationParcel;
/**
* This class is a a transferable representation for a number of keyrings to
* be certified.
*/
-public class CertifyActionsParcel implements Parcelable {
+public class CertifyActionsParcel extends CryptoOperationParcel {
// the master key id to certify with
final public long mMasterKeyId;
@@ -39,12 +41,15 @@ public class CertifyActionsParcel implements Parcelable {
public ArrayList<CertifyAction> mCertifyActions = new ArrayList<>();
- public CertifyActionsParcel(long masterKeyId) {
+ public CertifyActionsParcel(Date operationTime, long masterKeyId) {
+ super(operationTime);
mMasterKeyId = masterKeyId;
mLevel = CertifyLevel.DEFAULT;
}
public CertifyActionsParcel(Parcel source) {
+ super(source);
+
mMasterKeyId = source.readLong();
// just like parcelables, this is meant for ad-hoc IPC only and is NOT portable!
mLevel = CertifyLevel.values()[source.readInt()];
@@ -58,6 +63,8 @@ public class CertifyActionsParcel implements Parcelable {
@Override
public void writeToParcel(Parcel destination, int flags) {
+ super.writeToParcel(destination, flags);
+
destination.writeLong(mMasterKeyId);
destination.writeInt(mLevel.ordinal());
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/CryptoOperationParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/CryptoOperationParcel.java
new file mode 100644
index 000000000..2101755ad
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/input/CryptoOperationParcel.java
@@ -0,0 +1,52 @@
+package org.sufficientlysecure.keychain.service.input;
+
+import java.nio.ByteBuffer;
+import java.util.Date;
+import java.util.HashMap;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+
+/** This is a base class for the input of crypto operations.
+ *
+ */
+public abstract class CryptoOperationParcel implements Parcelable {
+
+ Date mOperationTime;
+
+ // this map contains both decrypted session keys and signed hashes to be
+ // used in the crypto operation described by this parcel.
+ HashMap<ByteBuffer,byte[]> mCryptoData;
+
+ protected CryptoOperationParcel(Date operationTime) {
+ mOperationTime = operationTime;
+ }
+
+ protected CryptoOperationParcel(Parcel source) {
+ mOperationTime = new Date(source.readLong());
+
+ {
+ int count = source.readInt();
+ mCryptoData = new HashMap<>(count);
+ for (int i = 0; i < count; i++) {
+ byte[] key = source.createByteArray();
+ byte[] value = source.createByteArray();
+ mCryptoData.put(ByteBuffer.wrap(key), value);
+ }
+ }
+
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeLong(mOperationTime.getTime());
+
+ dest.writeInt(mCryptoData.size());
+ for (HashMap.Entry<ByteBuffer,byte[]> entry : mCryptoData.entrySet()) {
+ dest.writeByteArray(entry.getKey().array());
+ dest.writeByteArray(entry.getValue());
+ }
+ }
+
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
index 9cb4e5f65..049c6976d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java
@@ -66,6 +66,8 @@ import org.sufficientlysecure.keychain.util.Preferences;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Date;
+
public class CertifyKeyFragment extends LoaderFragment
implements LoaderManager.LoaderCallbacks<Cursor> {
@@ -368,7 +370,7 @@ public class CertifyKeyFragment extends LoaderFragment
Bundle data = new Bundle();
{
// fill values for this action
- CertifyActionsParcel parcel = new CertifyActionsParcel(mSignMasterKeyId);
+ CertifyActionsParcel parcel = new CertifyActionsParcel(new Date(), mSignMasterKeyId);
parcel.mCertifyActions.addAll(certifyActions);
data.putParcelable(KeychainIntentService.CERTIFY_PARCEL, parcel);