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-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to