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

Reply via email to