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