@Test public void testEmptyBody() throws IOException, FailException { String messageString = "Return-Path: \r\n" + "Received: from compute3.internal (compute3.nyi.internal [10.202.2.43])\r\n" + " by sloti21d1t07 (Cyrus fastmail-fmjessie43991-14970-git-fastmail-14970) with LMTPA;\r\n" + " Thu, 11 May 2017 12:51:36 -0400\r\n" + "X-Cyrus-Session-Id: sloti21d1t07-4096895-1494521496-2-14639052480362883875\r\n" + "X-Sieve: CMU Sieve 3.0\r\n" + "X-Spam-known-sender: no (\"From == To and no DKIM or SPF for from domain, likely forged\");\r\n" + " in-addressbook; shared/zw9bhaccpxz585b1epcoz8k6 (\"core\")\r\n" + "X-Spam-score: 0.0\r\n" + "X-Spam-hits: ALL_TRUSTED -1, BAYES_00 -1.9, ME_FROM_EQ_TO 0.01, LANGUAGES unknown,\r\n" + " BAYES_USED global, SA_VERSION 3.4.0\r\n" + "X-Spam-source: IP='10.0.2.15', Host='unk', Country='unk', FromHeader='com',\r\n" + " MailFrom='com'\r\n" + "X-Spam-charsets: plain='utf-8'\r\n" + "X-Resolved-to: marco_nembrini@xorlab.com\r\n" + "X-Delivered-to: marco.nembrini@xorlab.com\r\n" + "X-Mail-from: marco.nembrini@xorlab.com\r\n" + "Received: from mx6 ([10.202.2.205])\r\n" + " by compute3.internal (LMTPProxy); Thu, 11 May 2017 12:51:36 -0400\r\n" + "Received: from mx6.messagingengine.com (localhost [127.0.0.1])\r\n" + " by mailmx.nyi.internal (Postfix) with ESMTP id 6604064FC2\r\n" + " for ; Thu, 11 May 2017 12:51:36 -0400 (EDT)\r\n" + "Received: from mailmx.nyi.internal (localhost [127.0.0.1])\r\n" + " by mx6.messagingengine.com (Authentication Milter) with ESMTP\r\n" + " id 540CEAE1181;\r\n" + " Thu, 11 May 2017 12:51:36 -0400\r\n" + "Authentication-Results: mx6.messagingengine.com;\r\n" + " dkim=pass (2048-bit rsa key) header.d=messagingengine.com header.i=@messagingengine.com header.b=AyHVNRRb;\r\n" + " x-local-ip=pass\r\n" + "Received: from mailout.nyi.internal (gateway1.nyi.internal [10.202.2.221])\r\n" + " (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\r\n" + " (No client certificate requested)\r\n" + " by mailmx.nyi.internal (Postfix) with ESMTPS\r\n" + " for ; Thu, 11 May 2017 12:51:36 -0400 (EDT)\r\n" + "Received: from compute2.internal (compute2.nyi.internal [10.202.2.42])\r\n" + " by mailout.nyi.internal (Postfix) with ESMTP id 1466820B2A\r\n" + " for ; Thu, 11 May 2017 12:51:36 -0400 (EDT)\r\n" + "Received: from frontend1 ([10.202.2.160])\r\n" + " by compute2.internal (MEProxy); Thu, 11 May 2017 12:51:36 -0400\r\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=\r\n" + " messagingengine.com; h=content-transfer-encoding:content-type\r\n" + " :date:from:message-id:mime-version:subject:to:x-me-sender\r\n" + " :x-me-sender:x-sasl-enc:x-sasl-enc; s=fm1; bh=47DEQpj8HBSa+/TImW\r\n" + " +5JCeuQeRkm5NMpJWZG3hSuFU=; b=AyHVNRRbrC4kg5LxJ0MsAd6q3tBbJm1xEm\r\n" + " sFXfYxXDjEVq3mnwykF8hKQTLqYGwO3uUYtjdHgPTtrMhfLHkW5R9znAh2HbE0NJ\r\n" + " hnIexOkaUwxlq0wh12ANhAgm4ii7AUO+QNGavPB0t1aCWe2/C0mVt2Znb59vM6km\r\n" + " crP8GYkd5/WsfvtoBZDAptx7iDRTlDOLpykqIX5sauOX6c/Hf83oXryz06j6yk6C\r\n" + " WrDUJgUEgtaBNqWx2u/TVV7oqeB01YNVzluJIafHFoOGHIk/e6KS0IHZH3b0j/gU\r\n" + " QBQZQFQbpqiQnwgYI0I+U4whJrQYanFBkd4VwA+W3Bib6/0PmEoA==\r\n" + "X-ME-Sender: \r\n" + "X-Sasl-enc: AtNaNrVZtwCP8571Nf793tM10leyU5Cl03s1n/6x89f6 1494521495\r\n" + "To: marco.nembrini@xorlab.com\r\n" + "From: Marco Nembrini \r\n" + "Subject: test empty body\r\n" + "Message-ID: \r\n" + "Date: Thu, 11 May 2017 18:51:24 +0200\r\n" + "MIME-Version: 1.0\r\n" + "Content-Type: text/plain; charset=utf-8\r\n" + "Content-Transfer-Encoding: 7bit\r\n" + "\r\n" + "\r\n" + ""; InputStream inputStream = IOUtils.toInputStream(messageString, StandardCharsets.UTF_8); DKIMVerifier verifier = new DKIMVerifier(); List signatures = verifier.verify(inputStream); Assert.assertEquals(1, signatures.size()); }