This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-jdkim.git

commit 7e382bb3a99cff9ab94620d025a8bd6cb635febd
Author: Emerson Pinter <e...@pinter.dev>
AuthorDate: Thu Mar 20 17:28:54 2025 -0300

    Pass SignatureRecord to PermFailException
---
 .../java/org/apache/james/jdkim/DKIMSigner.java    |  6 ++---
 .../java/org/apache/james/jdkim/DKIMVerifier.java  | 26 +++++++++++-----------
 .../apache/james/jdkim/impl/BodyHasherImpl.java    |  6 ++---
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java 
b/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
index bee8fdf..1a91c1e 100644
--- a/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
+++ b/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
@@ -121,12 +121,12 @@ public class DKIMSigner extends DKIMCommon {
 
             return "DKIM-Signature:" + bhj.getSignatureRecord().toString();
         } catch (InvalidKeyException e) {
-            throw new PermFailException("Invalid key: " + e.getMessage(), e);
+            throw new PermFailException("Invalid key: " + e.getMessage(), 
bhj.getSignatureRecord(), e);
         } catch (NoSuchAlgorithmException e) {
-            throw new PermFailException("Unknown algorythm: " + e.getMessage(),
+            throw new PermFailException("Unknown algorythm: " + 
e.getMessage(), bhj.getSignatureRecord(),
                     e);
         } catch (SignatureException e) {
-            throw new PermFailException("Signing exception: " + e.getMessage(),
+            throw new PermFailException("Signing exception: " + 
e.getMessage(), bhj.getSignatureRecord(),
                     e);
         }
     }
diff --git a/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java 
b/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
index 2648a5e..2b1966d 100644
--- a/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
+++ b/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
@@ -246,13 +246,13 @@ public class DKIMVerifier extends DKIMCommon {
                 if (pos > 0) {
                     String v = signatureField.substring(pos + 1, signatureField
                             .length());
-                    SignatureRecord signatureRecord;
+                    SignatureRecord signatureRecord = null;
                     try {
                         signatureRecord = newSignatureRecord(v);
                         // validate
                         signatureRecord.validate();
                     } catch (IllegalStateException e) {
-                        throw new PermFailException("Invalid signature record: 
" + e.getMessage(), e);
+                        throw new PermFailException("Invalid signature record: 
" + e.getMessage(), signatureRecord, e);
                     }
 
                     // Specification say we MAY refuse to verify the signature.
@@ -261,22 +261,22 @@ public class DKIMVerifier extends DKIMCommon {
                         long elapsed = (System.currentTimeMillis() / 1000 - 
signedTime);
                         if (elapsed < -3600 * 24 * 365 * 3) {
                             throw new PermFailException("Signature date is 
more than "
-                                    + -elapsed / (3600 * 24 * 365) + " years 
in the future.");
+                                    + -elapsed / (3600 * 24 * 365) + " years 
in the future.", signatureRecord);
                         } else if (elapsed < -3600 * 24 * 30 * 3) {
                             throw new PermFailException("Signature date is 
more than "
-                                    + -elapsed / (3600 * 24 * 30) + " months 
in the future.");
+                                    + -elapsed / (3600 * 24 * 30) + " months 
in the future.", signatureRecord);
                         } else if (elapsed < -3600 * 24 * 3) {
                             throw new PermFailException("Signature date is 
more than "
-                                    + -elapsed / (3600 * 24) + " days in the 
future.");
+                                    + -elapsed / (3600 * 24) + " days in the 
future.", signatureRecord);
                         } else if (elapsed < -3600 * 3) {
                             throw new PermFailException("Signature date is 
more than "
-                                    + -elapsed / 3600 + " hours in the 
future.");
+                                    + -elapsed / 3600 + " hours in the 
future.", signatureRecord);
                         } else if (elapsed < -60 * 3) {
                             throw new PermFailException("Signature date is 
more than "
-                                    + -elapsed / 60 + " minutes in the 
future.");
+                                    + -elapsed / 60 + " minutes in the 
future.", signatureRecord);
                         } else if (elapsed < 0) {
                             throw new PermFailException("Signature date is "
-                                    + elapsed + " seconds in the future.");
+                                    + elapsed + " seconds in the future.", 
signatureRecord);
                         }
                     }
 
@@ -403,7 +403,7 @@ public class DKIMVerifier extends DKIMCommon {
                         .put(
                                 "DKIM-Signature:" + 
bhj.getSignatureRecord().toString(),
                                 new PermFailException(
-                                        "Computed bodyhash is different from 
the expected one"));
+                                        "Computed bodyhash is different from 
the expected one", bhj.getSignatureRecord()));
             } else {
                 verifiedSignatures.add(bhj.getSignatureRecord());
             }
@@ -475,7 +475,7 @@ public class DKIMVerifier extends DKIMCommon {
             try {
                 publicKey = key.getPublicKey();
             } catch (IllegalStateException e) {
-                throw new PermFailException("Invalid Public Key: " + 
e.getMessage(), e);
+                throw new PermFailException("Invalid Public Key: " + 
e.getMessage(), sign, e);
             }
             signature.initVerify(publicKey);
 
@@ -484,11 +484,11 @@ public class DKIMVerifier extends DKIMCommon {
             if (!signature.verify(decoded))
                 throw new PermFailException("Header signature does not 
verify", sign);
         } catch (InvalidKeyException e) {
-            throw new PermFailException(e.getMessage(), e);
+            throw new PermFailException(e.getMessage(), sign, e);
         } catch (NoSuchAlgorithmException e) {
-            throw new PermFailException(e.getMessage(), e);
+            throw new PermFailException(e.getMessage(), sign, e);
         } catch (SignatureException e) {
-            throw new PermFailException(e.getMessage(), e);
+            throw new PermFailException(e.getMessage(), sign, e);
         }
     }
 
diff --git a/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java 
b/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java
index ef8577d..e180991 100644
--- a/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java
+++ b/main/src/main/java/org/apache/james/jdkim/impl/BodyHasherImpl.java
@@ -45,13 +45,13 @@ public class BodyHasherImpl implements BodyHasher {
             md = MessageDigest.getInstance(sign.getHashAlgo().toString());
         } catch (NoSuchAlgorithmException e) {
             throw new PermFailException("Unsupported algorythm: "
-                    + sign.getHashAlgo(), e);
+                    + sign.getHashAlgo(), sign, e);
         }
         
         try {
             sign.validate();
         } catch (IllegalStateException e) {
-            throw new PermFailException("Invalid signature template", e);
+            throw new PermFailException("Invalid signature template", sign, e);
         }
 
         int limit = sign.getBodyHashLimit();
@@ -65,7 +65,7 @@ public class BodyHasherImpl implements BodyHasher {
                         .getBodyCanonicalisationMethod())) {
             throw new PermFailException(
                     "Unsupported body canonicalization method: "
-                            + sign.getBodyCanonicalisationMethod());
+                            + sign.getBodyCanonicalisationMethod(), sign);
         }
 
         DigestOutputStream dout = new DigestOutputStream(md);


---------------------------------------------------------------------
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