diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/presenter/KeyHealthPresenter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/presenter/KeyHealthPresenter.java index 979875c1a..6b47adb6a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/presenter/KeyHealthPresenter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/presenter/KeyHealthPresenter.java @@ -172,18 +172,26 @@ public class KeyHealthPresenter implements LoaderCallbacks { return KeyHealthStatus.STRIPPED; } - if (keyCertify.mSecretKeyType == SecretKeyType.GNU_DUMMY - || keySign.mSecretKeyType == SecretKeyType.GNU_DUMMY - || keyEncrypt.mSecretKeyType == SecretKeyType.GNU_DUMMY) { - return KeyHealthStatus.PARTIAL_STRIPPED; - } - if (keyCertify.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD && keySign.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD && keyEncrypt.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD) { return KeyHealthStatus.DIVERT; } + boolean containsDivertKeys = keyCertify.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD || + keySign.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD || + keyEncrypt.mSecretKeyType == SecretKeyType.DIVERT_TO_CARD; + if (containsDivertKeys) { + return KeyHealthStatus.DIVERT_PARTIAL; + } + + boolean containsStrippedKeys = keyCertify.mSecretKeyType == SecretKeyType.GNU_DUMMY + || keySign.mSecretKeyType == SecretKeyType.GNU_DUMMY + || keyEncrypt.mSecretKeyType == SecretKeyType.GNU_DUMMY; + if (containsStrippedKeys) { + return KeyHealthStatus.PARTIAL_STRIPPED; + } + return KeyHealthStatus.OK; } @@ -255,7 +263,7 @@ public class KeyHealthPresenter implements LoaderCallbacks { } public enum KeyHealthStatus { - OK, DIVERT, REVOKED, EXPIRED, INSECURE, SIGN_ONLY, STRIPPED, PARTIAL_STRIPPED, BROKEN + OK, DIVERT, DIVERT_PARTIAL, REVOKED, EXPIRED, INSECURE, SIGN_ONLY, STRIPPED, PARTIAL_STRIPPED, BROKEN } public interface KeyHealthMvpView { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/view/KeyHealthView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/view/KeyHealthView.java index aeeacc1a9..d9c7a8a10 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/view/KeyHealthView.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/view/KeyHealthView.java @@ -92,6 +92,8 @@ public class KeyHealthView extends LinearLayout implements KeyHealthMvpView, OnC R.drawable.ic_check_black_24dp, R.color.android_green_light), DIVERT (R.string.key_health_divert_title, R.string.key_health_divert_subtitle, R.drawable.yubi_icon_24dp, R.color.md_black_1000), + DIVERT_PARTIAL (R.string.key_health_divert_partial_title, R.string.key_health_divert_partial_subtitle, + R.drawable.yubi_icon_24dp, R.color.md_black_1000), REVOKED (R.string.key_health_revoked_title, R.string.key_health_revoked_subtitle, R.drawable.ic_close_black_24dp, R.color.android_red_light), EXPIRED (R.string.key_health_expired_title, R.string.key_health_expired_subtitle, @@ -132,6 +134,9 @@ public class KeyHealthView extends LinearLayout implements KeyHealthMvpView, OnC case DIVERT: setKeyStatus(KeyHealthDisplayStatus.DIVERT); break; + case DIVERT_PARTIAL: + setKeyStatus(KeyHealthDisplayStatus.DIVERT_PARTIAL); + break; case REVOKED: setKeyStatus(KeyHealthDisplayStatus.REVOKED); break; diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 527dca335..5200539e5 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -1821,6 +1821,8 @@ "No key issues found." "Healthy (Security Token)" "No key issues found." + "Healthy (Partial Token)" + "Click for details" "Expired" "This key should not be used anymore." "Revoked"