aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-10-08 18:31:31 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-10-08 18:31:31 +0200
commit0d6d4653b43fcf1389b470afd7364854505d96c2 (patch)
treeba42b4d9c4f960036a4ff80b800bd66743e893f8 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui
parent2eb776594f378ac7a14ea716f0a7470d34230ec2 (diff)
downloadopen-keychain-0d6d4653b43fcf1389b470afd7364854505d96c2.tar.gz
open-keychain-0d6d4653b43fcf1389b470afd7364854505d96c2.tar.bz2
open-keychain-0d6d4653b43fcf1389b470afd7364854505d96c2.zip
Big error screen if signature is invalid or key is revoked/expired, also fixes signature status for expired and revoked keys
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java77
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java27
2 files changed, 71 insertions, 33 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
index 3bd028da4..b7d204851 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
@@ -112,9 +112,15 @@ public abstract class DecryptFragment extends Fragment {
startActivityForResult(intent, REQUEST_CODE_NFC_DECRYPT);
}
- protected void onResult(DecryptVerifyResult decryptVerifyResult) {
+ /**
+ *
+ * @return returns false if signature is invalid, key is revoked or expired.
+ */
+ protected boolean onResult(DecryptVerifyResult decryptVerifyResult) {
final OpenPgpSignatureResult signatureResult = decryptVerifyResult.getSignatureResult();
+ boolean valid = false;
+
mSignatureKeyId = 0;
mResultLayout.setVisibility(View.VISIBLE);
if (signatureResult != null) {
@@ -147,14 +153,9 @@ public abstract class DecryptFragment extends Fragment {
KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_VERIFIED);
setSignatureLayoutVisibility(View.VISIBLE);
- mSignatureAction.setText(R.string.decrypt_result_action_show);
- mSignatureAction.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_action_accounts, 0);
- mSignatureLayout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- showKey(mSignatureKeyId);
- }
- });
+ setShowAction(mSignatureKeyId);
+
+ valid = true;
break;
}
@@ -163,25 +164,9 @@ public abstract class DecryptFragment extends Fragment {
KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_UNVERIFIED);
setSignatureLayoutVisibility(View.VISIBLE);
- setShowAction(mSignatureAction, mSignatureKeyId);
- break;
- }
-
- case OpenPgpSignatureResult.SIGNATURE_KEY_EXPIRED: {
- mSignatureText.setText(R.string.decrypt_result_signature_expired_key);
- KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_EXPIRED);
-
- setSignatureLayoutVisibility(View.VISIBLE);
- setShowAction(mSignatureAction, mSignatureKeyId);
- break;
- }
-
- case OpenPgpSignatureResult.SIGNATURE_KEY_REVOKED: {
- mSignatureText.setText(R.string.decrypt_result_signature_revoked_key);
- KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_REVOKED);
+ setShowAction(mSignatureKeyId);
- setSignatureLayoutVisibility(View.VISIBLE);
- setShowAction(mSignatureAction, mSignatureKeyId);
+ valid = true;
break;
}
@@ -198,6 +183,30 @@ public abstract class DecryptFragment extends Fragment {
lookupUnknownKey(mSignatureKeyId);
}
});
+
+ valid = true;
+ break;
+ }
+
+ case OpenPgpSignatureResult.SIGNATURE_KEY_EXPIRED: {
+ mSignatureText.setText(R.string.decrypt_result_signature_expired_key);
+ KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_EXPIRED);
+
+ setSignatureLayoutVisibility(View.VISIBLE);
+ setShowAction(mSignatureKeyId);
+
+ valid = false;
+ break;
+ }
+
+ case OpenPgpSignatureResult.SIGNATURE_KEY_REVOKED: {
+ mSignatureText.setText(R.string.decrypt_result_signature_revoked_key);
+ KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_REVOKED);
+
+ setSignatureLayoutVisibility(View.VISIBLE);
+ setShowAction(mSignatureKeyId);
+
+ valid = false;
break;
}
@@ -206,6 +215,8 @@ public abstract class DecryptFragment extends Fragment {
KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_INVALID);
setSignatureLayoutVisibility(View.GONE);
+
+ valid = false;
break;
}
}
@@ -216,7 +227,11 @@ public abstract class DecryptFragment extends Fragment {
KeyFormattingUtils.setStatusImage(getActivity(), mSignatureIcon, mSignatureText, KeyFormattingUtils.STATE_NOT_SIGNED);
mEncryptionText.setText(R.string.decrypt_result_encrypted);
KeyFormattingUtils.setStatusImage(getActivity(), mEncryptionIcon, mEncryptionText, KeyFormattingUtils.STATE_ENCRYPTED);
+
+ valid = true;
}
+
+ return valid;
}
private void setSignatureLayoutVisibility(int visibility) {
@@ -225,10 +240,10 @@ public abstract class DecryptFragment extends Fragment {
mSignatureDivider2.setVisibility(visibility);
}
- private void setShowAction(TextView signatureAction, final long signatureKeyId) {
- signatureAction.setText(R.string.decrypt_result_action_show);
- signatureAction.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_action_accounts, 0);
- signatureAction.setOnClickListener(new View.OnClickListener() {
+ private void setShowAction(final long signatureKeyId) {
+ mSignatureAction.setText(R.string.decrypt_result_action_show);
+ mSignatureAction.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_action_accounts, 0);
+ mSignatureLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showKey(signatureKeyId);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
index 4f25126ee..78345e11c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java
@@ -27,6 +27,8 @@ import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.LinearLayout;
import android.widget.TextView;
import org.openintents.openpgp.util.OpenPgpApi;
@@ -44,6 +46,9 @@ public class DecryptTextFragment extends DecryptFragment {
public static final String ARG_CIPHERTEXT = "ciphertext";
// view
+ private LinearLayout mValidLayout;
+ private LinearLayout mInvalidLayout;
+ private Button mInvalidButton;
private TextView mText;
private View mShareButton;
private View mCopyButton;
@@ -71,7 +76,9 @@ public class DecryptTextFragment extends DecryptFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.decrypt_text_fragment, container, false);
-
+ mValidLayout = (LinearLayout) view.findViewById(R.id.decrypt_text_valid);
+ mInvalidLayout = (LinearLayout) view.findViewById(R.id.decrypt_text_invalid);
+ mInvalidButton = (Button) view.findViewById(R.id.decrypt_text_invalid_button);
mText = (TextView) view.findViewById(R.id.decrypt_text_plaintext);
mShareButton = view.findViewById(R.id.action_decrypt_share_plaintext);
mCopyButton = view.findViewById(R.id.action_decrypt_copy_plaintext);
@@ -87,6 +94,13 @@ public class DecryptTextFragment extends DecryptFragment {
copyToClipboard(mText.getText().toString());
}
});
+ mInvalidButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mInvalidLayout.setVisibility(View.GONE);
+ mValidLayout.setVisibility(View.VISIBLE);
+ }
+ });
return view;
}
@@ -186,9 +200,18 @@ public class DecryptTextFragment extends DecryptFragment {
pgpResult.createNotify(getActivity()).show();
// display signature result in activity
- onResult(pgpResult);
+ boolean valid = onResult(pgpResult);
+
+ if (valid) {
+ mInvalidLayout.setVisibility(View.GONE);
+ mValidLayout.setVisibility(View.VISIBLE);
+ } else {
+ mInvalidLayout.setVisibility(View.VISIBLE);
+ mValidLayout.setVisibility(View.GONE);
+ }
} else {
pgpResult.createNotify(getActivity()).show();
+ // TODO: show also invalid layout with different text?
}
}
}