Author: bago
Date: Mon Sep 13 19:52:13 2010
New Revision: 996667

URL: http://svn.apache.org/viewvc?rev=996667&view=rev
Log:
Catch IllegalStateException on public key validation (unsupported algorythm and 
so on) and throws a permerror with a meaningfull description (DKIM-20)

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=996667&r1=996666&r2=996667&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 Sep 13 19:52:13 2010
@@ -24,6 +24,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
 import java.security.Signature;
 import java.security.SignatureException;
 import java.util.Arrays;
@@ -140,8 +141,6 @@ public class DKIMVerifier extends DKIMCo
                             "AUID in subdomain of SDID is not allowed by the 
public key record.", sign.getIdentity().toString());
                 }
             }
-        } catch (IllegalArgumentException e) {
-            throw new PermFailException("Invalid public key: "+e.getMessage(), 
sign.getIdentity().toString());
         } catch (IllegalStateException e) {
             throw new PermFailException("Invalid public key: "+e.getMessage(), 
sign.getIdentity().toString());
         }
@@ -400,7 +399,13 @@ public class DKIMVerifier extends DKIMCo
         Signature signature = Signature.getInstance(sign.getHashMethod()
                 .toString().toUpperCase()
                 + "with" + sign.getHashKeyType().toString().toUpperCase());
-        signature.initVerify(key.getPublicKey());
+        PublicKey publicKey;
+        try {
+            publicKey = key.getPublicKey();
+        } catch (IllegalStateException e) {
+            throw new PermFailException("Invalid Public Key: "+e.getMessage(), 
e);
+        }
+        signature.initVerify(publicKey);
 
         signatureCheck(h, sign, headers, signature);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to