From e08bf89e0f0fc16ad8f493facf5b87d4268444d3 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 20 Jul 2018 12:05:01 +0200 Subject: [PATCH] show subkeys as not yet valid in the list --- .../keychain/ui/adapter/SubkeysAdapter.java | 25 +++++++++++++------ OpenKeychain/src/main/res/values/strings.xml | 1 + 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java index 3be6e03a0..d353cfc8c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java @@ -89,6 +89,8 @@ public class SubkeysAdapter extends BaseAdapter { view = layoutInflater.inflate(R.layout.view_key_adv_subkey_item, parent, false); } + Date now = new Date(); + if (mDefaultTextColor == null) { TextView keyId = view.findViewById(R.id.subkey_item_key_id); mDefaultTextColor = keyId.getTextColors(); @@ -180,6 +182,7 @@ public class SubkeysAdapter extends BaseAdapter { if (subKey.expires()) { expiryDate = new Date(subKey.expiry() * 1000); } + Date validFrom = new Date(subKey.validFrom() * 1000); // for edit key if (mSkpBuilder != null) { @@ -205,9 +208,17 @@ public class SubkeysAdapter extends BaseAdapter { vEditImage.setVisibility(View.GONE); } - boolean isExpired; - if (expiryDate != null) { - isExpired = expiryDate.before(new Date()); + boolean isNotYetValid = validFrom.after(now); + boolean isExpired = expiryDate != null && expiryDate.before(now); + if (isNotYetValid) { + Calendar validFromCal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + validFromCal.setTime(validFrom); + // convert from UTC to time zone of device + validFromCal.setTimeZone(TimeZone.getDefault()); + + vKeyExpiry.setText(context.getString(R.string.label_valid_from) + ": " + + DateFormat.getDateFormat(context).format(validFromCal.getTime())); + } else if (expiryDate != null) { Calendar expiryCal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); expiryCal.setTime(expiryDate); // convert from UTC to time zone of device @@ -216,13 +227,11 @@ public class SubkeysAdapter extends BaseAdapter { vKeyExpiry.setText(context.getString(R.string.label_expiry) + ": " + DateFormat.getDateFormat(context).format(expiryCal.getTime())); } else { - isExpired = false; - - vKeyExpiry.setText(context.getString(R.string.label_expiry) + ": " + context.getString(R.string.none)); + vKeyExpiry.setText(""); } // if key is expired or revoked... - boolean isInvalid = isRevoked || isExpired || !subKey.is_secure(); + boolean isInvalid = isRevoked || isExpired || isNotYetValid || !subKey.is_secure(); if (isInvalid) { vStatus.setVisibility(View.VISIBLE); @@ -244,7 +253,7 @@ public class SubkeysAdapter extends BaseAdapter { vStatus.setColorFilter( context.getResources().getColor(R.color.key_flag_gray), PorterDuff.Mode.SRC_IN); - } else if (isExpired) { + } else if (isNotYetValid || isExpired) { vStatus.setImageResource(R.drawable.status_signature_expired_cutout_24dp); vStatus.setColorFilter( context.getResources().getColor(R.color.key_flag_gray), diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 5e457eded..7cbe10136 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -177,6 +177,7 @@ "Creation" "Creation:" "Expiry" + "Valid from" "Usage" "Key Size" "Elliptic Curve"