mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-24 01:32:16 -05:00
Improve verification result display, close #568
This commit is contained in:
parent
fcb73f4e24
commit
14a8586e8c
@ -31,7 +31,6 @@ import android.widget.RelativeLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.beardedhen.androidbootstrap.BootstrapButton;
|
import com.beardedhen.androidbootstrap.BootstrapButton;
|
||||||
import com.devspark.appmsg.AppMsg;
|
|
||||||
|
|
||||||
import org.openintents.openpgp.OpenPgpSignatureResult;
|
import org.openintents.openpgp.OpenPgpSignatureResult;
|
||||||
import org.sufficientlysecure.keychain.R;
|
import org.sufficientlysecure.keychain.R;
|
||||||
@ -73,11 +72,6 @@ public class DecryptFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
mResultLayout.setVisibility(View.GONE);
|
mResultLayout.setVisibility(View.GONE);
|
||||||
mResultLayout.setOnClickListener(new OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
lookupUnknownKey(mSignatureKeyId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lookupUnknownKey(long unknownKeyId) {
|
private void lookupUnknownKey(long unknownKeyId) {
|
||||||
@ -119,7 +113,7 @@ public class DecryptFragment extends Fragment {
|
|||||||
String userId = signatureResult.getUserId();
|
String userId = signatureResult.getUserId();
|
||||||
String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
|
String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
|
||||||
if (userIdSplit[0] != null) {
|
if (userIdSplit[0] != null) {
|
||||||
mUserId.setText(userId);
|
mUserId.setText(userIdSplit[0]);
|
||||||
} else {
|
} else {
|
||||||
mUserId.setText(R.string.user_id_no_name);
|
mUserId.setText(R.string.user_id_no_name);
|
||||||
}
|
}
|
||||||
@ -132,37 +126,63 @@ public class DecryptFragment extends Fragment {
|
|||||||
|
|
||||||
switch (signatureResult.getStatus()) {
|
switch (signatureResult.getStatus()) {
|
||||||
case OpenPgpSignatureResult.SIGNATURE_SUCCESS_CERTIFIED: {
|
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));
|
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_green));
|
||||||
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
|
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
|
||||||
|
mSignatureLayout.setVisibility(View.VISIBLE);
|
||||||
mLookupKey.setVisibility(View.GONE);
|
mLookupKey.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case OpenPgpSignatureResult.SIGNATURE_SUCCESS_UNCERTIFIED: {
|
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));
|
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_orange));
|
||||||
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
|
mSignatureStatusImage.setImageResource(R.drawable.overlay_ok);
|
||||||
|
mSignatureLayout.setVisibility(View.VISIBLE);
|
||||||
mLookupKey.setVisibility(View.GONE);
|
mLookupKey.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY: {
|
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));
|
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_orange));
|
||||||
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
|
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
|
||||||
|
mSignatureLayout.setVisibility(View.VISIBLE);
|
||||||
mLookupKey.setVisibility(View.VISIBLE);
|
mLookupKey.setVisibility(View.VISIBLE);
|
||||||
break;
|
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: {
|
default: {
|
||||||
mResultText.setText(R.string.error);
|
mResultText.setText(R.string.error);
|
||||||
|
|
||||||
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_red));
|
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_red));
|
||||||
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
|
mSignatureStatusImage.setImageResource(R.drawable.overlay_error);
|
||||||
|
mSignatureLayout.setVisibility(View.GONE);
|
||||||
mLookupKey.setVisibility(View.GONE);
|
mLookupKey.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -172,7 +192,7 @@ public class DecryptFragment extends Fragment {
|
|||||||
|
|
||||||
// only successful decryption
|
// only successful decryption
|
||||||
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_blue));
|
mResultLayout.setBackgroundColor(getResources().getColor(R.color.result_blue));
|
||||||
mResultText.setText(R.string.decrypt_successful);
|
mResultText.setText(R.string.decrypt_result_decrypted);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,13 +8,24 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<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="match_parent"
|
||||||
android:paddingTop="4dp"
|
android:paddingTop="4dp"
|
||||||
android:paddingLeft="16dp"
|
android:paddingLeft="16dp"
|
||||||
android:paddingRight="16dp"
|
android:paddingRight="16dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<include layout="@layout/decrypt_signature_include" />
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -78,4 +89,5 @@
|
|||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
@ -8,12 +8,24 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<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="match_parent"
|
||||||
android:paddingTop="4dp"
|
android:paddingTop="4dp"
|
||||||
android:paddingLeft="16dp"
|
android:paddingLeft="16dp"
|
||||||
android:paddingRight="16dp"
|
android:paddingRight="16dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<include layout="@layout/decrypt_signature_include" />
|
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/message"
|
android:id="@+id/message"
|
||||||
@ -63,4 +75,5 @@
|
|||||||
bootstrapbutton:bb_type="info" />
|
bootstrapbutton:bb_type="info" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
@ -5,16 +5,19 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="4dp"
|
android:paddingLeft="16dp"
|
||||||
android:paddingLeft="10dp"
|
android:paddingRight="16dp"
|
||||||
android:paddingRight="10dp">
|
android:paddingTop="4dp"
|
||||||
|
android:paddingBottom="4dp"
|
||||||
|
android:background="@color/result_blue">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/result_text"
|
android:id="@+id/result_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:text="result text" />
|
android:text="result text"
|
||||||
|
android:textColor="@color/white" />
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/result_signature"
|
android:id="@+id/result_signature"
|
||||||
@ -26,7 +29,7 @@
|
|||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/relativeLayout">
|
android:id="@+id/result_signature_image">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/ic_signature"
|
android:id="@+id/ic_signature"
|
||||||
@ -45,20 +48,24 @@
|
|||||||
android:id="@+id/mainUserId"
|
android:id="@+id/mainUserId"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="4dp"
|
||||||
android:layout_gravity="left"
|
android:layout_gravity="left"
|
||||||
android:text="@string/label_main_user_id"
|
android:text="@string/label_main_user_id"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
android:layout_toRightOf="@+id/relativeLayout" />
|
android:layout_toRightOf="@+id/result_signature_image"
|
||||||
|
android:textColor="@color/white" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/mainUserIdRest"
|
android:id="@+id/mainUserIdRest"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="4dp"
|
||||||
android:layout_gravity="left"
|
android:layout_gravity="left"
|
||||||
android:text="Main User Id Rest"
|
android:text="Main User Id Rest"
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
android:layout_below="@+id/mainUserId"
|
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
|
<com.beardedhen.androidbootstrap.BootstrapButton
|
||||||
android:id="@+id/lookup_key"
|
android:id="@+id/lookup_key"
|
||||||
@ -74,4 +81,5 @@
|
|||||||
android:layout_alignParentEnd="true" />
|
android:layout_alignParentEnd="true" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@ -4,8 +4,8 @@
|
|||||||
<color name="emphasis">#31b6e7</color>
|
<color name="emphasis">#31b6e7</color>
|
||||||
<color name="bg_gray">#cecbce</color>
|
<color name="bg_gray">#cecbce</color>
|
||||||
|
|
||||||
<color name="result_red">#CC0000</color>
|
<color name="result_red">#FF4444</color>
|
||||||
<color name="result_orange">#FF8800</color>
|
<color name="result_orange">#FFBB33</color>
|
||||||
<color name="result_green">#669900</color>
|
<color name="result_green">#99CC00</color>
|
||||||
<color name="result_blue">#336699</color>
|
<color name="result_blue">#33B5E5</color>
|
||||||
</resources>
|
</resources>
|
@ -209,8 +209,6 @@
|
|||||||
<string name="file_delete_confirmation">Are you sure you want to delete\n%s?</string>
|
<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="file_delete_successful">Successfully deleted.</string>
|
||||||
<string name="no_file_selected">Select a file first.</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_successful">Successfully signed and/or encrypted.</string>
|
||||||
<string name="encrypt_sign_clipboard_successful">Successfully signed and/or encrypted to clipboard.</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>
|
<string name="enter_passphrase_twice">Enter the passphrase twice.</string>
|
||||||
@ -258,7 +256,6 @@
|
|||||||
<item quantity="other">Found %d keys.</item>
|
<item quantity="other">Found %d keys.</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
<string name="unknown_signature">Unknown signature, click button to lookup the missing key.</string>
|
|
||||||
|
|
||||||
<plurals name="bad_keys_encountered">
|
<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>
|
<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_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_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_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_passphrase">no passphrase given</string>
|
||||||
<string name="error_no_signature_key">no signature key given</string>
|
<string name="error_no_signature_key">no signature key given</string>
|
||||||
<string name="error_invalid_data">not valid encryption data</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_wrong_passphrase">wrong passphrase</string>
|
||||||
<string name="error_saving_keys">error saving some keys</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_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_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_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_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>
|
<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_insufficient_query">Insufficient server query</string>
|
||||||
<string name="error_keyserver_query">Querying keyserver failed</string>
|
<string name="error_keyserver_query">Querying keyserver failed</string>
|
||||||
<string name="error_keyserver_too_many_responses">Too many responses</string>
|
<string name="error_keyserver_too_many_responses">Too many responses</string>
|
||||||
@ -328,6 +326,16 @@
|
|||||||
</plurals>
|
</plurals>
|
||||||
<string name="error_change_something_first">You must make changes to the keyring before you can save it</string>
|
<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 '…' -->
|
<!-- progress dialogs, usually ending in '…' -->
|
||||||
<string name="progress_done">Done.</string>
|
<string name="progress_done">Done.</string>
|
||||||
<string name="progress_cancel">Cancel</string>
|
<string name="progress_cancel">Cancel</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user