DKIM: highlight found signer

This commit is contained in:
M66B
2024-05-20 16:27:57 +02:00
parent 6abb6dd47d
commit 3e9fa1a7f5
2 changed files with 21 additions and 10 deletions

View File

@@ -2630,20 +2630,30 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibAddContact.setVisibility(show_addresses && contacts && froms > 0 ? View.VISIBLE : View.GONE);
boolean known_signer = false;
if (native_dkim &&
message.signedby != null &&
message.from != null &&
message.from.length == 1) {
SpannableStringBuilder signers = new SpannableStringBuilderEx();
if (native_dkim && message.signedby != null) {
// https://dmarcly.com/blog/what-is-dmarc-identifier-alignment-domain-alignment
String domain = UriHelper.getEmailDomain(((InternetAddress) message.from[0]).getAddress());
if (domain != null)
for (String signer : message.signedby.split(","))
if (Objects.equals(
List<Address> envelop = new ArrayList<>();
if (message.return_path != null)
envelop.addAll(Arrays.asList(message.return_path));
if (message.from != null)
envelop.addAll(Arrays.asList(message.from));
for (String signer : message.signedby.split(",")) {
if (signers.length() > 0)
signers.append(", ");
int start = signers.length();
signers.append(signer);
for (Address a : envelop) {
String domain = UriHelper.getEmailDomain(((InternetAddress) a).getAddress());
if (domain != null && Objects.equals(
UriHelper.getRootDomain(context, signer),
UriHelper.getRootDomain(context, domain))) {
signers.setSpan(new ForegroundColorSpan(textColorLink), start, signers.length(), 0);
known_signer = true;
break;
}
}
}
}
boolean show_signers = (native_dkim &&
message.signedby != null &&
@@ -2651,8 +2661,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tvSignedByTitle.setVisibility(show_signers ? View.VISIBLE : View.GONE);
tvSignedBy.setVisibility(show_signers ? View.VISIBLE : View.GONE);
tvSignedBy.setTextColor(known_signer ? textColorTertiary : colorAccent);
tvSignedBy.setText(message.signedby == null ? null : message.signedby.replace(",", ", "));
tvSignedBy.setText(signers);
tvSubmitterTitle.setVisibility(!TextUtils.isEmpty(submitter) ? View.VISIBLE : View.GONE);
tvSubmitter.setVisibility(!TextUtils.isEmpty(submitter) ? View.VISIBLE : View.GONE);