From 08af779cef45aa0fa7364deefe3246806e501e0c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 15 Feb 2024 11:24:01 +0100 Subject: [PATCH] Check signature of both DKIM and ARC headers --- .../java/eu/faircode/email/MessageHelper.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 3b94c079be..f330830705 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -2238,8 +2238,17 @@ public class MessageHelper { } // https://datatracker.ietf.org/doc/html/rfc6376/ - String[] headers = amessage.getHeader(DKIM_SIGNATURE); - if (headers == null || headers.length < 1) + List headers = new ArrayList<>(); + + String[] dkim_headers = amessage.getHeader(DKIM_SIGNATURE); + if (dkim_headers != null && dkim_headers.length > 0) + headers.addAll(Arrays.asList(dkim_headers)); + + String[] arc_headers = amessage.getHeader(ARC_MESSAGE_SIGNATURE); + if (arc_headers != null && arc_headers.length > 0) + headers.addAll(Arrays.asList(arc_headers)); + + if (headers.size() == 0) return signers; for (String header : headers) { @@ -2275,9 +2284,9 @@ public class MessageHelper { else throw new IllegalArgumentException(n); - headers = amessage.getHeader(n); - if (headers != null) { - for (String header : headers) { + String[] aheaders = amessage.getHeader(n); + if (aheaders != null) { + for (String header : aheaders) { Map kv = getKeyValues(MimeUtility.unfold(header)); Integer i = Helper.parseInt(kv.get("i")); if (i == null || map.containsKey(i)) {