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: <[email protected]>\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: [email protected]\r\nTo: [email protected]\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: [email protected]
For additional commands, e-mail: [email protected]