From 6488d19f8a4312f8d422a7bc9eee43f3109ac874 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 Apr 2022 16:22:35 +0200 Subject: [PATCH] Updated DKIM requirements --- .../java/eu/faircode/email/MessageHelper.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 54f88d4953..ba603888bd 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -1836,6 +1836,7 @@ public class MessageHelper { boolean checkDKIMRequirements() throws MessagingException { ensureHeaders(); + // https://datatracker.ietf.org/doc/html/rfc6376/ String[] headers = imessage.getHeader("DKIM-Signature"); if (headers == null || headers.length < 1) return false; @@ -1843,6 +1844,12 @@ public class MessageHelper { for (String header : headers) { Map kv = getKeyValues(MimeUtility.unfold(header)); + // Algorithm + // https://tools.ietf.org/id/draft-ietf-dcrup-dkim-usage-03.html#rfc.section.4.3 + String a = kv.get("a"); + if ("rsa-sha1".equals(a)) + return false; + // Hashed body length Integer l = Helper.parseInt(kv.get("l")); if (l != null && l == 0) { @@ -1856,15 +1863,6 @@ public class MessageHelper { Log.w("DKIM header fields missing"); return false; } - - String[] hs = h - .toLowerCase(Locale.ROOT) - .replaceAll("\\s+", "") - .split(":"); - if (!Arrays.asList(hs).contains("from")) { - Log.i("DKIM headers fields missing 'from' fields=" + h); - return false; - } } return true;