Author: bago Date: Thu Mar 31 09:58:03 2011 New Revision: 1087233 URL: http://svn.apache.org/viewvc?rev=1087233&view=rev Log: Refactored DKIM mailets and their tests to not depend on mime4j. Excluded inheritance of mime4j dependency from pom.xml
Modified: james/jdkim/trunk/mailets/pom.xml james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java Modified: james/jdkim/trunk/mailets/pom.xml URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/pom.xml?rev=1087233&r1=1087232&r2=1087233&view=diff ============================================================================== --- james/jdkim/trunk/mailets/pom.xml (original) +++ james/jdkim/trunk/mailets/pom.xml Thu Mar 31 09:58:03 2011 @@ -38,12 +38,32 @@ <dependency> <groupId>org.apache.james.jdkim</groupId> <artifactId>apache-jdkim-library</artifactId> + <exclusions> + <exclusion> + <groupId>org.apache.james</groupId> + <artifactId>apache-mime4j-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.james</groupId> + <artifactId>apache-mime4j-dom</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.james.jdkim</groupId> <artifactId>apache-jdkim-library</artifactId> <type>test-jar</type> <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.apache.james</groupId> + <artifactId>apache-mime4j-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.james</groupId> + <artifactId>apache-mime4j-dom</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.james</groupId> Modified: james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java?rev=1087233&r1=1087232&r2=1087233&view=diff ============================================================================== --- james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java (original) +++ james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java Thu Mar 31 09:58:03 2011 @@ -56,20 +56,7 @@ public class DKIMVerify extends GenericM public void service(Mail mail) throws MessagingException { try { MimeMessage message = mail.getMessage(); - Headers headers = new MimeMessageHeaders(message); - BodyHasher bh = verifier.newBodyHasher(headers); - try { - if (bh != null) { - message.writeTo(new HeaderSkippingOutputStream(bh - .getOutputStream())); - bh.getOutputStream().close(); - } - - } catch (IOException e) { - throw new MessagingException("Exception calculating bodyhash: " - + e.getMessage(), e); - } - List<SignatureRecord> res = verifier.verify(bh); + List<SignatureRecord> res = verify(verifier, message); if (res == null || res.isEmpty()) { // neutral mail.setAttribute(DKIM_AUTH_RESULT_ATTRIBUTE, "neutral (no signatures)"); @@ -91,4 +78,22 @@ public class DKIMVerify extends GenericM } } + + protected static List<SignatureRecord> verify(DKIMVerifier verifier, MimeMessage message) + throws MessagingException, FailException { + Headers headers = new MimeMessageHeaders(message); + BodyHasher bh = verifier.newBodyHasher(headers); + try { + if (bh != null) { + message.writeTo(new HeaderSkippingOutputStream(bh + .getOutputStream())); + bh.getOutputStream().close(); + } + + } catch (IOException e) { + throw new MessagingException("Exception calculating bodyhash: " + + e.getMessage(), e); + } + return verifier.verify(bh); + } } Modified: james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java?rev=1087233&r1=1087232&r2=1087233&view=diff ============================================================================== --- james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java (original) +++ james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java Thu Mar 31 09:58:03 2011 @@ -93,15 +93,22 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); - new DKIMVerifier(mockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + verify(rawMessage, mockPublicKeyRecordRetriever); } + private List<SignatureRecord> verify(ByteArrayOutputStream rawMessage, + MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever) + throws MessagingException, FailException { + List<SignatureRecord> signs = DKIMVerify.verify(new DKIMVerifier(mockPublicKeyRecordRetriever), new MimeMessage(Session.getDefaultInstance(new Properties()), new ByteArrayInputStream(rawMessage.toByteArray()))); + assertNotNull(signs); + assertEquals(1, signs.size()); + return signs; + } + public void testDKIMSignFuture() throws MessagingException, IOException, FailException { String message = "Received: by 10.XX.XX.12 with SMTP id dfgskldjfhgkljsdfhgkljdhfg;\r\n\tTue, 06 Oct 2009 07:37:34 -0700 (PDT)\r\nReturn-Path: <bou...@example.com>\r\nReceived: from example.co.uk (example.co.uk [XX.XXX.125.19])\r\n\tby mx.example.com with ESMTP id dgdfgsdfgsd.97.2009.10.06.07.37.32;\r\n\tTue, 06 Oct 2009 07:37:32 -0700 (PDT)\r\nFrom: apa...@bago.org\r\nTo: apa...@bago.org\r\n\r\nbody\r\nprova\r\n"; @@ -131,14 +138,12 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); try { - new DKIMVerifier(mockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + verify(rawMessage, mockPublicKeyRecordRetriever); fail("Expecting signature to be ignored"); } catch (PermFailException e) { // signature ignored, so fail for missing signatures. @@ -175,13 +180,13 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); - List<SignatureRecord> rs = new DKIMVerifier(mockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + verify(rawMessage, mockPublicKeyRecordRetriever); + + List<SignatureRecord> rs = verify(rawMessage, mockPublicKeyRecordRetriever); // check we have a valued signatureTimestamp assertNotNull(((SignatureRecord) rs.get(0)).getSignatureTimestamp()); @@ -226,13 +231,12 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); - new DKIMVerifier(mockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + + verify(rawMessage, mockPublicKeyRecordRetriever); } public void testDKIMSignMessageAsObjectConvertedTo7Bit() @@ -274,13 +278,11 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); - MockPublicKeyRecordRetriever MockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( + MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); - new DKIMVerifier(MockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + verify(rawMessage, mockPublicKeyRecordRetriever); } public void testDKIMSignMessageAsObjectNotConverted() @@ -322,14 +324,12 @@ public class DKIMSignTest extends TestCa ByteArrayOutputStream rawMessage = new ByteArrayOutputStream(); mail.getMessage().writeTo(rawMessage); - String res = rawMessage.toString(); - MockPublicKeyRecordRetriever MockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( + MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever( "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;", "selector", "example.com"); try { - new DKIMVerifier(MockPublicKeyRecordRetriever) - .verify(new ByteArrayInputStream(res.getBytes())); + verify(rawMessage, mockPublicKeyRecordRetriever); fail("Expected PermFail"); } catch (PermFailException e) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org