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/29 12:02:12 UTC

svn commit: r928673 - /james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java

Author: bago
Date: Mon Mar 29 10:02:12 2010
New Revision: 928673

URL: http://svn.apache.org/viewvc?rev=928673&view=rev
Log:
Catch IllegalStateExcetpion and rethrow as PermFailException on Invalid public key.

Modified:
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.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=928673&r1=928672&r2=928673&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 Mar 29 10:02:12 2010
@@ -116,30 +116,33 @@ public class DKIMVerifier extends DKIMCo
      * @throws PermFailException when the keys are not applicable
      */
     public static void apply(PublicKeyRecord pkr, SignatureRecord sign) throws PermFailException {
-        if (!pkr.getGranularityPattern().matcher(sign.getIdentityLocalPart())
-                .matches()) {
-            throw new PermFailException("inapplicable key identity local="
-                    + sign.getIdentityLocalPart() + " Pattern: "
-                    + pkr.getGranularityPattern().pattern());
-        }
-
-        if (!pkr.isHashMethodSupported(sign.getHashMethod())) {
-            throw new PermFailException("inappropriate hash for a="
-                    + sign.getHashKeyType() + "/" + sign.getHashMethod());
-        }
-        if (!pkr.isKeyTypeSupported(sign.getHashKeyType())) {
-            throw new PermFailException("inappropriate key type for a="
-                    + sign.getHashKeyType() + "/" + sign.getHashMethod());
-        }
-
-        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.");
+        try {
+            if (!pkr.getGranularityPattern().matcher(sign.getIdentityLocalPart())
+                    .matches()) {
+                throw new PermFailException("inapplicable key identity local="
+                        + sign.getIdentityLocalPart() + " Pattern: "
+                        + pkr.getGranularityPattern().pattern());
             }
+    
+            if (!pkr.isHashMethodSupported(sign.getHashMethod())) {
+                throw new PermFailException("inappropriate hash for a="
+                        + sign.getHashKeyType() + "/" + sign.getHashMethod());
+            }
+            if (!pkr.isKeyTypeSupported(sign.getHashKeyType())) {
+                throw new PermFailException("inappropriate key type for a="
+                        + sign.getHashKeyType() + "/" + sign.getHashMethod());
+            }
+    
+            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.");
+                }
+            }
+        } catch (IllegalStateException e) {
+            throw new PermFailException("Invalid public key: "+e.getMessage());
         }
-
     }
 
     /**



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