You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ba...@apache.org on 2009/10/12 09:42:49 UTC

svn commit: r824254 - in /james/jdkim/trunk: mailets/src/main/java/org/apache/james/jdkim/mailets/ main/src/main/java/org/apache/james/jdkim/ main/src/main/java/org/apache/james/jdkim/impl/ main/src/main/java/org/apache/james/jdkim/tagvalue/

Author: bago
Date: Mon Oct 12 07:42:49 2009
New Revision: 824254

URL: http://svn.apache.org/viewvc?rev=824254&view=rev
Log:
Hide crypto exceptions behind PermFailExceptions.

Modified:
    james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java

Modified: james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java (original)
+++ james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java Mon Oct 12 07:42:49 2009
@@ -138,9 +138,6 @@
             // on top.
             // message.addHeaderLine(signatureHeader);
             prependHeader(message, signatureHeader);
-        } catch (NoSuchAlgorithmException e) {
-            throw new MessagingException(
-                    "Unknown algorythm: " + e.getMessage(), e);
         } catch (PermFailException e) {
             throw new MessagingException("PermFail while signing: "
                     + e.getMessage(), e);

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java Mon Oct 12 07:42:49 2009
@@ -57,7 +57,7 @@
     }
 
     public BodyHasher newBodyHasher(SignatureRecord signRecord)
-            throws NoSuchAlgorithmException {
+            throws PermFailException {
         return new BodyHasherImpl(signRecord);
     }
 
@@ -71,18 +71,14 @@
                         + e1.getMessage(), e1);
             }
             SignatureRecord srt = newSignatureRecordTemplate(signatureRecordTemplate);
-            try {
-                BodyHasher bhj = newBodyHasher(srt);
 
-                // computation of the body hash.
-                DKIMCommon.streamCopy(message.getBodyInputStream(), bhj
-                        .getOutputStream());
-
-                return sign(message, bhj);
-            } catch (NoSuchAlgorithmException e) {
-                throw new PermFailException("Unknown algorythm: "
-                        + e.getMessage(), e);
-            }
+            BodyHasher bhj = newBodyHasher(srt);
+
+            // computation of the body hash.
+            DKIMCommon.streamCopy(message.getBodyInputStream(), bhj
+                    .getOutputStream());
+
+            return sign(message, bhj);
 
         } finally {
             is.close();

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java Mon Oct 12 07:42:49 2009
@@ -73,7 +73,7 @@
     }
 
     public BodyHasher newBodyHasher(SignatureRecord signRecord)
-            throws NoSuchAlgorithmException {
+            throws PermFailException {
         return new BodyHasherImpl(signRecord);
     }
 
@@ -333,6 +333,7 @@
             throw prepareException(signatureExceptions);
         } else {
             // TODO list good and bad signatures.
+            // remove system out.
             for (Iterator i = signatureExceptions.keySet().iterator(); i
                     .hasNext();) {
                 String f = (String) i.next();

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java Mon Oct 12 07:42:49 2009
@@ -30,6 +30,7 @@
 import org.apache.james.jdkim.canon.LimitedOutputStream;
 import org.apache.james.jdkim.canon.RelaxedBodyCanonicalizer;
 import org.apache.james.jdkim.canon.SimpleBodyCanonicalizer;
+import org.apache.james.jdkim.exceptions.PermFailException;
 
 public class BodyHasherImpl implements BodyHasher {
 
@@ -38,16 +39,29 @@
     private DigestOutputStream digesterOS;
     private OutputStream out;
 
-    public BodyHasherImpl(SignatureRecord sign) throws NoSuchAlgorithmException {
-        MessageDigest md = MessageDigest.getInstance(sign.getHashAlgo()
-                .toString());
+    public BodyHasherImpl(SignatureRecord sign) throws PermFailException {
+        MessageDigest md;
+        try {
+            md = MessageDigest.getInstance(sign.getHashAlgo().toString());
+        } catch (NoSuchAlgorithmException e) {
+            throw new PermFailException("Unsupported algorythm: "
+                    + sign.getHashAlgo(), e);
+        }
 
         int limit = sign.getBodyHashLimit();
 
         // TODO enhance this to use a lookup service.
-        boolean relaxedBody = "relaxed".equals(sign
+        boolean relaxedBody = SignatureRecord.RELAXED.equals(sign
                 .getBodyCanonicalisationMethod());
 
+        if (!relaxedBody
+                && !SignatureRecord.SIMPLE.equals(sign
+                        .getBodyCanonicalisationMethod())) {
+            throw new PermFailException(
+                    "Unsupported body canonicalization method: "
+                            + sign.getBodyCanonicalisationMethod());
+        }
+
         DigestOutputStream dout = new DigestOutputStream(md);
 
         OutputStream out = dout;

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java Mon Oct 12 07:42:49 2009
@@ -46,6 +46,9 @@
         this.resolver = resolver;
     }
 
+    /**
+     * @see org.apache.james.jdkim.api.PublicKeyRecordRetriever#getRecords(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence)
+     */
     public List/* String */getRecords(CharSequence methodAndOptions,
             CharSequence selector, CharSequence token)
             throws TempFailException, PermFailException {

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java Mon Oct 12 07:42:49 2009
@@ -36,8 +36,6 @@
 
 /**
  * The header of an entity (see RFC 2045).
- * 
- * TODO: we have to handle correct ordered extraction for fields.
  */
 public class Message implements Headers {
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java?rev=824254&r1=824253&r2=824254&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java Mon Oct 12 07:42:49 2009
@@ -68,8 +68,7 @@
     }
 
     // TODO do we treat v=NONDKIM1 records, syntax error records and v=DKIM1 in
-    // the middle records
-    // in the same way?
+    // the middle records in the same way?
     public void validate() {
         super.validate();
         if (containsTag("v")) {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org