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]