diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java index 7ad8e488a..5d9e1eb0b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java @@ -160,10 +160,7 @@ public class FacebookKeyserver extends Keyserver { entry.setPrimaryUserId(key.getPrimaryUserIdWithFallback()); entry.setKeyId(key.getKeyId()); - entry.setKeyIdHex(KeyFormattingUtils.convertKeyIdToHex(key.getKeyId())); - - entry.setFingerprintHex(KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint())); - + entry.setFingerprint(key.getFingerprint()); try { if (key.isEC()) { // unsupported key format (ECDH or ECDSA) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java index f50a8efa5..933eeeb82 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -21,7 +21,7 @@ import android.content.Context; import android.os.Parcel; import android.os.Parcelable; -import org.openintents.openpgp.util.OpenPgpUtils; +import org.openintents.openpgp.util.OpenPgpUtils.UserId; import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.pgp.UncachedKeyRing; import org.sufficientlysecure.keychain.pgp.UncachedPublicKey; @@ -45,7 +45,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private HashMap> mMergedUserIds; private ArrayList>> mSortedUserIds; - private long mKeyId; private String mKeyIdHex; private boolean mRevoked; private boolean mExpired; @@ -55,7 +54,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private String mCurveOid; private String mAlgorithm; private boolean mSecretKey; - private String mPrimaryUserId; + private UserId mPrimaryUserId; private String mKeybaseName; private String mFbUsername; private String mQuery; @@ -68,10 +67,9 @@ public class ImportKeysListEntry implements Serializable, Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeString(mPrimaryUserId); + dest.writeSerializable(mPrimaryUserId); dest.writeStringList(mUserIds); dest.writeSerializable(mMergedUserIds); - dest.writeLong(mKeyId); dest.writeByte((byte) (mRevoked ? 1 : 0)); dest.writeByte((byte) (mExpired ? 1 : 0)); dest.writeInt(mDate == null ? 0 : 1); @@ -94,11 +92,10 @@ public class ImportKeysListEntry implements Serializable, Parcelable { public static final Creator CREATOR = new Creator() { public ImportKeysListEntry createFromParcel(final Parcel source) { ImportKeysListEntry vr = new ImportKeysListEntry(); - vr.mPrimaryUserId = source.readString(); + vr.mPrimaryUserId = (UserId) source.readSerializable(); vr.mUserIds = new ArrayList<>(); source.readStringList(vr.mUserIds); vr.mMergedUserIds = (HashMap>) source.readSerializable(); - vr.mKeyId = source.readLong(); vr.mRevoked = source.readByte() == 1; vr.mExpired = source.readByte() == 1; vr.mDate = source.readInt() != 0 ? new Date(source.readLong()) : null; @@ -138,6 +135,14 @@ public class ImportKeysListEntry implements Serializable, Parcelable { return mKeyIdHex; } + public void setKeyIdHex(String keyIdHex) { + mKeyIdHex = keyIdHex; + } + + public void setKeyId(long keyId) { + mKeyIdHex = KeyFormattingUtils.convertKeyIdToHex(keyId); + } + public boolean isExpired() { return mExpired; } @@ -146,22 +151,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mExpired = expired; } - public byte[] getEncodedRing() { - return mEncodedRing; - } - - public long getKeyId() { - return mKeyId; - } - - public void setKeyId(long keyId) { - mKeyId = keyId; - } - - public void setKeyIdHex(String keyIdHex) { - mKeyIdHex = keyIdHex; - } - public boolean isRevoked() { return mRevoked; } @@ -170,6 +159,14 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mRevoked = revoked; } + public boolean isRevokedOrExpired() { + return mRevoked || mExpired; + } + + public byte[] getEncodedRing() { + return mEncodedRing; + } + public Date getDate() { return mDate; } @@ -186,6 +183,10 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mFingerprintHex = fingerprintHex; } + public void setFingerprint(byte[] fingerprint) { + mFingerprintHex = KeyFormattingUtils.convertFingerprintToHex(fingerprint); + } + public Integer getBitStrength() { return mBitStrength; } @@ -214,12 +215,16 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mSecretKey = secretKey; } - public String getPrimaryUserId() { + public UserId getPrimaryUserId() { return mPrimaryUserId; } - public void setPrimaryUserId(String uid) { - mPrimaryUserId = uid; + public void setPrimaryUserId(String userId) { + mPrimaryUserId = KeyRing.splitUserId(userId); + } + + public void setPrimaryUserId(UserId primaryUserId) { + mPrimaryUserId = primaryUserId; } public String getKeybaseName() { @@ -317,27 +322,26 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mHashCode = key.hashCode(); - mPrimaryUserId = key.getPrimaryUserIdWithFallback(); - mUserIds = key.getUnorderedUserIds(); - updateMergedUserIds(); - - mKeyId = key.getKeyId(); - mKeyIdHex = KeyFormattingUtils.convertKeyIdToHex(mKeyId); + setPrimaryUserId(key.getPrimaryUserIdWithFallback()); + setKeyId(key.getKeyId()); + setFingerprint(key.getFingerprint()); // NOTE: Dont use maybe methods for now, they can be wrong. mRevoked = false; //key.isMaybeRevoked(); mExpired = false; //key.isMaybeExpired(); - mFingerprintHex = KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint()); + mBitStrength = key.getBitStrength(); mCurveOid = key.getCurveOid(); final int algorithm = key.getAlgorithm(); mAlgorithm = KeyFormattingUtils.getAlgorithmInfo(context, algorithm, mBitStrength, mCurveOid); + + setUserIds(key.getUnorderedUserIds()); } private void updateMergedUserIds() { mMergedUserIds = new HashMap<>(); for (String userId : mUserIds) { - OpenPgpUtils.UserId userIdSplit = KeyRing.splitUserId(userId); + UserId userIdSplit = KeyRing.splitUserId(userId); // TODO: comment field? diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java index 3091a4dff..e1e4c2722 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java @@ -28,7 +28,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import org.openintents.openpgp.util.OpenPgpUtils; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.databinding.ImportKeysListItemBinding; @@ -43,7 +42,6 @@ import org.sufficientlysecure.keychain.keyimport.processing.LoaderState; import org.sufficientlysecure.keychain.operations.ImportOperation; import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing; -import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; import org.sufficientlysecure.keychain.ui.util.FormattingUtils; @@ -135,9 +133,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter keys = new HashSet<>(); try { for (ImportKeysListEntry key : keyServer.search(mail)) { - if (key.isRevoked() || key.isExpired()) continue; + if (key.isRevokedOrExpired()) continue; for (String userId : key.getUserIds()) { if (userId.toLowerCase().contains(mail.toLowerCase(Locale.ENGLISH))) { keys.add(key); diff --git a/OpenKeychain/src/main/res/layout/import_keys_list_item.xml b/OpenKeychain/src/main/res/layout/import_keys_list_item.xml index e7a26a4e1..26b54a85a 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_list_item.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_list_item.xml @@ -15,8 +15,6 @@ - - + android:textColor="@{entry.revokedOrExpired ? revokedExpiredColor : (entry.secretKey ? secretColor : standardColor)}" /> + android:textColor="@{entry.revokedOrExpired ? revokedExpiredColor : standardColor}" /> @@ -88,7 +86,7 @@ android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:visibility="@{entry.revoked || entry.expired ? View.VISIBLE : View.GONE}" /> + android:visibility="@{entry.revokedOrExpired ? View.VISIBLE : View.GONE}" />