From ba1bd8d48afd272a56023a812e1968c70e975f24 Mon Sep 17 00:00:00 2001 From: Hari Date: Sat, 4 Feb 2017 01:47:14 +0530 Subject: [PATCH] Added insecure warning to import card --- .../keychain/keyimport/ImportKeysList.java | 4 ++++ .../keyimport/ImportKeysListEntry.java | 14 ++++++++++++-- .../keychain/pgp/CanonicalizedKeyRing.java | 4 ++++ .../keychain/ui/adapter/ImportKeysAdapter.java | 4 +++- .../ui/bindings/ImportKeysBindings.java | 18 +++++++++--------- .../ui/bindings/ImportKeysExtraBindings.java | 7 +++++-- .../keychain/util/EmailKeyHelper.java | 2 +- .../main/res/layout/import_keys_list_item.xml | 6 +++--- .../res/layout/import_keys_list_item_extra.xml | 5 +++-- 9 files changed, 44 insertions(+), 20 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java index e8ca1995f..0ffa90b0e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysList.java @@ -70,6 +70,10 @@ public class ImportKeysList extends ArrayList { existing.setExpired(true); modified = true; } + if (!incoming.isSecure()) { + existing.setSecure(false); + modified = true; + } if (incoming.getKeyserver() != null) { existing.setKeyserver(incoming.getKeyserver()); 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 89c3fcfb1..60fde57fc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -52,6 +52,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private boolean mSecretKey; private boolean mRevoked; private boolean mExpired; + private boolean mSecure; private boolean mUpdated; private Date mDate; @@ -111,8 +112,16 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mRevoked = revoked; } - public boolean isRevokedOrExpired() { - return mRevoked || mExpired; + public boolean isSecure() { + return mSecure; + } + + public void setSecure(boolean secure) { + mSecure = secure; + } + + public boolean isRevokedOrExpiredOrInsecure() { + return mRevoked || mExpired || !mSecure; } public Date getDate() { @@ -284,6 +293,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { // NOTE: Dont use maybe methods for now, they can be wrong. mRevoked = false; //key.isMaybeRevoked(); mExpired = false; //key.isMaybeExpired(); + mSecure = true; mBitStrength = key.getBitStrength(); mCurveOid = key.getCurveOid(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java index 2075f6b58..c5652baac 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java @@ -82,6 +82,10 @@ public abstract class CanonicalizedKeyRing extends KeyRing { return getRing().getPublicKey().hasRevocation(); } + public boolean isSecure() { + return getPublicKey().isSecure(); + } + public Date getCreationDate() { return getPublicKey().getCreationTime(); } 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 62db6374e..7b22d48ae 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 @@ -252,7 +252,8 @@ public class ImportKeysAdapter extends RecyclerView.Adapter keys = new HashSet<>(); try { for (ImportKeysListEntry key : keyServer.search(mail, proxy)) { - if (key.isRevokedOrExpired()) continue; + if (key.isRevokedOrExpiredOrInsecure()) 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 756187dbc..f44ccac5e 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_list_item.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_list_item.xml @@ -41,7 +41,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" - app:keyRevokedOrExpired="@{entry.revokedOrExpired}" + app:keyRevokedOrExpiredOrInsecure="@{entry.revokedOrExpiredOrInsecure}" app:keySecret="@{entry.secretKey}" app:keyUserId="@{entry.primaryUserId.name}" app:query="@{entry.query}" /> @@ -51,7 +51,7 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:textAppearance="?android:attr/textAppearanceSmall" - app:keyRevokedOrExpired="@{entry.revokedOrExpired}" + app:keyRevokedOrExpiredOrInsecure="@{entry.revokedOrExpiredOrInsecure}" app:keyUserEmail="@{entry.primaryUserId.email}" app:query="@{entry.query}" /> @@ -60,7 +60,7 @@ android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" app:keyCreation="@{entry.date}" - app:keyRevokedOrExpired="@{entry.revokedOrExpired}" /> + app:keyRevokedOrExpiredOrInsecure="@{entry.revokedOrExpiredOrInsecure}" /> diff --git a/OpenKeychain/src/main/res/layout/import_keys_list_item_extra.xml b/OpenKeychain/src/main/res/layout/import_keys_list_item_extra.xml index a1e559ce6..2c63b61e8 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_list_item_extra.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_list_item_extra.xml @@ -85,9 +85,10 @@ android:layout_centerVertical="true" android:paddingLeft="8dp" android:paddingRight="8dp" - android:visibility="@{entry.revokedOrExpired ? V.VISIBLE : V.GONE}" + android:visibility="@{entry.revokedOrExpiredOrInsecure ? V.VISIBLE : V.GONE}" app:keyExpired="@{entry.expired}" - app:keyRevoked="@{entry.revoked}" /> + app:keyRevoked="@{entry.revoked}" + app:keySecure="@{entry.secure}"/>