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 2010/03/31 11:57:50 UTC

svn commit: r929450 - in /james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim: DKIMVerifier.java exceptions/FailException.java exceptions/PermFailException.java

Author: bago
Date: Wed Mar 31 09:57:49 2010
New Revision: 929450

URL: http://svn.apache.org/viewvc?rev=929450&view=rev
Log:
Add related signature identity string to fail exceptions to improve verification results.

Modified:
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/FailException.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/PermFailException.java

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=929450&r1=929449&r2=929450&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 Wed Mar 31 09:57:49 2010
@@ -121,27 +121,27 @@ public class DKIMVerifier extends DKIMCo
                     .matches()) {
                 throw new PermFailException("inapplicable key identity local="
                         + sign.getIdentityLocalPart() + " Pattern: "
-                        + pkr.getGranularityPattern().pattern());
+                        + pkr.getGranularityPattern().pattern(), sign.getIdentity().toString());
             }
     
             if (!pkr.isHashMethodSupported(sign.getHashMethod())) {
                 throw new PermFailException("inappropriate hash for a="
-                        + sign.getHashKeyType() + "/" + sign.getHashMethod());
+                        + sign.getHashKeyType() + "/" + sign.getHashMethod(), sign.getIdentity().toString());
             }
             if (!pkr.isKeyTypeSupported(sign.getHashKeyType())) {
                 throw new PermFailException("inappropriate key type for a="
-                        + sign.getHashKeyType() + "/" + sign.getHashMethod());
+                        + sign.getHashKeyType() + "/" + sign.getHashMethod(), sign.getIdentity().toString());
             }
     
             if (pkr.isDenySubdomains()) {
                 if (!sign.getIdentity().toString().toLowerCase().endsWith(
                         ("@" + sign.getDToken()).toLowerCase())) {
                     throw new PermFailException(
-                            "AUID in subdomain of SDID is not allowed by the public key record.");
+                            "AUID in subdomain of SDID is not allowed by the public key record.", sign.getIdentity().toString());
                 }
             }
         } catch (IllegalStateException e) {
-            throw new PermFailException("Invalid public key: "+e.getMessage());
+            throw new PermFailException("Invalid public key: "+e.getMessage(), sign.getIdentity().toString());
         }
     }
 
@@ -181,15 +181,18 @@ public class DKIMVerifier extends DKIMCo
             }
         }
         if (key == null) {
-            if (lastTempFailure != null)
+            if (lastTempFailure != null) {
+                if (sign != null) lastTempFailure.setRelatedRecordIdentity(sign.getIdentity().toString());
                 throw lastTempFailure;
-            else if (lastPermFailure != null)
+            } else if (lastPermFailure != null) {
+                if (sign != null) lastPermFailure.setRelatedRecordIdentity(sign.getIdentity().toString());
                 throw lastPermFailure;
-            // this is unexpected because the publicKeySelector always returns
+            }            // this is unexpected because the publicKeySelector always returns
             // null or exception
-            else
+            else {
                 throw new PermFailException(
-                        "no key for signature [unexpected condition]");
+                        "no key for signature [unexpected condition]", sign.getIdentity().toString());
+            }
         }
         return key;
     }

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/FailException.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/FailException.java?rev=929450&r1=929449&r2=929450&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/FailException.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/FailException.java Wed Mar 31 09:57:49 2010
@@ -23,6 +23,8 @@ public class FailException extends Excep
 
     private static final long serialVersionUID = 1584103235607992818L;
 
+    private String relatedRecordIdentity = null;
+
     public FailException(String error) {
         super(error);
     }
@@ -31,4 +33,11 @@ public class FailException extends Excep
         super(string, e);
     }
 
+    public String getRelatedRecordIdentity() {
+        return relatedRecordIdentity;
+    }
+
+    public void setRelatedRecordIdentity(String relatedRecordIdentity) {
+        this.relatedRecordIdentity = relatedRecordIdentity;
+    }
 }

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/PermFailException.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/PermFailException.java?rev=929450&r1=929449&r2=929450&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/PermFailException.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/exceptions/PermFailException.java Wed Mar 31 09:57:49 2010
@@ -19,6 +19,7 @@
 
 package org.apache.james.jdkim.exceptions;
 
+
 public class PermFailException extends FailException {
 
     private static final long serialVersionUID = 1304736020453821093L;
@@ -31,4 +32,9 @@ public class PermFailException extends F
         super(string, e);
     }
 
+    public PermFailException(String string, String signatureIdentity) {
+        super(string);
+        setRelatedRecordIdentity(signatureIdentity);
+    }
+
 }



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