aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-04-15 22:37:36 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-04-15 22:37:36 +0200
commit14a8586e8c132aa1c217225e1d78b7185af3b7c2 (patch)
tree45f0ef476dc552453bcfd924eb284b0836cda7d8 /OpenKeychain/src
parentfcb73f4e24b04ebcf6f139f8aa17d2ce5ed33a78 (diff)
downloadopen-keychain-14a8586e8c132aa1c217225e1d78b7185af3b7c2.tar.gz
open-keychain-14a8586e8c132aa1c217225e1d78b7185af3b7c2.tar.bz2
open-keychain-14a8586e8c132aa1c217225e1d78b7185af3b7c2.zip
Improve verification result display, close #568
Diffstat (limited to 'OpenKeychain/src')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java42
-rw-r--r--OpenKeychain/src/main/res/layout/decrypt_file_fragment.xml120
-rw-r--r--OpenKeychain/src/main/res/layout/decrypt_message_fragment.xml97
-rw-r--r--OpenKeychain/src/main/res/layout/decrypt_result_include.xml (renamed from OpenKeychain/src/main/res/layout/decrypt_signature_include.xml)22
-rw-r--r--OpenKeychain/src/main/res/values/colors.xml8
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml24
6 files changed, 187 insertions, 126 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 2254029df..71a5f3ad5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
@@ -31,7 +31,6 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import com.beardedhen.androidbootstrap.BootstrapButton;
-import com.devspark.appmsg.AppMsg;
import org.openintents.openpgp.OpenPgpSignatureResult;
import org.sufficientlysecure.keychain.R;
@@ -73,11 +72,6 @@ public class DecryptFragment extends Fragment {
}
});
mResultLayout.setVisibility(View.GONE);
- mResultLayout.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- lookupUnknownKey(mSignatureKeyId);
- }
- });
}
private void lookupUnknownKey(long unknownKeyId) {
@@ -119,7 +113,7 @@ public class DecryptFragment extends Fragment {
String userId = signatureResult.getUserId();
String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
if (userIdSplit[0] != null) {
- mUserId.setText(userId);
+ mUserId.setText(userIdSplit[0]);
} else {
mUserId.setText(R.string.user_id_no_name);
}
@@ -132,37 +126,63 @@ public class DecryptFragment extends Fragment {
switch (signatureResult.getStatus()) {
case OpenPgpSignatureResult.SIGNATURE_SUCCESS_CERTIFIED: {
- mResultText.setText(R.string.decrypt_verified_successful);
+ if (signatureResult.isSignatureOnly()) {
+ mResultText.setText(R.string.decrypt_result_signature_certified);
+ } else {
+ mResultText.setText(R.string.decrypt_result_decrypted_and_signature_certified);
+ }
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_green));
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
+ mSignatureLayout.setVisibility(View.VISIBLE);
mLookupKey.setVisibility(View.GONE);
break;
}
case OpenPgpSignatureResult.SIGNATURE_SUCCESS_UNCERTIFIED: {
- mResultText.setText(R.string.decrypt_verified_successful);
+ if (signatureResult.isSignatureOnly()) {
+ mResultText.setText(R.string.decrypt_result_signature_uncertified);
+ } else {
+ mResultText.setText(R.string.decrypt_result_decrypted_and_signature_uncertified);
+ }
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_orange));
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
+ mSignatureLayout.setVisibility(View.VISIBLE);
mLookupKey.setVisibility(View.GONE);
break;
}
case OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY: {
- mResultText.setText(R.string.unknown_signature);
+ if (signatureResult.isSignatureOnly()) {
+ mResultText.setText(R.string.decrypt_result_signature_unknown_pub_key);
+ } else {
+ mResultText.setText(R.string.decrypt_result_decrypted_unknown_pub_key);
+ }
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_orange));
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
+ mSignatureLayout.setVisibility(View.VISIBLE);
mLookupKey.setVisibility(View.VISIBLE);
break;
}
+ case OpenPgpSignatureResult.SIGNATURE_ERROR: {
+ mResultText.setText(R.string.decrypt_result_invalid_signature);
+
+ mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_red));
+ mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
+ mSignatureLayout.setVisibility(View.GONE);
+ mLookupKey.setVisibility(View.GONE);
+ break;
+ }
+
default: {
mResultText.setText(R.string.error);
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_red));
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
+ mSignatureLayout.setVisibility(View.GONE);
mLookupKey.setVisibility(View.GONE);
break;
}
@@ -172,7 +192,7 @@ public class DecryptFragment extends Fragment {
// only successful decryption
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_blue));
- mResultText.setText(R.string.decrypt_successful);
+ mResultText.setText(R.string.decrypt_result_decrypted);
}
}
diff --git a/OpenKeychain/src/main/res/layout/decrypt_file_fragment.xml b/OpenKeychain/src/main/res/layout/decrypt_file_fragment.xml
index 633c9c832..597652713 100644
--- a/OpenKeychain/src/main/res/layout/decrypt_file_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/decrypt_file_fragment.xml
@@ -8,74 +8,86 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="4dp"
- android:paddingLeft="16dp"
- android:paddingRight="16dp"
android:orientation="vertical">
- <include layout="@layout/decrypt_signature_include" />
+ <include layout="@layout/decrypt_result_include" />
+
+ <View
+ android:id="@+id/status_divider"
+ android:layout_height="1dip"
+ android:layout_width="match_parent"
+ android:background="?android:attr/listDivider" />
<LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:orientation="vertical">
- <EditText
- android:id="@+id/decrypt_file_filename"
- android:layout_width="0dip"
+ <LinearLayout
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="top|left"
- android:inputType="textMultiLine|textUri"
- android:lines="4"
- android:maxLines="10"
- android:minLines="2"
- android:scrollbars="vertical" />
+ android:orientation="horizontal">
- <com.beardedhen.androidbootstrap.BootstrapButton
- android:id="@+id/decrypt_file_browse"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="4dp"
- bootstrapbutton:bb_icon_left="fa-folder-open"
- bootstrapbutton:bb_roundedCorners="true"
- bootstrapbutton:bb_size="default"
- bootstrapbutton:bb_type="default" />
- </LinearLayout>
+ <EditText
+ android:id="@+id/decrypt_file_filename"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:gravity="top|left"
+ android:inputType="textMultiLine|textUri"
+ android:lines="4"
+ android:maxLines="10"
+ android:minLines="2"
+ android:scrollbars="vertical" />
- <CheckBox
- android:id="@+id/decrypt_file_delete_after_decryption"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/label_delete_after_decryption" />
+ <com.beardedhen.androidbootstrap.BootstrapButton
+ android:id="@+id/decrypt_file_browse"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="4dp"
+ bootstrapbutton:bb_icon_left="fa-folder-open"
+ bootstrapbutton:bb_roundedCorners="true"
+ bootstrapbutton:bb_size="default"
+ bootstrapbutton:bb_type="default" />
+ </LinearLayout>
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <TextView
- style="@style/SectionHeader"
+ <CheckBox
+ android:id="@+id/decrypt_file_delete_after_decryption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="4dp"
- android:text="@string/section_decrypt_verify"
- android:layout_above="@+id/decrypt_file_action_decrypt"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true" />
+ android:text="@string/label_delete_after_decryption" />
- <com.beardedhen.androidbootstrap.BootstrapButton
- android:id="@+id/decrypt_file_action_decrypt"
+ <RelativeLayout
android:layout_width="match_parent"
- android:layout_height="50dp"
- android:layout_marginTop="4dp"
- android:layout_marginBottom="4dp"
- android:text="@string/btn_decrypt_verify"
- bootstrapbutton:bb_icon_left="fa-unlock"
- bootstrapbutton:bb_type="info"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true" />
+ android:layout_height="match_parent">
+
+ <TextView
+ style="@style/SectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:text="@string/section_decrypt_verify"
+ android:layout_above="@+id/decrypt_file_action_decrypt"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true" />
- </RelativeLayout>
+ <com.beardedhen.androidbootstrap.BootstrapButton
+ android:id="@+id/decrypt_file_action_decrypt"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_marginTop="4dp"
+ android:layout_marginBottom="4dp"
+ android:text="@string/btn_decrypt_verify"
+ bootstrapbutton:bb_icon_left="fa-unlock"
+ bootstrapbutton:bb_type="info"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true" />
+
+ </RelativeLayout>
+ </LinearLayout>
</LinearLayout>
</ScrollView> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/decrypt_message_fragment.xml b/OpenKeychain/src/main/res/layout/decrypt_message_fragment.xml
index dfe1bf64a..831d7e888 100644
--- a/OpenKeychain/src/main/res/layout/decrypt_message_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/decrypt_message_fragment.xml
@@ -8,59 +8,72 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="4dp"
- android:paddingLeft="16dp"
- android:paddingRight="16dp"
android:orientation="vertical">
- <include layout="@layout/decrypt_signature_include" />
+ <include layout="@layout/decrypt_result_include" />
- <EditText
- android:id="@+id/message"
+ <View
+ android:id="@+id/status_divider"
+ android:layout_height="1dip"
android:layout_width="match_parent"
- android:layout_height="0dip"
- android:gravity="top"
- android:hint="@string/decrypt_content_edit_text_hint"
- android:inputType="text|textCapSentences|textMultiLine|textLongMessage"
- android:scrollHorizontally="true"
- android:layout_weight="1" />
-
- <TextView
- style="@style/SectionHeader"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/section_decrypt_verify"
- android:id="@+id/decrypt_message_section" />
+ android:background="?android:attr/listDivider" />
<LinearLayout
- android:id="@+id/decrypt_buttons"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:orientation="vertical">
+
- <com.beardedhen.androidbootstrap.BootstrapButton
- android:id="@+id/action_decrypt"
+ <EditText
+ android:id="@+id/message"
android:layout_width="match_parent"
- android:layout_height="50dp"
- android:layout_marginRight="4dp"
- android:layout_marginTop="4dp"
- android:layout_marginBottom="4dp"
- android:layout_weight="1"
- android:text="@string/btn_decrypt_verify"
- bootstrapbutton:bb_icon_left="fa-unlock"
- bootstrapbutton:bb_type="info" />
+ android:layout_height="0dip"
+ android:gravity="top"
+ android:hint="@string/decrypt_content_edit_text_hint"
+ android:inputType="text|textCapSentences|textMultiLine|textLongMessage"
+ android:scrollHorizontally="true"
+ android:layout_weight="1" />
+
+ <TextView
+ style="@style/SectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/section_decrypt_verify"
+ android:id="@+id/decrypt_message_section" />
- <com.beardedhen.androidbootstrap.BootstrapButton
- android:id="@+id/action_decrypt_from_clipboard"
+ <LinearLayout
+ android:id="@+id/decrypt_buttons"
android:layout_width="match_parent"
- android:layout_height="50dp"
- android:layout_marginLeft="4dp"
- android:layout_marginTop="4dp"
- android:layout_marginBottom="4dp"
- android:layout_weight="1"
- android:text="@string/btn_decrypt_verify_clipboard"
- bootstrapbutton:bb_icon_left="fa-clipboard"
- bootstrapbutton:bb_type="info" />
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <com.beardedhen.androidbootstrap.BootstrapButton
+ android:id="@+id/action_decrypt"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_marginRight="4dp"
+ android:layout_marginTop="4dp"
+ android:layout_marginBottom="4dp"
+ android:layout_weight="1"
+ android:text="@string/btn_decrypt_verify"
+ bootstrapbutton:bb_icon_left="fa-unlock"
+ bootstrapbutton:bb_type="info" />
+
+ <com.beardedhen.androidbootstrap.BootstrapButton
+ android:id="@+id/action_decrypt_from_clipboard"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_marginLeft="4dp"
+ android:layout_marginTop="4dp"
+ android:layout_marginBottom="4dp"
+ android:layout_weight="1"
+ android:text="@string/btn_decrypt_verify_clipboard"
+ bootstrapbutton:bb_icon_left="fa-clipboard"
+ bootstrapbutton:bb_type="info" />
+ </LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
diff --git a/OpenKeychain/src/main/res/layout/decrypt_signature_include.xml b/OpenKeychain/src/main/res/layout/decrypt_result_include.xml
index 70faa6e83..6e599807d 100644
--- a/OpenKeychain/src/main/res/layout/decrypt_signature_include.xml
+++ b/OpenKeychain/src/main/res/layout/decrypt_result_include.xml
@@ -5,16 +5,19 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:padding="4dp"
- android:paddingLeft="10dp"
- android:paddingRight="10dp">
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:background="@color/result_blue">
<TextView
android:id="@+id/result_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="result text" />
+ android:text="result text"
+ android:textColor="@color/white" />
<RelativeLayout
android:id="@+id/result_signature"
@@ -26,7 +29,7 @@
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:id="@+id/relativeLayout">
+ android:id="@+id/result_signature_image">
<ImageView
android:id="@+id/ic_signature"
@@ -45,20 +48,24 @@
android:id="@+id/mainUserId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginLeft="4dp"
android:layout_gravity="left"
android:text="@string/label_main_user_id"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_toRightOf="@+id/relativeLayout" />
+ android:layout_toRightOf="@+id/result_signature_image"
+ android:textColor="@color/white" />
<TextView
android:id="@+id/mainUserIdRest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginLeft="4dp"
android:layout_gravity="left"
android:text="Main User Id Rest"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_below="@+id/mainUserId"
- android:layout_toRightOf="@+id/relativeLayout" />
+ android:layout_toRightOf="@+id/result_signature_image"
+ android:textColor="@color/white" />
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/lookup_key"
@@ -74,4 +81,5 @@
android:layout_alignParentEnd="true" />
</RelativeLayout>
+
</LinearLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values/colors.xml b/OpenKeychain/src/main/res/values/colors.xml
index f03d316db..0f0b2a600 100644
--- a/OpenKeychain/src/main/res/values/colors.xml
+++ b/OpenKeychain/src/main/res/values/colors.xml
@@ -4,8 +4,8 @@
<color name="emphasis">#31b6e7</color>
<color name="bg_gray">#cecbce</color>
- <color name="result_red">#CC0000</color>
- <color name="result_orange">#FF8800</color>
- <color name="result_green">#669900</color>
- <color name="result_blue">#336699</color>
+ <color name="result_red">#FF4444</color>
+ <color name="result_orange">#FFBB33</color>
+ <color name="result_green">#99CC00</color>
+ <color name="result_blue">#33B5E5</color>
</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 3a73735cd..1cb4da986 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -209,8 +209,6 @@
<string name="file_delete_confirmation">Are you sure you want to delete\n%s?</string>
<string name="file_delete_successful">Successfully deleted.</string>
<string name="no_file_selected">Select a file first.</string>
- <string name="decrypt_successful">Successfully decrypted.</string>
- <string name="decrypt_verified_successful">Successfully decrypted and/or verified.</string>
<string name="encrypt_sign_successful">Successfully signed and/or encrypted.</string>
<string name="encrypt_sign_clipboard_successful">Successfully signed and/or encrypted to clipboard.</string>
<string name="enter_passphrase_twice">Enter the passphrase twice.</string>
@@ -258,7 +256,6 @@
<item quantity="other">Found %d keys.</item>
</plurals>
- <string name="unknown_signature">Unknown signature, click button to lookup the missing key.</string>
<plurals name="bad_keys_encountered">
<item quantity="one">%d bad secret key ignored. Perhaps you exported with the option\n --export-secret-subkeys\nMake sure you export with\n --export-secret-keys\ninstead.</item>
@@ -295,7 +292,6 @@
<string name="error_main_user_id_must_not_be_empty">main user id must not be empty</string>
<string name="error_key_needs_master_key">need at least a master key</string>
<string name="error_no_encryption_keys_or_passphrase">no encryption keys or passphrase given</string>
- <string name="error_signature_failed">signature failed</string>
<string name="error_no_signature_passphrase">no passphrase given</string>
<string name="error_no_signature_key">no signature key given</string>
<string name="error_invalid_data">not valid encryption data</string>
@@ -305,14 +301,16 @@
<string name="error_wrong_passphrase">wrong passphrase</string>
<string name="error_saving_keys">error saving some keys</string>
<string name="error_could_not_extract_private_key">could not extract private key</string>
- <string name="error_only_files_are_supported">Direct binary data without actual file in filesystem is not supported. This is only supported by ACTION_ENCRYPT_STREAM_AND_RETURN.</string>
- <string name="error_jelly_bean_needed">You need Android 4.1 alias Jelly Bean to use Androids NFC Beam feature!</string>
- <string name="error_nfc_needed">NFC is not available on your device!</string>
- <string name="error_nothing_import">Nothing to import!</string>
<string name="error_expiry_must_come_after_creation">expiry date must come after creation date</string>
<string name="error_save_first">please save the keyring first</string>
<string name="error_can_not_delete_contact">you can not delete this contact because it is your own.</string>
<string name="error_can_not_delete_contacts">you can not delete the following contacts because they are your own:\n%s</string>
+
+ <!-- errors without preceeding Error: -->
+ <string name="error_only_files_are_supported">Direct binary data without actual file in filesystem is not supported. This is only supported by ACTION_ENCRYPT_STREAM_AND_RETURN.</string>
+ <string name="error_jelly_bean_needed">You need Android 4.1 alias Jelly Bean to use Androids NFC Beam feature!</string>
+ <string name="error_nfc_needed">NFC is not available on your device!</string>
+ <string name="error_nothing_import">Nothing to import!</string>
<string name="error_keyserver_insufficient_query">Insufficient server query</string>
<string name="error_keyserver_query">Querying keyserver failed</string>
<string name="error_keyserver_too_many_responses">Too many responses</string>
@@ -328,6 +326,16 @@
</plurals>
<string name="error_change_something_first">You must make changes to the keyring before you can save it</string>
+ <!-- results shown after decryption/verification -->
+ <string name="decrypt_result_invalid_signature">Invalid signature!</string>
+ <string name="decrypt_result_signature_unknown_pub_key">Unknown public key</string>
+ <string name="decrypt_result_signature_uncertified">Valid signature (uncertified)</string>
+ <string name="decrypt_result_signature_certified">Valid signature (certified)</string>
+ <string name="decrypt_result_decrypted">Successfully decrypted</string>
+ <string name="decrypt_result_decrypted_unknown_pub_key">Successfully decrypted but unknown public key</string>
+ <string name="decrypt_result_decrypted_and_signature_uncertified">Successfully decrypted and valid signature (uncertified)</string>
+ <string name="decrypt_result_decrypted_and_signature_certified">Successfully decrypted and valid signature (certified)</string>
+
<!-- progress dialogs, usually ending in '…' -->
<string name="progress_done">Done.</string>
<string name="progress_cancel">Cancel</string>