diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java index da09ad9e0..57161b61b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/EditKeyOperation.java @@ -144,7 +144,7 @@ public class EditKeyOperation extends BaseReadWriteOperation } UploadKeyringParcel exportKeyringParcel = - new UploadKeyringParcel(saveParcel.getUploadKeyserver(), keyringBytes); + UploadKeyringParcel.createWithKeyringBytes(saveParcel.getUploadKeyserver(), keyringBytes); UploadResult uploadResult = new UploadOperation( mContext, mKeyRepository, new ProgressScaler(mProgressable, 60, 80, 100), mCancelled) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/UploadOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/UploadOperation.java index 27265461b..7e54afd70 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/UploadOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/UploadOperation.java @@ -96,7 +96,7 @@ public class UploadOperation extends BaseOperation { ParcelableHkpKeyserver hkpKeyserver; { - hkpKeyserver = uploadInput.mKeyserver; + hkpKeyserver = uploadInput.getKeyserver(); log.add(LogType.MSG_UPLOAD_SERVER, 1, hkpKeyserver.toString()); } @@ -110,22 +110,15 @@ public class UploadOperation extends BaseOperation { @Nullable private CanonicalizedPublicKeyRing getPublicKeyringFromInput(OperationLog log, UploadKeyringParcel uploadInput) { - - boolean hasMasterKeyId = uploadInput.mMasterKeyId != null; - boolean hasKeyringBytes = uploadInput.mUncachedKeyringBytes != null; - if (hasMasterKeyId == hasKeyringBytes) { - throw new IllegalArgumentException("either keyid xor bytes must be non-null for this method call!"); - } - try { - - if (hasMasterKeyId) { - log.add(LogType.MSG_UPLOAD_KEY, 0, KeyFormattingUtils.convertKeyIdToHex(uploadInput.mMasterKeyId)); - return mKeyRepository.getCanonicalizedPublicKeyRing(uploadInput.mMasterKeyId); + Long masterKeyId = uploadInput.getMasterKeyId(); + if (masterKeyId != null) { + log.add(LogType.MSG_UPLOAD_KEY, 0, KeyFormattingUtils.convertKeyIdToHex(masterKeyId)); + return mKeyRepository.getCanonicalizedPublicKeyRing(masterKeyId); } CanonicalizedKeyRing canonicalizedRing = - UncachedKeyRing.decodeFromData(uploadInput.mUncachedKeyringBytes) + UncachedKeyRing.decodeFromData(uploadInput.getUncachedKeyringBytes()) .canonicalize(new OperationLog(), 0, true); if (!CanonicalizedPublicKeyRing.class.isInstance(canonicalizedRing)) { throw new IllegalArgumentException("keyring bytes must contain public key ring!"); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/UploadKeyringParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/UploadKeyringParcel.java index 2db386afa..d33e18d86 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/UploadKeyringParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/UploadKeyringParcel.java @@ -20,62 +20,28 @@ package org.sufficientlysecure.keychain.service; -import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import com.google.auto.value.AutoValue; import org.sufficientlysecure.keychain.keyimport.ParcelableHkpKeyserver; +@AutoValue +public abstract class UploadKeyringParcel implements Parcelable { + public abstract ParcelableHkpKeyserver getKeyserver(); + @Nullable + public abstract Long getMasterKeyId(); + @Nullable + public abstract byte[] getUncachedKeyringBytes(); -public class UploadKeyringParcel implements Parcelable { - public ParcelableHkpKeyserver mKeyserver; - public final Long mMasterKeyId; - public final byte[] mUncachedKeyringBytes; - - public UploadKeyringParcel(ParcelableHkpKeyserver keyserver, long masterKeyId) { - mKeyserver = keyserver; - mMasterKeyId = masterKeyId; - mUncachedKeyringBytes = null; + public static UploadKeyringParcel createWithKeyId(ParcelableHkpKeyserver keyserver, long masterKeyId) { + return new AutoValue_UploadKeyringParcel(keyserver, masterKeyId, null); } - public UploadKeyringParcel(ParcelableHkpKeyserver keyserver, byte[] uncachedKeyringBytes) { - mKeyserver = keyserver; - mMasterKeyId = null; - mUncachedKeyringBytes = uncachedKeyringBytes; + public static UploadKeyringParcel createWithKeyringBytes(ParcelableHkpKeyserver keyserver, + @NonNull byte[] uncachedKeyringBytes) { + return new AutoValue_UploadKeyringParcel(keyserver, null, uncachedKeyringBytes); } - - protected UploadKeyringParcel(Parcel in) { - mKeyserver = in.readParcelable(ParcelableHkpKeyserver.class.getClassLoader()); - mMasterKeyId = in.readInt() != 0 ? in.readLong() : null; - mUncachedKeyringBytes = in.createByteArray(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeParcelable(mKeyserver, flags); - if (mMasterKeyId != null) { - dest.writeInt(1); - dest.writeLong(mMasterKeyId); - } else { - dest.writeInt(0); - } - dest.writeByteArray(mUncachedKeyringBytes); - } - - public static final Creator CREATOR = new Creator() { - @Override - public UploadKeyringParcel createFromParcel(Parcel in) { - return new UploadKeyringParcel(in); - } - - @Override - public UploadKeyringParcel[] newArray(int size) { - return new UploadKeyringParcel[size]; - } - }; } \ No newline at end of file diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index 78bbbe58c..53956119d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -520,7 +520,7 @@ public class CreateKeyFinalFragment extends Fragment { @Override public UploadKeyringParcel createOperationInput() { - return new UploadKeyringParcel(keyserver, masterKeyId); + return UploadKeyringParcel.createWithKeyId(keyserver, masterKeyId); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditIdentitiesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditIdentitiesFragment.java index b6a6658e9..e7944f41a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditIdentitiesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditIdentitiesFragment.java @@ -395,7 +395,7 @@ public class EditIdentitiesFragment extends Fragment @Override public UploadKeyringParcel createOperationInput() { - return new UploadKeyringParcel(keyserver, masterKeyId); + return UploadKeyringParcel.createWithKeyId(keyserver, masterKeyId); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java index 1f60092e8..a990d2a4c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/UploadKeyActivity.java @@ -144,7 +144,7 @@ public class UploadKeyActivity extends BaseActivity public UploadKeyringParcel createOperationInput() { long[] masterKeyIds = getIntent().getLongArrayExtra(MultiUserIdsFragment.EXTRA_KEY_IDS); - return new UploadKeyringParcel(mKeyserver, masterKeyIds[0]); + return UploadKeyringParcel.createWithKeyId(mKeyserver, masterKeyIds[0]); } @Override